
    Ah4                     z   S r SSKJr  SSKJrJrJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJr  SS	KJrJr  SS
KJrJrJr  SSKJr  SSKJr  SSKJ r J!r!  SSK"J#r$  \\\\   /\\\\%4   4   r&\\\   \\\      /\\\\%4   4   r' " S S\5      r( " S S\(5      r)\\&\\!4   r*\\ \+\(4   r, " S S\5      r-g)z!Configuration for run evaluators.    )Sequence)AnyCallableOptionalUnion)
Embeddings)BaseLanguageModel)BasePromptTemplate)RunEvaluator)EvaluationResultEvaluationResults)ExampleRun)	BaseModel
ConfigDictField)CRITERIA_TYPE)EmbeddingDistance)EvaluatorTypeStringEvaluator)StringDistancec                   <    \ rS rSr% Sr\\S'   S\\\	4   4S jr
Srg)
EvalConfig!   zConfiguration for a given run evaluator.

Parameters
----------
evaluator_type : EvaluatorType
    The type of evaluator to use.

Methods
-------
get_kwargs()
    Get the keyword arguments for the evaluator configuration.

evaluator_typereturnc                 >    0 nU  H  u  p#US:X  d  Uc  M  X1U'   M     U$ )zGet the keyword arguments for the load_evaluator call.

Returns
-------
Dict[str, Any]
    The keyword arguments for the load_evaluator call.

r    )selfkwargsfieldvals       Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/smith/evaluation/config.py
get_kwargsEvalConfig.get_kwargs2   s3     JE((CK5M      r   N)__name__
__module____qualname____firstlineno____doc__r   __annotations__dictstrr   r$   __static_attributes__r   r&   r#   r   r   !   s#     "!DcN r&   r   c                      ^  \ rS rSr% SrSr\\   \S'    Sr	\\   \S'    Sr
\\   \S'    S\\\4   4U 4S jjrS	rU =r$ )
SingleKeyEvalConfigC   zBConfiguration for a run evaluator that only requires a single key.Nreference_keyprediction_key	input_keyr   c                 Z   > [         TU ]  5       nS H  nUR                  US 5        M     U$ )N)r3   r4   r5   )superr$   pop)r   r    key	__class__s      r#   r$   SingleKeyEvalConfig.get_kwargsQ   s.    #%CCJJsD! Dr&   r   )r'   r(   r)   r*   r+   r3   r   r.   r,   r4   r5   r-   r   r$   r/   __classcell__r:   s   @r#   r1   r1   C   s\    L#'M8C='@$(NHSM(  $Ix}#BDcN  r&   r1   c                      \ rS rSr% Sr\" \S9r\\\	\
4      \S'    Sr\\\
      \S'    Sr\\\      \S'    Sr\\   \S'    Sr\\   \S	'    Sr\\   \S
'    Sr\\   \S'    \" SS9r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\!5      r" " S  S!\5      r# " S" S#\5      r$ " S$ S%\5      r% " S& S'\%5      r&S(r'g))RunEvalConfig]   a  Configuration for a run evaluation.

Parameters
----------
evaluators : List[Union[EvaluatorType, EvalConfig, RunEvaluator, Callable]]
    Configurations for which evaluators to apply to the dataset run.
    Each can be the string of an :class:`EvaluatorType <langchain.evaluation.schema.EvaluatorType>`, such
    as EvaluatorType.QA, the evaluator type string ("qa"), or a configuration for a
    given evaluator (e.g., :class:`RunEvalConfig.QA <langchain.smith.evaluation.config.RunEvalConfig.QA>`).

custom_evaluators : Optional[List[Union[RunEvaluator, StringEvaluator]]]
    Custom evaluators to apply to the dataset run.

reference_key : Optional[str]
    The key in the dataset run to use as the reference string.
    If not provided, it will be inferred automatically.

prediction_key : Optional[str]
    The key from the traced run's outputs dictionary to use to
    represent the prediction. If not provided, it will be inferred
    automatically.

input_key : Optional[str]
    The key from the traced run's inputs dictionary to use to represent the
    input. If not provided, it will be inferred automatically.

eval_llm : Optional[BaseLanguageModel]
    The language model to pass to any evaluators that use a language model.
)default_factory
evaluatorsNcustom_evaluatorsbatch_evaluatorsr3   r4   r5   eval_llmTarbitrary_types_allowedc                      ^  \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   \R                  r\\S'    SS\\   S\SS4U 4S	 jjjrS
rU =r$ )RunEvalConfig.Criteria   zConfiguration for a reference-free criteria evaluator.

Parameters
----------
criteria : Optional[CRITERIA_TYPE]
    The criteria to evaluate.
llm : Optional[BaseLanguageModel]
    The language model to use for the evaluation chain.

