
    m
in                     (   U d 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 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)m*Z* ddl+m,Z,m-Z- de.de/e0         fdZ1i e%j2        e!e%j3        e e%j4        ee%j5        ee%j6        e*e%j7        ee%j8        e)e%j9        e
e%j:        ee%j;        ee%j<        e-e%j=        e,e%j>        ee%j?        ee%j@        ee%jA        ee%jB        ee%jC        ee%jD        e#e%jE        eiZFe0e%eGe&         eGe         z  eGe'         z  f         eHd<   ddde%dedz  dedee'z  fdZIddddee%         dedz  d e0dz  dede/ee'z           f
d!ZJdS )"z Loading datasets and evaluators.    )Sequence)Any)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}d}t          |          |d}~ww xY w |d|            }t          |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**

    ```bash
    pip install datasets
    ```

    Examples:
    --------
    ```python
    from langchain_classic.evaluation import load_dataset

    ds = load_dataset("llm-math")
    ```
    r   )load_datasetzXload_dataset requires the `datasets` package. Please install with `pip install datasets`NzLangChainDatasets/train)datasetsr!   ImportErrorlist)r   r!   emsgdatasets        C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/evaluation/loading.pyr!   r!   4   s    .&))))))) & & &: 	 #A%& l55566G !!!s   	 
*%*_EVALUATOR_MAPN)llm	evaluatorr+   kwargsc                   | t           vr;d|  dt          t                                                      }t          |          t           |          }t	          |t
                    r	 	 ddlm} n<# t          $ r/ 	 ddl	m} n$# t          $ r}d}t          |          |d}~ww xY wY nw xY w|p |ddd	          }n(# t          $ r}d
| d}t          |          |d}~ww xY w |j        dd|i|S  |di |S )aF  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_classic.evaluation import load_evaluator, EvaluatorType
    >>> evaluator = load_evaluator(EvaluatorType.QA)
    zUnknown evaluator type: z
Valid types are: r   )
ChatOpenAIzCould not import langchain_openai or fallback onto langchain_community. Please install langchain_openai or specify a language model explicitly. It's recommended to install langchain_openai AND specify a language model explicitly.Nzgpt-4*   )modelseed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.r+    )r*   r%   keys
ValueError
issubclassr   langchain_openair/   r$   &langchain_community.chat_models.openai	Exceptionfrom_llm)r,   r+   r-   r'   evaluator_clsr/   r&   s          r)   load_evaluatorr=   s   s   6 &&@y @ @"&~':':'<'<"="=@ @ 	 oo"9-M-.. 9	)27777777 2 2 22       # 2 2 2?  &c**12 2 J'JJJCC 	) 	) 	)5} 5 5 5  S//q(	) &}%88#8888=""6"""sZ   )A0 /B= 0
B);BB)
B#BB##B)&B= (B))B= =
C"CC")r+   config
evaluatorsr>   c          	          g }| D ]B}|r|                     |i           ni }|                    t          |fd|ii ||           C|S )ao  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_classic.evaluation import load_evaluators, EvaluatorType
    >>> evaluators = [EvaluatorType.QA, EvaluatorType.CRITERIA]
    >>> loaded_evaluators = load_evaluators(evaluators, criteria="helpfulness")
    r+   )getappendr=   )r?   r+   r>   r-   loadedr,   _kwargss          r)   load_evaluatorsrE      sr    B F S S	/5=&**Y+++2nYQQCQ;Pf;P;PQQRRRRM    )K__doc__collections.abcr   typingr   langchain_core.language_modelsr   langchain_classic.chains.baser   9langchain_classic.evaluation.agents.trajectory_eval_chainr   'langchain_classic.evaluation.comparisonr   2langchain_classic.evaluation.comparison.eval_chainr	   0langchain_classic.evaluation.criteria.eval_chainr
   r   4langchain_classic.evaluation.embedding_distance.baser   r   -langchain_classic.evaluation.exact_match.baser   )langchain_classic.evaluation.parsing.baser   r   2langchain_classic.evaluation.parsing.json_distancer   0langchain_classic.evaluation.parsing.json_schemar   langchain_classic.evaluation.qar   r   r   -langchain_classic.evaluation.regex_match.baser   #langchain_classic.evaluation.schemar   r   r   /langchain_classic.evaluation.scoring.eval_chainr   r   1langchain_classic.evaluation.string_distance.baser   r   strr%   dictr!   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_MATCHr*   type__annotations__r=   rE   r4   rF   r)   <module>rr      s   & & & $ $ $ $ $ $       < < < < < < / / / / / /      L K K K K K                    T S S S S S        Y X X X X X P P P P P P         
 T S S S S S         
              !"c !"d4j !" !" !" !"Nk. 0 !#:	
  4 )+I &(C "$7 - "$< !#: *,K $&@ -/Q !6  !6!" $&?#$ (*=88)  e$tO'<<>   < %)@# @# @#@# 
T	!@# 	@#
 _@# @# @# @#L %)	% % %'% 
T	!% 4K	%
 % 
%/
!"% % % % % %rF   