§
    è˜ºh%  ã                   ól  — U d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3 de4dee         fd„Z5i e+j6        e'“e+j7        e&“e+j8        e%“e+j9        e“e+j:        e0“e+j;        e“e+j<        e/“e+j=        e“e+j>        e“e+j?        e“e+j@        e3“e+jA        e2“e+jB        e“e+jC        e“e+jD        e“e+jE        e“e+jF        e!“e+jG        e#e+jH        e)e+jI        ei¥ZJee+eee,         ee         ee-         f         f         eKd<   ddœde+dee         dedeee-f         fd„ZLdddœdee+         dee         d eeM         dedeeee-f                  f
d!„ZNdS )"z Loading datasets and evaluators.é    )ÚAnyÚDictÚListÚOptionalÚSequenceÚTypeÚUnion)Ú
ChatOpenAI)ÚBaseLanguageModel)ÚChain)ÚTrajectoryEvalChain)ÚPairwiseStringEvalChain)ÚLabeledPairwiseStringEvalChain)ÚCriteriaEvalChainÚLabeledCriteriaEvalChain)ÚEmbeddingDistanceEvalChainÚ"PairwiseEmbeddingDistanceEvalChain)ÚExactMatchStringEvaluator)ÚJsonEqualityEvaluatorÚJsonValidityEvaluator)ÚJsonEditDistanceEvaluator)ÚJsonSchemaEvaluator)ÚContextQAEvalChainÚCotQAEvalChainÚQAEvalChain)ÚRegexMatchStringEvaluator)ÚEvaluatorTypeÚLLMEvalChainÚStringEvaluator)ÚLabeledScoreStringEvalChainÚScoreStringEvalChain)ÚPairwiseStringDistanceEvalChainÚStringDistanceEvalChainÚuriÚreturnc                 óŒ   — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w |d| › �¦  «        }d„ |d         D ¦   «         S )aÝ  Load a dataset from the `LangChainDatasets on HuggingFace <https://huggingface.co/LangChainDatasets>`_.

    Args:
        uri: The uri of the dataset to load.

    Returns:
        A list of dictionaries, each representing a row in the dataset.

    **Prerequisites**

    .. code-block:: shell

        pip install datasets

    Examples
    --------
    .. code-block:: python

        from langchain.evaluation import load_dataset
        ds = load_dataset("llm-math")
    r   )Úload_datasetzXload_dataset requires the `datasets` package. Please install with `pip install datasets`zLangChainDatasets/c                 ó   — g | ]}|‘ŒS © r)   )Ú.0Úds     úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/evaluation/loading.pyú
<listcomp>z load_dataset.<locals>.<listcomp>F   s   € Ð(Ð(Ð(�!ˆAÐ(Ð(Ð(ó    Útrain)Údatasetsr'   ÚImportError)r$   r'   Údatasets      r,   r'   r'   '   s�   € ð,
Ø)Ð)Ð)Ð)Ð)Ð)Ð)øÝð 
ð 
ð 
Ýð:ñ
ô 
ð 	
ð
øøøð ˆlÐ5°Ð5Ð5Ñ6Ô6€GØ(Ð(�w˜wÔ'Ð(Ñ(Ô(Ð(s   ‚	 ‰#Ú_EVALUATOR_MAPN)ÚllmÚ	evaluatorr4   Úkwargsc          	      ót  — | t           vr9t          d| › dt          t                                ¦   «         ¦  «        › �¦  «        ‚t           |          }t	          |t
          ¦  «        rM	 |pt          dddid¬¦  «        }n&# t          $ r}t          d|› d	�¦  «        |‚d
}~ww xY w |j        dd|i|¤ŽS  |di |¤ŽS )a<  Load the requested evaluation chain specified by a string.

    Parameters
    ----------
    evaluator : EvaluatorType
        The type of evaluator to load.
    llm : BaseLanguageModel, optional
        The language model to use for evaluation, by default None
    **kwargs : Any
        Additional keyword arguments to pass to the evaluator.

    Returns
    -------
    Chain
        The loaded evaluation chain.

    Examples
    --------
    >>> from langchain.evaluation import load_evaluator, EvaluatorType
    >>> evaluator = load_evaluator(EvaluatorType.QA)
    zUnknown evaluator type: z
Valid types are: zgpt-4Úseedé*   r   )ÚmodelÚmodel_kwargsÚtemperaturezEvaluation with the zŸ requires a language model to function. Failed to create the default 'gpt-4' model. Please manually provide an evaluation LLM or check your openai credentials.Nr4   r)   )	r3   Ú
ValueErrorÚlistÚkeysÚ
issubclassr   r
   Ú	ExceptionÚfrom_llm)r5   r4   r6   Úevaluator_clsÚes        r,   Úload_evaluatorrE   c   s'  € ð6 �Ð&Ð&Ýð@ yð @ð @Ý"&¥~×':Ò':Ñ'<Ô'<Ñ"=Ô"=ð@ð @ñ