Ncriteriallmr   r    r   c                 *   > [         TU ]  " SSU0UD6  g NrK   r   r7   __init__r   rK   r    r:   s      r#   rP   RunEvalConfig.Criteria.__init__       
 G9h9&9r&   r   N)r'   r(   r)   r*   r+   rK   r   r   r,   rL   r	   r   CRITERIAr   r   rP   r/   r<   r=   s   @r#   CriteriarI      si    		 -1(=)0+/X'(/(5(>(>> 15	:}-	: 	: 		: 	:r&   rV   c                      ^  \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   \R                  r\\S'    SS\\   S\SS4U 4S	 jjjrS
rU =r$ )RunEvalConfig.LabeledCriteria   zConfiguration for a labeled (with references) criteria evaluator.

Parameters
----------
criteria : Optional[CRITERIA_TYPE]
    The criteria to evaluate.
llm : Optional[BaseLanguageModel]
    The language model to use for the evaluation chain.
NrK   rL   r   r    r   c                 *   > [         TU ]  " SSU0UD6  g rN   rO   rQ   s      r#   rP   &RunEvalConfig.LabeledCriteria.__init__   rS   r&   r   rT   )r'   r(   r)   r*   r+   rK   r   r   r,   rL   r	   r   LABELED_CRITERIAr   r   rP   r/   r<   r=   s   @r#   LabeledCriteriarX      si    	 -1(=)0+/X'(/(5(F(FF 15	:}-	: 	: 		: 	:r&   r]   c                   p    \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'   Sr\
\   \S'   \" SS9rS	rg)
RunEvalConfig.EmbeddingDistance   a  Configuration for an embedding distance evaluator.

Parameters
----------
embeddings : Optional[Embeddings]
    The embeddings to use for computing the distance.

distance_metric : Optional[EmbeddingDistanceEnum]
    The distance metric to use for computing the distance.

r   N
embeddingsdistance_metricTrF   r   )r'   r(   r)   r*   r+   r   EMBEDDING_DISTANCEr   r,   ra   r   r   rb   EmbeddingDistanceEnumr   model_configr/   r   r&   r#   r   r_      sE    
	 )6(H(HH+/
HZ(/;?"78?!$(
r&   r   c                   `    \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'    Sr\\S'   Srg)	RunEvalConfig.StringDistance   zConfiguration for a string distance evaluator.

Parameters
----------
distance : Optional[StringDistanceEnum]
    The string distance metric to use.

r   NdistanceTnormalize_scorer   )r'   r(   r)   r*   r+   r   STRING_DISTANCEr   r,   ri   r   StringDistanceEnumrj   boolr/   r   r&   r#   r   rg      s@    	 )6(E(EE15(-.5	 !%$	Nr&   r   c                   d    \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'   Sr\
\   \S'   Srg)RunEvalConfig.QA   zConfiguration for a QA evaluator.

Parameters
----------
prompt : Optional[BasePromptTemplate]
    The prompt template to use for generating the question.
llm : Optional[BaseLanguageModel]
    The language model to use for the evaluation chain.
r   NrL   promptr   )r'   r(   r)   r*   r+   r   QAr   r,   rL   r   r	   rq   r
   r/   r   r&   r#   rr   ro      s9    	 )6(8(88+/X'(//3+,3r&   rr   c                   d    \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'   Sr\
\   \S'   Srg)RunEvalConfig.ContextQAi
    Configuration for a context-based QA evaluator.

Parameters
----------
prompt : Optional[BasePromptTemplate]
    The prompt template to use for generating the question.
llm : Optional[BaseLanguageModel]
    The language model to use for the evaluation chain.

r   NrL   rq   r   r'   r(   r)   r*   r+   r   
CONTEXT_QAr   r,   rL   r   r	   rq   r
   r/   r   r&   r#   	ContextQArt   
  9    		 )6(@(@@+/X'(//3+,3r&   rx   c                   d    \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'   Sr\
\   \S'   Srg)RunEvalConfig.CoTQAi  ru   r   NrL   rq   r   rv   r   r&   r#   CoTQAr{     ry   r&   r|   c                   <    \ rS rSr% Sr\R                  r\\S'   Sr	g)RunEvalConfig.JsonValidityi*  zDConfiguration for a json validity evaluator.

Parameters
----------
r   r   N)
r'   r(   r)   r*   r+   r   JSON_VALIDITYr   r,   r/   r   r&   r#   JsonValidityr~   *      	 )6(C(CCr&   r   c                   <    \ rS rSr% Sr\R                  r\\S'   Sr	g)#RunEvalConfig.JsonEqualityEvaluatori3  zDConfiguration for a json equality evaluator.

Parameters
----------
r   r   N)
r'   r(   r)   r*   r+   r   JSON_EQUALITYr   r,   r/   r   r&   r#   JsonEqualityEvaluatorr   3  r   r&   r   c                   f    \ rS rSr% Sr\R                  r\\S'   Sr	\
\S'   Sr\
\S'   Sr\
\S'   Srg	)
RunEvalConfig.ExactMatchi<  a0  Configuration for an exact match string evaluator.

Parameters
----------
ignore_case : bool
    Whether to ignore case when comparing strings.
ignore_punctuation : bool
    Whether to ignore punctuation when comparing strings.
ignore_numbers : bool
    Whether to ignore numbers when comparing strings.
r   Fignore_caseignore_punctuationignore_numbersr   N)r'   r(   r)   r*   r+   r   EXACT_MATCHr   r,   r   rm   r   r   r/   r   r&   r#   
ExactMatchr   <  s8    
	 )6(A(AA!T!#(D($$r&   r   c                   J    \ rS rSr% Sr\R                  r\\S'   Sr	\
\S'   Srg)RunEvalConfig.RegexMatchiN  zConfiguration for a regex match string evaluator.

Parameters
----------
flags : int
    The flags to pass to the regex. Example: re.IGNORECASE.
r   r   flagsr   N)r'   r(   r)   r*   r+   r   REGEX_MATCHr   r,   r   intr/   r   r&   r#   
RegexMatchr   N  s"    	 )6(A(AAsr&   r   c            	          ^  \ rS rSr% Sr\R                  r\\S'   Sr	\
\   \S'   Sr\
\   \S'   Sr\
\   \S'   Sr\
\   \S'     SS\
\   S\
\   S	\S
S4U 4S jjjrSrU =r$ )RunEvalConfig.ScoreStringiZ  aj  Configuration for a score string evaluator.
This is like the criteria evaluator but it is configured by
default to return a score on the scale from 1-10.

It is recommended to normalize these scores
by setting `normalize_by` to 10.

Parameters
----------
criteria : Optional[CRITERIA_TYPE]
    The criteria to evaluate.
llm : Optional[BaseLanguageModel]
    The language model to use for the evaluation chain.
normalize_by: Optional[int] = None
    If you want to normalize the score, the denominator to use.
    If not provided, the score will be between 1 and 10 (by default).
prompt : Optional[BasePromptTemplate]

r   NrK   rL   normalize_byrq   r    r   c                 *   > [         TU ]  " SXS.UD6  g )N)rK   r   r   rO   )r   rK   r   r    r:   s       r#   rP   "RunEvalConfig.ScoreString.__init__u  s     GThTVTr&   r   )NN)r'   r(   r)   r*   r+   r   SCORE_STRINGr   r,   rK   r   r   rL   r	   r   floatrq   r
   r   rP   r/   r<   r=   s   @r#   ScoreStringr   Z  s    	( )6(B(BB,0(=)0+/X'(/(,huo,/3+,3 15,0	U}-	U #5/	U 		U
 	U 	Ur&   r   c                   8    \ rS rSr% \R
                  r\\S'   Srg) RunEvalConfig.LabeledScoreStringi}  r   r   N)	r'   r(   r)   r*   r   LABELED_SCORE_STRINGr   r,   r/   r   r&   r#   LabeledScoreStringr   }  s    (5(J(JJr&   r   r   )(r'   r(   r)   r*   r+   r   listrB   r   SINGLE_EVAL_CONFIG_TYPECUSTOM_EVALUATOR_TYPEr,   rC   r   rD   BATCH_EVALUATOR_LIKEr3   r.   r4   r5   rE   r	   r   re   r1   rV   r]   r   r   rr   rx   r|   r   r   r   r   r   r   r   r/   r   r&   r#   r?   r?   ]   s   F 	d# #!#	
 $X @Dx%: ;<C8=Aht$89:A $(M8C='@$(NHSM(  $Ix}#B,0Hh()0H $L:& :.:- :,
/ 
*N, N,4  44' 4 4# 4 D* DD
 D%( %$
( 
!U) !UFK[ Kr&   r?   N).r+   collections.abcr   typingr   r   r   r   langchain_core.embeddingsr   langchain_core.language_modelsr	   langchain_core.promptsr
   	langsmithr   langsmith.evaluation.evaluatorr   r   langsmith.schemasr   r   pydanticr   r   r   (langchain.evaluation.criteria.eval_chainr   ,langchain.evaluation.embedding_distance.baser   rd   langchain.evaluation.schemar   r   )langchain.evaluation.string_distance.baser   rl   r-   RUN_EVALUATOR_LIKEr   r   r1   r   r.   r   r?   r   r&   r#   <module>r      s    ' $ 1 1 0 < 5 " N * 1 1 B G (7
	
-t
346   c]HXg./0	
-t
346  D* , 0,OP sJ >? aKI aKr&   