o
    `+ i                     @   sV  U d 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
 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e0de1e2 fddZ3i e'j4e#e'j5e"e'j6e!e'j7ee'j8e,e'j9ee'j:e+e'j;ee'j<ee'j=ee'j>e/e'j?e.e'j@ee'jAee'jBee'jCee'jDee'jEee'jFe%e'jGeiZHe2e'eeIe( eIe
 eIe) f f eJd< ddde'dee dedee
e)f fddZKddd d!ee' dee d"ee2 dede1ee
e)f  f
d#d$ZLdS )%z Loading datasets and evaluators.    )Sequence)AnyOptionalUnion)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              
   C   sR   zddl m} W n ty } zd}t||d}~w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**

    .. 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`NzLangChainDatasets/train)Zdatasetsr!   ImportErrorlist)r   r!   emsgZdataset r'   h/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/langchain/evaluation/loading.pyr!   (   s   
r!   _EVALUATOR_MAPN)llm	evaluatorr*   kwargsc                K   s   | t vrd|  dtt   }t|t |  }t|trxz9zddlm} W n% tyK   zddl	m} W n tyH } zd}t||d}~ww Y nw |pT|dddd	}W n t
ym } zd
| d}t||d}~w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: 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seedZ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)   r$   keys
ValueError
issubclassr   Zlangchain_openair-   r#   Z&langchain_community.chat_models.openai	ExceptionZfrom_llm)r+   r*   r,   r&   Zevaluator_clsr-   r%   r'   r'   r(   load_evaluatorf   s>   




	r5   )r*   config
evaluatorsr6   c                K   sH   g }| D ]}|r| |i ni }|t|fd|ii || q|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")
    r*   )getappendr5   )r7   r*   r6   r,   Zloadedr+   _kwargsr'   r'   r(   load_evaluators   s
   !$r;   )M__doc__collections.abcr   typingr   r   r   Zlangchain_core.language_modelsr   Zlangchain.chains.baser   Z1langchain.evaluation.agents.trajectory_eval_chainr   Zlangchain.evaluation.comparisonr	   Z*langchain.evaluation.comparison.eval_chainr
   Z(langchain.evaluation.criteria.eval_chainr   r   Z,langchain.evaluation.embedding_distance.baser   r   Z%langchain.evaluation.exact_match.baser   Z!langchain.evaluation.parsing.baser   r   Z*langchain.evaluation.parsing.json_distancer   Z(langchain.evaluation.parsing.json_schemar   Zlangchain.evaluation.qar   r   r   Z%langchain.evaluation.regex_match.baser   Zlangchain.evaluation.schemar   r   r   Z'langchain.evaluation.scoring.eval_chainr   r   Z)langchain.evaluation.string_distance.baser   r   strr$   dictr!   ZQAZCOT_QAZ
CONTEXT_QAZPAIRWISE_STRINGZSCORE_STRINGZLABELED_PAIRWISE_STRINGZLABELED_SCORE_STRINGZAGENT_TRAJECTORYZCRITERIAZLABELED_CRITERIAZSTRING_DISTANCEZPAIRWISE_STRING_DISTANCEZEMBEDDING_DISTANCEZPAIRWISE_EMBEDDING_DISTANCEZJSON_VALIDITYZJSON_EQUALITYZJSON_EDIT_DISTANCEZJSON_SCHEMA_VALIDATIONZREGEX_MATCHZEXACT_MATCHr)   type__annotations__r5   r;   r'   r'   r'   r(   <module>   s    &	


F