Ë
    µŒjî  ã                   ón   — d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZ  G d„ de	«      Zy)é    N)ÚAnyÚDictÚListÚOptionalÚUnion)ÚBaseCallbackHandler)ÚAgentActionÚAgentFinish)Ú	LLMResultc                   óÔ  ‡ — e Zd ZU dZdZeed<   e› d�Zeed<   dZeed<   	 d)d	e	e
   d
ee   ddfˆ fd„Zdeee
f   de	e   de
ddfd„Zdede
ddfd„Zdede
ddfd„Zdede
ddfd„Zdeee
f   deee
f   de
ddfd„Zdeee
f   de
ddfd„Zdede
ddfd„Zdeee
f   dede
ddfd„Zdede
de
fd„Z	 	 d*d e
d!ee   d"ee   de
ddf
d#„Zdede
ddfd$„Zd%ede
ddfd&„Zd'ede
ddfd(„Zˆ xZS )+ÚDeepEvalCallbackHandlera   Callback Handler that logs into deepeval.

    Args:
        implementation_name: name of the `implementation` in deepeval
        metrics: A list of metrics

    Raises:
        ImportError: if the `deepeval` package is not installed.

    Examples:
        >>> from langchain_community.llms import OpenAI
        >>> from langchain_community.callbacks import DeepEvalCallbackHandler
        >>> from deepeval.metrics import AnswerRelevancy
        >>> metric = AnswerRelevancy(minimum_score=0.3)
        >>> deepeval_callback = DeepEvalCallbackHandler(
        ...     implementation_name="exampleImplementation",
        ...     metrics=[metric],
        ... )
        >>> llm = OpenAI(
        ...     temperature=0,
        ...     callbacks=[deepeval_callback],
        ...     verbose=True,
        ...     openai_api_key="API_KEY_HERE",
        ... )
        >>> llm.generate([
        ...     "What is the best evaluation tool out there? (no bias at all)",
        ... ])
        "Deepeval, no doubt about it."
    z(https://github.com/confident-ai/deepevalÚREPO_URLz/issuesÚ
ISSUES_URLzhttps://docs.confident-ai.comÚBLOG_URLNÚmetricsÚimplementation_nameÚreturnc                 ó&  •— t         ‰| �  «        	 ddl}t        j
                  j                  d«      rt        j                  d«       || _	        || _
        t        j                  d| j                  › d�«       y# t        $ r t        d«      ‚w xY w)aX  Initializes the `deepevalCallbackHandler`.

        Args:
            implementation_name: Name of the implementation you want.
            metrics: What metrics do you want to track?

        Raises:
            ImportError: if the `deepeval` package is not installed.
            ConnectionError: if the connection to deepeval fails.
        r   Nz®To use the deepeval callback manager you need to have the 
                `deepeval` Python package installed. Please install it with 
                `pip install deepeval`z	.deepevalznYou are currently not logging anything to the dashboard, we 
                recommend using `deepeval login`.z‰The `DeepEvalCallbackHandler` is currently in beta and is subject to change based on updates to `langchain`. Please report any issues to z as an `integration` issue.)ÚsuperÚ__init__ÚdeepevalÚImportErrorÚosÚpathÚexistsÚwarningsÚwarnr   r   r   )Úselfr   r   r   Ú	__class__s       €úz/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/callbacks/confident_callback.pyr   z DeepEvalCallbackHandler.__init__.   s“   ø€ ô  	‰ÑÔð	Ûô �7‰7�>‰>˜+Ô&Ü�M‰Mð5ôð $7ˆÔ ØˆŒä�‰ðà—O‘OÐ$Ð$?ðAõ	
øô# ò 	Üð*óð ð	ús   ‘A; Á;BÚ
serializedÚpromptsÚkwargsc                 ó   — || _         y)zStore the promptsN)r"   )r   r!   r"   r#   s       r    Úon_llm_startz$DeepEvalCallbackHandler.on_llm_start\   s   € ð ˆ�ó    Útokenc                  ó   — y)z)Do nothing when a new token is generated.N© )r   r'   r#   s      r    Úon_llm_new_tokenz(DeepEvalCallbackHandler.on_llm_new_tokenb   ó   € àr&   Úresponsec                 ó  — ddl m} ddlm} ddlm} ddlm} | j                  D ]Û  }t        |j                  «      D ]Á  \  }}	|	d   j                  }
| j                  |   }t        ||«      r"|j                  |
|¬«      }t        d|› �«       ŒRt        ||«      r |j                  |
«      }t        d|› �«       Œ~t        ||«      r |j                  |
«      }t        d	|› �«       Œªt!        d
|j"                  › d�«      ‚ ŒÝ y)z)Log records to deepeval when an LLM ends.r   )ÚAnswerRelevancy)ÚUnBiasedMetric)ÚMetric)ÚNonToxicMetric)ÚoutputÚqueryzAnswer Relevancy: zBias Score: zToxic Score: zMetric zA is not supported by deepeval 
                        callbacks.N)Ú!deepeval.metrics.answer_relevancyr.   Ú deepeval.metrics.bias_classifierr/   Údeepeval.metrics.metricr0   Ú!deepeval.metrics.toxic_classifierr1   r   Ú	enumerateÚgenerationsÚtextr"   Ú
