§
    šŠtjî  ã                   óv   — 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dS )é    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                 óJ  •— t          ¦   «                              ¦   «          	 ddl}n# t          $ r t          d¦  «        ‚w xY wt          j                             d¦  «        rt          j        d¦  «         || _	        || _
        t          j        d| j        › d�¦  «         dS )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       €ún/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/callbacks/confident_callback.pyr   z DeepEvalCallbackHandler.__init__.   sÚ   ø€ õ  	‰Œ×ÒÑÔÐð	ØˆOˆOˆOˆOøÝð 	ð 	ð 	Ýð*ñô ð ð	øøøõ Œ7�>Š>˜+Ñ&Ô&ð 	ÝŒMð5ñô ð ð $7ˆÔ ØˆŒåŒðAà”OðAð Að Añ	
ô 	
ð 	
ð 	
ð 	
s	   £( ¨AÚ
serializedÚpromptsÚkwargsc                 ó   — || _         dS )zStore the promptsN)r"   )r   r!   r"   r#   s       r    Úon_llm_startz$DeepEvalCallbackHandler.on_llm_start\   s   € ð ˆŒˆˆó    Útokenc                 ó   — dS )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                 ó4  — 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*|                     |
|¬¦  «        }t          d|› �¦  «         ŒYt          ||¦  «        r(|                     |
¦  «        }t          d|› �¦  «         Œ‘t          ||¦  «        r(|                     |
¦  «        }t          d	|› �¦  «         ŒÉt!          d
|j        › d�¦  «        ‚ŒødS )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ÐEÐEÐEÐEÐEØCÐCÐCÐCÐCÐCØ2Ð2Ð2Ð2Ð2Ð2ØDÐDÐDÐDÐDÐDà”lð 	ð 	ˆFÝ!*¨8Ô+?Ñ!@Ô!@ð ð ‘��:à# AœÔ+�Øœ Qœ�Ý˜f oÑ6Ô6ð Ø#Ÿ^š^Ø%Ø#ð ,ñ ô �Fõ Ð7¨vÐ7Ð7Ñ8Ô8Ð8Ð8Ý ¨Ñ7Ô7ð 
Ø"ŸNšN¨6Ñ2Ô2�EÝÐ0¨Ð0Ð0Ñ1Ô1Ð1Ð1Ý ¨Ñ7Ô7ð Ø"ŸNšN¨6Ñ2Ô2�EÝÐ1¨%Ð1Ð1Ñ2Ô2Ð2Ð2å$ð& F¤Oð &ð &ð &ñô ð ð#ð	ð 	r&   Úerrorc                 ó   — dS )z%Do nothing when LLM outputs an error.Nr)   ©r   rF   r#   s      r    Úon_llm_errorz$DeepEvalCallbackHandler.on_llm_error„   r+   r&   Úinputsc                 ó   — dS )zDo nothing when chain startsNr)   )r   r!   rJ   r#   s       r    Úon_chain_startz&DeepEvalCallbackHandler.on_chain_startˆ   s	   € ð 	ˆr&   Úoutputsc                 ó   — dS )zDo nothing when chain ends.Nr)   )r   rM   r#   s      r    Úon_chain_endz$DeepEvalCallbackHandler.on_chain_endŽ   r+   r&   c                 ó   — dS )z+Do nothing when LLM chain outputs an error.Nr)   rH   s      r    Úon_chain_errorz&DeepEvalCallbackHandler.on_chain_error’   r+   r&   Ú	input_strc                 ó   — dS )zDo nothing when tool starts.Nr)   )r   r!   rR   r#   s       r    Úon_tool_startz%DeepEvalCallbackHandler.on_tool_start–   s	   € ð 	ˆr&   Úactionc                 ó   — dS )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                 ó   — dS )zDo nothing when tool ends.Nr)   )r   r2   rX   rY   r#   s        r    Úon_tool_endz#DeepEvalCallbackHandler.on_tool_end£   s	   € ð 	ˆr&   c                 ó   — dS )z&Do nothing when tool outputs an error.Nr)   rH   s      r    Úon_tool_errorz%DeepEvalCallbackHandler.on_tool_error­   r+   r&   r:   c                 ó   — dS ©z
Do nothingNr)   )r   r:   r#   s      r    Úon_textzDeepEvalCallbackHandler.on_text±   r+   r&   Úfinishc                 ó   — dS 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      sK  ø€ € € € € € ðð ð< ?€HˆcÐ>Ð>Ñ>Ø!Ð*Ð*Ð*€J�Ð*Ð*Ñ*Ø3€HˆcÐ3Ð3Ñ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Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðlð lð lð lð lÐ1ñ lô lð lð lð lr&   