
    Ng                     `   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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/m0Z0m1Z1 de2dee         fdZ3i 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>        e1e)j?        e0e)j@        ee)jA        ee)jB        ee)jC        ee)jD        ee)jE        e!e)jF        e'e)jG        eiZHee)eee*         ee         ee+         f         f         eId<   ddde)dee
         dedeee+f         fdZJddddee)         dee
         deeK         dedeeee+f                  f
d ZLdS )!z Loading datasets and evaluators.    )AnyDictListOptionalSequenceType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                     	 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     X/var/www/html/ai-engine/env/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6G((ww'((((s   	 #_EVALUATOR_MAPN)llm	evaluatorr3   kwargsc          	         | t           vr9t          d|  dt          t                                                                t           |          }t	          |t
                    r	 	 ddlm} n5# t          $ r( 	 ddl	m} n# t          $ r t          d          w xY wY nw xY w|p |dd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: 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.z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.Nr3   r(   )r2   
ValueErrorlistkeys
issubclassr   langchain_openair7   r0   &langchain_community.chat_models.openai	Exceptionfrom_llm)r4   r3   r5   evaluator_clsr7   es         r+   load_evaluatorrF   c   s   6 &&@y @ @"&~':':'<'<"="=@ @
 
 	
 #9-M-.. '	7777777 
 
 
	QQQQQQQ"   %?   RQ
  BA  CC  	 	 	5} 5 5 5  	 &}%88#8888}&&v&&&sN   'A. -B4 .
B 9B ?B  BB B4 B  B4 4
C>CC)r3   config
evaluatorsrG   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")
    r3   )getappendrF   )rH   r3   rG   r5   loadedr4   _kwargss          r+   load_evaluatorsrN      sr    B F S S	/5=&**Y+++2nYQQCQ;Pf;P;PQQRRRRMr-   )M__doc__typingr   r   r   r   r   r   r	   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_MATCHr2   __annotations__rF   dictrN   r(   r-   r+   <module>rx      sb   & & & 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 )d4j ) ) ) )Hk. 0 !#:	
  4 )+I &(C "$7 - "$< !#: *,K $&@ -/Q !6  !6!" $&?#$ (*=88)  5l+T%[$:OOPP   : (,>' >' >'>' 
#	$>' 	>'
 5/!">' >' >' >'H (,!	% % %'% 
#	$% TN	%
 % 
%&
'(% % % % % %r-   