isinstanceÚmeasureÚprintÚ
ValueErrorÚ__name__)r   r,   r#   r.   r/   r0   r1   ÚmetricÚiÚ
generationr2   r3   ÚresultÚscores                 r    Ú
on_llm_endz"DeepEvalCallbackHandler.on_llm_endf   sø   € åEÝCÝ2ÝDà—l”lˆFÜ!*¨8×+?Ñ+?Ö!@‘��:à# A™×+Ñ+�ØŸ™ Q™�Ü˜f oÔ6Ø#Ÿ^™^Ø%Ø#ð ,ó �Fô Ð.¨v¨hÐ7Õ8Ü ¨Ô7Ø"ŸN™N¨6Ó2�EÜ˜L¨¨Ð0Õ1Ü ¨Ô7Ø"ŸN™N¨6Ó2�EÜ˜M¨%¨Ð1Õ2ä$Ø# F§O¡OÐ#4ð 5#ð &óð ñ# "Añ #r&   Úerrorc                  ó   — y)z%Do nothing when LLM outputs an error.Nr)   ©r   rF   r#   s      r    Úon_llm_errorz$DeepEvalCallbackHandler.on_llm_error„   r+   r&   Úinputsc                  ó   — y)zDo nothing when chain startsNr)   )r   r!   rJ   r#   s       r    Úon_chain_startz&DeepEvalCallbackHandler.on_chain_startˆ   s   € ð 	r&   Úoutputsc                  ó   — y)zDo nothing when chain ends.Nr)   )r   rM   r#   s      r    Úon_chain_endz$DeepEvalCallbackHandler.on_chain_endŽ   r+   r&   c                  ó   — y)z+Do nothing when LLM chain outputs an error.Nr)   rH   s      r    Úon_chain_errorz&DeepEvalCallbackHandler.on_chain_error’   r+   r&   Ú	input_strc                  ó   — y)zDo nothing when tool starts.Nr)   )r   r!   rR   r#   s       r    Úon_tool_startz%DeepEvalCallbackHandler.on_tool_start–   s   € ð 	r&   Úactionc                  ó   — y)z.Do nothing when agent takes a specific action.Nr)   )r   rU   r#   s      r    Úon_agent_actionz'DeepEvalCallbackHandler.on_agent_actionŸ   r+   r&   r2   Úobservation_prefixÚ
llm_prefixc                  ó   — y)zDo nothing when tool ends.Nr)   )r   r2   rX   rY   r#   s        r    Úon_tool_endz#DeepEvalCallbackHandler.on_tool_end£   s   € ð 	r&   c                  ó   — y)z&Do nothing when tool outputs an error.Nr)   rH   s      r    Úon_tool_errorz%DeepEvalCallbackHandler.on_tool_error­   r+   r&   r:   c                  ó   — y©z
Do nothingNr)   )r   r:   r#   s      r    Úon_textzDeepEvalCallbackHandler.on_text±   r+   r&   Úfinishc                  ó   — yr_   r)   )r   ra   r#   s      r    Úon_agent_finishz'DeepEvalCallbackHandler.on_agent_finishµ   r+   r&   )N)NN) r?   Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   r   r   r   r   r   r   r%   r*   r   rE   ÚBaseExceptionrI   rL   rO   rQ   rT   r	   rW   r[   r]   r`   r
   rc   Ú__classcell__)r   s   @r    r   r      s.  ø… ñð< ?€HˆcÓ>Ø!˜
 'Ð*€J�Ó*Ø3€HˆcÓ3ð
 .2ñ,
à�c‘ð,
ð & c™]ð,
ð 
õ	,
ð\Ø˜s C˜x™.ðØ37¸±9ðØHKðà	óð cð °Sð ¸Tó ð 9ð ¸ð Àó ð< -ð ¸3ð À4ó ðØ˜s C˜x™.ðØ26°s¸C°x±.ðØLOðà	óð D¨¨c¨¡Nð ¸cð Àdó ð Mð ¸Sð ÀTó ðà˜˜c˜‘Nðð ðð ð	ð
 
óð kð ¸Sð ÀSó ð -1Ø$(ñ	àðð % S™Mðð ˜S‘Mð	ð
 ðð 
óð =ð ¸Cð ÀDó ð˜Cð ¨3ð °4ó ð kð ¸Sð ÀT÷ r&   r   )r   r   Útypingr   r   r   r   r   Úlangchain_core.callbacksr   Úlangchain_core.agentsr	   r
   Úlangchain_core.outputsr   r   r)   r&   r    Ú<module>ro      s)   ðã 	Û ß 3Õ 3å 8ß :Ý ,ôlÐ1õ lr&   