ô 
ð 	
õ # 9Ô-€MÝ�-¥Ñ.Ô.ð 'ð	Øð �Ø¨V°R¨LÀaðñ ô ˆCˆCøõ ð 	ð 	ð 	Ýð5 }ð 5ð 5ð 5ñô ð ðøøøøð	øøøð &ˆ}Ô%Ð8Ð8¨#Ð8°Ð8Ð8Ð8àˆ}Ð&Ð&˜vÐ&Ð&Ð&s   Á&A= Á=
B ÂBÂB )r4   ÚconfigÚ
evaluatorsrF   c          	      ó”   — g }| D ]B}|r|                      |i ¦  «        ni }|                     t          |fd|ii |¥|¥¤Ž¦  «         ŒC|S )ae  Load evaluators specified by a list of evaluator types.

    Parameters
    ----------
    evaluators : Sequence[EvaluatorType]
        The list of evaluator types to load.
    llm : BaseLanguageModel, optional
        The language model to use for evaluation, if none is provided, a default
        ChatOpenAI gpt-4 model will be used.
    config : dict, optional
        A dictionary mapping evaluator types to additional keyword arguments,
        by default None
    **kwargs : Any
        Additional keyword arguments to pass to all evaluators.

    Returns
    -------
    List[Chain]
        The loaded evaluators.

    Examples
    --------
    >>> from langchain.evaluation import load_evaluators, EvaluatorType
    >>> evaluators = [EvaluatorType.QA, EvaluatorType.CRITERIA]
    >>> loaded_evaluators = load_evaluators(evaluators, criteria="helpfulness")
    r4   )ÚgetÚappendrE   )rG   r4   rF   r6   Úloadedr5   Ú_kwargss          r,   Úload_evaluatorsrM   –   sr   € ðB €FØð Sð Sˆ	Ø/5Ð=�&—*’*˜Y¨Ñ+Ô+Ð+¸2ˆØ�Š•n YÐQÐQ°CÐQÐ;P¸fÐ;PÈÐ;PÐQÐQÑRÔRÐRÐRØ€Mr.   )OÚ__doc__Útypingr   r   r   r   r   r   r	   Ú&langchain_community.chat_models.openair
   Úlangchain_core.language_modelsr   Úlangchain.chains.baser   Ú1langchain.evaluation.agents.trajectory_eval_chainr   Úlangchain.evaluation.comparisonr   Ú*langchain.evaluation.comparison.eval_chainr   Ú(langchain.evaluation.criteria.eval_chainr   r   Ú,langchain.evaluation.embedding_distance.baser   r   Ú%langchain.evaluation.exact_match.baser   Ú!langchain.evaluation.parsing.baser   r   Ú*langchain.evaluation.parsing.json_distancer   Ú(langchain.evaluation.parsing.json_schemar   Úlangchain.evaluation.qar   r   r   Ú%langchain.evaluation.regex_match.baser   Úlangchain.evaluation.schemar   r   r   Ú'langchain.evaluation.scoring.eval_chainr    r!   Ú)langchain.evaluation.string_distance.baser"   r#   Ústrr'   ÚQAÚCOT_QAÚ
CONTEXT_QAÚPAIRWISE_STRINGÚSCORE_STRINGÚLABELED_PAIRWISE_STRINGÚLABELED_SCORE_STRINGÚAGENT_TRAJECTORYÚCRITERIAÚLABELED_CRITERIAÚSTRING_DISTANCEÚPAIRWISE_STRING_DISTANCEÚEMBEDDING_DISTANCEÚPAIRWISE_EMBEDDING_DISTANCEÚJSON_VALIDITYÚJSON_EQUALITYÚJSON_EDIT_DISTANCEÚJSON_SCHEMA_VALIDATIONÚREGEX_MATCHÚEXACT_MATCHr3   Ú__annotations__rE   ÚdictrM   r)   r.   r,   ú<module>rx      st  ðØ &Ð &Ð &Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cà =Ð =Ð =Ð =Ð =Ð =Ø <Ð <Ð <Ð <Ð <Ð <à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø QÐ QÐ QÐ QÐ QÐ QØ CÐ CÐ CÐ CÐ CÐ CØ UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð LÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð QÐ PÐ PÐ PÐ PÐ PØ HÐ HÐ HÐ HÐ HÐ HØ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ KÐ KÐ KÐ KÐ KÐ KØ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð)�cð )˜d 4œjð )ð )ð )ð )ðHØÔ�kðàÔ˜.ðð ÔÐ0ðð Ô!Ð#:ð	ð
 ÔÐ 4ðð Ô)Ð+Iðð Ô&Ð(Cðð Ô"Ð$7ðð ÔÐ-ðð Ô"Ð$<ðð Ô!Ð#:ðð Ô*Ð,Kðð Ô$Ð&@ðð Ô-Ð/Qðð ÔÐ!6ðð  ÔÐ!6ð!ð" Ô$Ð&?ð#ð$ Ô(Ð*=ØÔÐ8ØÔÐ8ð)ð ð �Ø�5˜˜lÔ+¨T°%¬[¸$¸Ô:OÐOÔPÐPôð ð ñ ð: (,ð0'ð 0'ð 0'Øð0'ð 
Ð#Ô	$ð0'ð ð	0'ð
 ˆ5�/Ð!Ô"ð0'ð 0'ð 0'ð 0'ðl (,Ø!ð	%ð %ð %Ø˜Ô'ð%ð 
Ð#Ô	$ð%ð �TŒNð	%ð
 ð%ð 
ˆ%��Ð&Ô
'Ô(ð%ð %ð %ð %ð %ð %r.   