§
    šŠtj±Y  ã                   ó   — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	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Zd d	lmZmZmZmZmZ d
Zdefd„Z	 dde
e         de
e         defd„Z dede!fd„Z"dede!fd„Z# G d„ dee¦  «        Z$dS )é    N)Údeepcopy)ÚPath)ÚAnyÚCallableÚDictÚListÚOptionalÚSequence)ÚAgentActionÚAgentFinish)ÚBaseCallbackHandler)Ú
GenerationÚ	LLMResult©Úguard_import)ÚBaseMetadataCallbackHandlerÚflatten_dictÚimport_pandasÚimport_spacyÚimport_textstatzlangchain-modelÚreturnc                  ó    — t          d¦  «        S )z:Import comet_ml and raise an error if it is not installed.Úcomet_mlr   © ó    úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/callbacks/comet_ml_callback.pyÚimport_comet_mlr      s   € å˜
Ñ#Ô#Ð#r   Ú	workspaceÚproject_namec                 óP   — t          ¦   «         }|                     | |¬¦  «        }|S )N)r   r   )r   Ú
Experiment)r   r   r   Ú
experiments       r   Ú_get_experimentr#      s7   € õ Ñ Ô €Hà×$Ò$ØØ!ð %ñ ô €Jð
 Ðr   Útextc                 óæ  — t          ¦   «         }i d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d	| 	                    | ¦  «        “d
| 
                    | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “d|                     | ¦  «        “}|S )NÚflesch_reading_easeÚflesch_kincaid_gradeÚ
smog_indexÚcoleman_liau_indexÚautomated_readability_indexÚdale_chall_readability_scoreÚdifficult_wordsÚlinsear_write_formulaÚgunning_fogÚtext_standardÚfernandez_huertaÚszigriszt_pazosÚgutierrez_poliniÚcrawfordÚgulpease_indexÚosman)r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   )r$   ÚtextstatÚtext_complexity_metricss      r   Ú_fetch_text_complexity_metricsr8   )   s·  € ÝÑ Ô €HðØ˜x×;Ò;¸DÑAÔAðà × =Ò =¸dÑ CÔ Cðð 	�h×)Ò)¨$Ñ/Ô/ðð 	˜h×9Ò9¸$Ñ?Ô?ð	ð
 	& x×'KÒ'KÈDÑ'QÔ'Qðð 	'¨×(MÒ(MÈdÑ(SÔ(Sðð 	˜8×3Ò3°DÑ9Ô9ðð 	  ×!?Ò!?ÀÑ!EÔ!Eðð 	�x×+Ò+¨DÑ1Ô1ðð 	˜×/Ò/°Ñ5Ô5ðð 	˜H×5Ò5°dÑ;Ô;ðð 	˜8×3Ò3°DÑ9Ô9ðð 	˜H×5Ò5°dÑ;Ô;ðð 	�H×%Ò% dÑ+Ô+ðð 	˜(×1Ò1°$Ñ7Ô7ðð  	�—’ Ñ%Ô%ð!Ðð$ #Ð"r   Úmetricsc                 ó˜   — t          ¦   «         }|                     | ¦  «        }|                     ¦   «         }|                     ¦   «         S ©N)r   Ú	DataFrameÚdescribeÚto_dict)r9   ÚpdÚ
metrics_dfÚmetrics_summarys       r   Ú(_summarize_metrics_for_generated_outputsrB   @   s?   € Ý	‰Œ€BØ—’˜gÑ&Ô&€JØ ×)Ò)Ñ+Ô+€Oà×"Ò"Ñ$Ô$Ð$r   c                   óH  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 dBdee         dee         dee         d	ee         d
ee         deee                  dedee	         deddfˆ fd„Z
de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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dedefd+„Zd&edefd,„Z d-e!d.e"d/e"defd0„Z#	 	 	 	 	 	 	 	 	 	 	 dCd2edee         dee         dee         d	ee         d
ee         deee                  dedee	         d(ed3eddfd4„Z$d5ed6ed7e"ddfd8„Z%d2eddfd9„Z&dDd2ee         ddfd:„Z'd;ee         d7e"ddfd<„Z(d=eddfd>„Z)	 	 	 	 	 	 	 	 dEdee         dee         dee         d	ee         d
ee         deee                  dedee	         ddfd?„Z*dDd2edefd@„Z+dDd2edefdA„Z,ˆ xZ-S )FÚCometCallbackHandlera  Callback Handler that logs to Comet.

    Parameters:
        job_type (str): The type of comet_ml task such as "inference",
            "testing" or "qc"
        project_name (str): The comet_ml project name
        tags (list): Tags to add to the task
        task_name (str): Name of the comet_ml task
        visualize (bool): Whether to visualize the run.
        complexity_metrics (bool): Whether to log complexity metrics
        stream_logs (bool): Whether to stream callback actions to Comet

    This handler will utilize the associated callback method and formats
    the input of each callback function with metadata regarding the state of LLM run,
    and adds the response to the list of records for both the {method}_records and
    action. It then logs the response to Comet.
    Ú	inferenceNFTÚ	task_typer   r   ÚtagsÚnameÚvisualizationsÚcomplexity_metricsÚcustom_metricsÚstream_logsr   c
                 óÜ  •— t          ¦   «         | _        t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _	        || _
        |	| _        t          j        ¦   «         | _        t          ||¦  «        | _        | j                             dd¦  «         |r| j                             |¦  «         || _        | j        r| j                             | j        ¦  «         d}
| j        j                             |
¦  «         g | _        g | _        || _	        | j        r*t3          ¦   «         }|                     d¦  «        | _        dS d| _        dS )zInitialize callback handler.zCreated fromÚ	langchainzÌThe comet_ml callback is currently in beta and is subject to change based on updates to `langchain`. Please report any issues to https://github.com/comet-ml/issue-tracking/issues with the tag `langchain`.Úen_core_web_smN)r   r   ÚsuperÚ__init__rF   r   r   rG   rI   rJ   rK   rL   ÚtempfileÚTemporaryDirectoryÚtemp_dirr#   r"   Ú	log_otherÚadd_tagsrH   Úset_nameÚLOGGERÚwarningÚcallback_columnsÚaction_recordsr   ÚloadÚnlp)ÚselfrF   r   r   rG   rH   rI   rJ   rK   rL   rY   ÚspacyÚ	__class__s               €r   rQ   zCometCallbackHandler.__init__[   sY  ø€ õ (Ñ)Ô)ˆŒÝ‰Œ×ÒÑÔÐà"ˆŒØ"ˆŒØ(ˆÔØˆŒ	Ø,ˆÔØ"4ˆÔØ,ˆÔØ&ˆÔÝ Ô3Ñ5Ô5ˆŒå)¨)°\ÑBÔBˆŒØŒ×!Ò! .°+Ñ>Ô>Ð>Øð 	+ØŒO×$Ò$ TÑ*Ô*Ð*ØˆŒ	ØŒ9ð 	0ØŒO×$Ò$ T¤YÑ/Ô/Ð/ðð 	ð 	ŒÔ×$Ò$ WÑ-Ô-Ð-à&(ˆÔØ$&ˆÔØ"4ˆÔØÔð 	Ý ‘N”NˆEØ—z’zÐ"2Ñ3Ô3ˆDŒHˆHˆHàˆDŒHˆHˆHr   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó   — i | ]}|d “ŒS r;   r   )Ú.0Úks     r   ú
<dictcomp>z3CometCallbackHandler._init_resp.<locals>.<dictcomp>�   s   € Ð7Ð7Ð7˜A��4Ð7Ð7Ð7r   )rZ   )r^   s    r   Ú
_init_respzCometCallbackHandler._init_resp�   s   € Ø7Ð7 Ô!6Ð7Ñ7Ô7Ð7r   Ú
serializedÚpromptsÚkwargsc                 ó.  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     t          |¦  «        ¦  «         |                     |                      ¦   «         ¦  «         |D ]m}t          |¦  «        }||d<   | j         	                    |¦  «         | j
         	                    |¦  «         | j        r|                      ||| j         ¦  «         ŒndS )zRun when LLM starts.é   ÚactionÚon_llm_startrh   N)ÚstepÚ
llm_startsÚstartsrf   Úupdater   Úget_custom_callback_metar   Úon_llm_start_recordsÚappendr[   rL   Ú_log_stream)r^   rg   rh   ri   ÚmetadataÚpromptÚprompt_resps          r   rm   z!CometCallbackHandler.on_llm_start’   s  € ð 	ˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜1ÑˆŒØˆŒ�qÑˆŒà—?’?Ñ$Ô$ˆØ�Š˜ >Ð2Ñ3Ô3Ð3Ø�Š� ZÑ0Ô0Ñ1Ô1Ð1Ø�Š˜×5Ò5Ñ7Ô7Ñ8Ô8Ð8àð 	>ð 	>ˆFÝ" 8Ñ,Ô,ˆKØ%+ˆK˜	Ñ"ØÔ%×,Ò,¨[Ñ9Ô9Ð9ØÔ×&Ò& {Ñ3Ô3Ð3àÔð >Ø× Ò  ¨°4´9Ñ=Ô=Ð=øð	>ð 	>r   Útokenc                 ó   — | xj         dz  c_         | xj        dz  c_        |                      ¦   «         }|                     d|dœ¦  «         |                     |                      ¦   «         ¦  «         | j                             |¦  «         dS )z#Run when LLM generates a new token.rk   Úon_llm_new_token)rl   ry   N)rn   Úllm_streamsrf   rq   rr   r[   rt   )r^   ry   ri   Úresps       r   r{   z%CometCallbackHandler.on_llm_new_token¨   sŠ   € àˆ	Œ	�Q‰ˆ	Œ	ØÐÔ˜AÑÐÔà�ŠÑ Ô ˆØ�ŠÐ1¸EÐBÐBÑCÔCÐCØ�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4àÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   Úresponsec                 ó„  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     t          |j        pi ¦  «        ¦  «         |                     |                      ¦   «         ¦  «         g }g }t          |j	        ¦  «        D �]B\  }}t          |¦  «        D �]+\  }}	|	j
        }
t          |¦  «        }|                     t          |	                     ¦   «         ¦  «        ¦  «         |                      |
¦  «        }|r*|                     |¦  «         |                     |¦  «         |                      |	||¦  «        }|r*|                     |¦  «         |                     |¦  «         | j        r|                      |
|| j         ¦  «         | j                             |¦  «         | j                             |¦  «         �Œ-�ŒD|                      || j         ¬¦  «         |                      || j         ¬¦  «         dS )zRun when LLM ends running.rk   rl   Ú
on_llm_end)rn   N)rn   Úllm_endsÚendsrf   rq   r   Ú
llm_outputrr   Ú	enumerateÚgenerationsr$   r   ÚdictÚ_get_complexity_metricsrt   Ú_get_custom_metricsrL   ru   r[   Úon_llm_end_recordsÚ_log_text_metrics)r^   r~   ri   rv   Úoutput_complexity_metricsÚoutput_custom_metricsÚ
prompt_idxr…   Úgen_idxÚ
generationr$   Úgeneration_resprJ   rK   s                 r   r€   zCometCallbackHandler.on_llm_end³   sL  € àˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜ÑˆŒØˆ	Œ	�Q‰ˆ	Œ	à—?’?Ñ$Ô$ˆØ�Š˜ <Ð0Ñ1Ô1Ð1Ø�Š� XÔ%8Ð%>¸BÑ?Ô?Ñ@Ô@Ð@Ø�Š˜×5Ò5Ñ7Ô7Ñ8Ô8Ð8à$&Ð!Ø "Ðå'0°Ô1EÑ'FÔ'Fð 	@ñ 	@Ñ#ˆJ˜Ý'0°Ñ'=Ô'=ð @ñ @Ñ#�˜Ø!”�å"*¨8Ñ"4Ô"4�Ø×&Ò&¥|°J·O²OÑ4EÔ4EÑ'FÔ'FÑGÔGÐGà%)×%AÒ%AÀ$Ñ%GÔ%GÐ"Ø%ð ?Ø-×4Ò4Ð5GÑHÔHÐHØ#×*Ò*Ð+=Ñ>Ô>Ð>à!%×!9Ò!9Ø 
¨Gñ"ô "�ð "ð ;Ø)×0Ò0°Ñ@Ô@Ð@Ø#×*Ò*¨>Ñ:Ô:Ð:àÔ#ð @Ø×$Ò$ T¨8°T´YÑ?Ô?Ð?àÔ#×*Ò*¨?Ñ;Ô;Ð;ØÔ'×.Ò.¨Ñ?Ô?Ð?Ñ?ñ-@ð0 	×ÒÐ8¸t¼yÐÑIÔIÐIØ×ÒÐ4¸4¼9ÐÑEÔEÐEÐEÐEr   Úerrorc                 óF   — | xj         dz  c_         | xj        dz  c_        dS )zRun when LLM errors.rk   N©rn   Úerrors©r^   r‘   ri   s      r   Úon_llm_errorz!CometCallbackHandler.on_llm_errorÝ   ó%   € àˆ	Œ	�Q‰ˆ	Œ	ØˆŒ�qÑˆŒˆˆr   Úinputsc                 óº  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     t          |¦  «        ¦  «         |                     |                      ¦   «         ¦  «         |                     ¦   «         D ]¡\  }}t          |t          ¦  «        rdt          |¦  «        }| j        r|                      ||| j         ¦  «         |                     ||i¦  «         | j                             |¦  «         Œ~| j        j                             d|› d�¦  «         Œ¢dS )zRun when chain starts running.rk   rl   Úon_chain_startz1Unexpected data format provided! Input Value for ú will not be loggedN)rn   Úchain_startsrp   rf   rq   r   rr   ÚitemsÚ
isinstanceÚstrr   rL   ru   r[   rt   r   rX   rY   )r^   rg   r˜   ri   r}   Úchain_input_keyÚchain_input_valÚ
input_resps           r   rš   z#CometCallbackHandler.on_chain_startâ   sq  € ð 	ˆ	Œ	�Q‰ˆ	Œ	ØÐÔ˜QÑÐÔØˆŒ�qÑˆŒà�ŠÑ Ô ˆØ�Š�XÐ/Ð0Ñ1Ô1Ð1Ø�Š•L Ñ,Ô,Ñ-Ô-Ð-Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4à06·²±´ð 	ð 	Ñ,ˆO˜_Ý˜/­3Ñ/Ô/ð Ý% d™^œ^�
ØÔ#ð GØ×$Ò$ _°d¸D¼IÑFÔFÐFØ×!Ò! ?°OÐ"DÑEÔEÐEØÔ#×*Ò*¨:Ñ6Ô6Ð6Ð6ð ”Ô$×,Ò,ðLØ'6ðLð Lð Lñô ð ð ð	ð 	r   Úoutputsc                 óv  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     |                      ¦   «         ¦  «         |                     ¦   «         D ]¡\  }}t          |t          ¦  «        rdt          |¦  «        }| j
        r|                      ||| j         ¦  «         |                     ||i¦  «         | j                             |¦  «         Œ~| j        j                             d|› d�¦  «         Œ¢dS )zRun when chain ends running.rk   rl   Úon_chain_endz2Unexpected data format provided! Output Value for r›   N)rn   Ú
chain_endsr‚   rf   rq   rr   r�   rž   rŸ   r   rL   ru   r[   rt   r   rX   rY   )r^   r£   ri   r}   Úchain_output_keyÚchain_output_valÚoutput_resps          r   r¥   z!CometCallbackHandler.on_chain_endý   sS  € àˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜1ÑˆŒØˆ	Œ	�Q‰ˆ	Œ	à�ŠÑ Ô ˆØ�Š�X˜~Ð.Ñ/Ô/Ð/Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4à29·-²-±/´/ð 	ð 	Ñ.ÐÐ.ÝÐ*­CÑ0Ô0ð 
Ý& t™nœn�ØÔ#ð HØ×$Ò$Ð%5°t¸T¼YÑGÔGÐGØ×"Ò"Ð$4Ð6FÐ#GÑHÔHÐHØÔ#×*Ò*¨;Ñ7Ô7Ð7Ð7à”Ô$×,Ò,ðNØ(8ðNð Nð Nñô ð ð ð	ð 	r   c                 óF   — | xj         dz  c_         | xj        dz  c_        dS )zRun when chain errors.rk   Nr“   r•   s      r   Úon_chain_errorz#CometCallbackHandler.on_chain_error  r—   r   Ú	input_strc                 óö  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     t          |¦  «        ¦  «         |                     |                      ¦   «         ¦  «         | j        r|                      ||| j         ¦  «         |                     d|i¦  «         | j	         
                    |¦  «         dS )zRun when tool starts running.rk   rl   Úon_tool_startr¬   N)rn   Útool_startsrp   rf   rq   r   rr   rL   ru   r[   rt   )r^   rg   r¬   ri   r}   s        r   r®   z"CometCallbackHandler.on_tool_start  sî   € ð 	ˆ	Œ	�Q‰ˆ	Œ	ØÐÔ˜AÑÐÔØˆŒ�qÑˆŒà�ŠÑ Ô ˆØ�Š�X˜Ð/Ñ0Ô0Ð0Ø�Š•L Ñ,Ô,Ñ-Ô-Ð-Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ØÔð 	9Ø×Ò˜Y¨¨d¬iÑ8Ô8Ð8à�Š�[ )Ð,Ñ-Ô-Ð-ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   Úoutputc                 óÐ  — t          |¦  «        }| xj        dz  c_        | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     |                      ¦   «         ¦  «         | j        r|                      ||| j        ¦  «         |                     d|i¦  «         | j	         
                    |¦  «         dS )zRun when tool ends running.rk   rl   Úon_tool_endr°   N)rŸ   rn   Ú	tool_endsr‚   rf   rq   rr   rL   ru   r[   rt   )r^   r°   ri   r}   s       r   r²   z CometCallbackHandler.on_tool_end+  sØ   € å�V‘”ˆØˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜!ÑˆŒØˆ	Œ	�Q‰ˆ	Œ	à�ŠÑ Ô ˆØ�Š�X˜}Ð-Ñ.Ô.Ð.Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ØÔð 	6Ø×Ò˜V T¨4¬9Ñ5Ô5Ð5à�Š�X˜vÐ&Ñ'Ô'Ð'ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   c                 óF   — | xj         dz  c_         | xj        dz  c_        dS )zRun when tool errors.rk   Nr“   r•   s      r   Úon_tool_errorz"CometCallbackHandler.on_tool_error;  r—   r   r$   c                 ó’  — | xj         dz  c_         | xj        dz  c_        |                      ¦   «         }|                     ddi¦  «         |                     |                      ¦   «         ¦  «         | j        r|                      ||| j         ¦  «         |                     d|i¦  «         | j                             |¦  «         dS )z+
        Run when agent is ending.
        rk   rl   Úon_textr$   N)	rn   Útext_ctrrf   rq   rr   rL   ru   r[   rt   )r^   r$   ri   r}   s       r   r·   zCometCallbackHandler.on_text@  s¿   € ð 	ˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜ÑˆŒà�ŠÑ Ô ˆØ�Š�X˜yÐ)Ñ*Ô*Ð*Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ØÔð 	4Ø×Ò˜T 4¨¬Ñ3Ô3Ð3à�Š�V˜T�NÑ#Ô#Ð#ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   Úfinishc                 óÜ  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |                      ¦   «         }|j        d         }|j        }|                     d|dœ¦  «         |                     |                      ¦   «         ¦  «         | j        r|  	                    ||| j         ¦  «         |                     d|i¦  «         | j
                             |¦  «         dS )zRun when agent ends running.rk   r°   Úon_agent_finish)rl   ÚlogN)rn   Ú
agent_endsr‚   rf   Úreturn_valuesr¼   rq   rr   rL   ru   r[   rt   )r^   r¹   ri   r}   r°   r¼   s         r   r»   z$CometCallbackHandler.on_agent_finishP  så   € àˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜1ÑˆŒØˆ	Œ	�Q‰ˆ	Œ	à�ŠÑ Ô ˆØÔ% hÔ/ˆØŒjˆà�ŠÐ0¸Ð=Ð=Ñ>Ô>Ð>Ø�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ØÔð 	6Ø×Ò˜V T¨4¬9Ñ5Ô5Ð5à�Š�X˜vÐ&Ñ'Ô'Ð'ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   rl   c                 óú  — | xj         dz  c_         | xj        dz  c_        | xj        dz  c_        |j        }t	          |j        ¦  «        }|j        }|                      ¦   «         }|                     d||dœ¦  «         |                     |  	                    ¦   «         ¦  «         | j
        r|                      ||| j         ¦  «         |                     d|i¦  «         | j                             |¦  «         dS )zRun on agent action.rk   Úon_agent_action)rl   r¼   ÚtoolÚ
tool_inputN)rn   r¯   rp   rÁ   rŸ   rÂ   r¼   rf   rq   rr   rL   ru   r[   rt   )r^   rl   ri   rÁ   rÂ   r¼   r}   s          r   rÀ   z$CometCallbackHandler.on_agent_actionb  sö   € àˆ	Œ	�Q‰ˆ	Œ	ØÐÔ˜AÑÐÔØˆŒ�qÑˆŒàŒ{ˆÝ˜Ô*Ñ+Ô+ˆ
ØŒjˆà�ŠÑ Ô ˆØ�ŠÐ0¸ÀdÐKÐKÑLÔLÐLØ�Š�D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ØÔð 	:Ø×Ò˜Z¨¨t¬yÑ9Ô9Ð9à�Š�\ :Ð.Ñ/Ô/Ð/ØÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   c                 ó`   — i }| j         r$t          |¦  «        }|                     |¦  «         |S )zÂCompute text complexity metrics using textstat.

        Parameters:
            text (str): The text to analyze.

        Returns:
            `dict` containing the complexity metrics.
        )rJ   r8   rq   )r^   r$   r}   r7   s       r   r‡   z,CometCallbackHandler._get_complexity_metricsu  s:   € ð ˆØÔ"ð 	1Ý&DÀTÑ&JÔ&JÐ#Ø�KŠKÐ/Ñ0Ô0Ð0àˆr   r�   r�   rŽ   c                 óp   — i }| j         r,|                       |||¦  «        }|                     |¦  «         |S )aQ  Compute Custom Metrics for an LLM Generated Output

        Args:
            generation (LLMResult): Output generation from an LLM
            prompt_idx (int): List index of the input prompt
            gen_idx (int): List index of the generated output

        Returns:
            dict: `dict` containing the custom metrics.
        )rK   rq   )r^   r�   r�   rŽ   r}   rK   s         r   rˆ   z(CometCallbackHandler._get_custom_metrics…  sB   € ð ˆØÔð 	(Ø!×0Ò0°¸ZÈÑQÔQˆNØ�KŠK˜Ñ'Ô'Ð'àˆr   úcomet-langchain-demoÚlangchain_assetÚresetc           
      ó@  — |                       |¦  «         |rK	 |                      |¦  «         n4# t          $ r' | j        j                             ddddi¬¦  «         Y nw xY w|
r| j                             ¦   «          |r|                      ||||||||	¦  «         dS dS )aU  Flush the tracker and setup the session.

        Everything after this will be a new table.

        Args:
            name: Name of the performed session so far so it is identifiable
            langchain_asset: The langchain asset to save.
            finish: Whether to finish the run.

            Returns:
                None
        z&Failed to export agent or LLM to CometTÚshow_traceback©Úexc_infoÚextraN)	Ú_log_sessionÚ
_log_modelÚ	Exceptionr   rX   r‘   r"   ÚendÚ_reset)r^   rÆ   rF   r   r   rG   rH   rI   rJ   rK   r¹   rÇ   s               r   Úflush_trackerz"CometCallbackHandler.flush_trackerš  s÷   € ð4 	×Ò˜/Ñ*Ô*Ð*àð 	ðØ—’ Ñ0Ô0Ð0Ð0øÝð ð ð Ø”Ô$×*Ò*Ø<Ø!Ø+¨TÐ2ð +ñ ô ð ð ð ðøøøð ð 	"ØŒO×ÒÑ!Ô!Ð!àð 
	Ø�KŠKØØØØØØØ"Øñ	ô 	ð 	ð 	ð 	ð
	ð 
	s   ™/ ¯.A ÁA rw   rv   rn   c                 ó@   — | j                              |||¬¦  «         d S )N)rv   rn   )r"   Úlog_text)r^   rw   rv   rn   s       r   ru   z CometCallbackHandler._log_streamÏ  s%   € ØŒ× Ò  °(ÀÐ ÑFÔFÐFÐFÐFr   c                 ó´  — |                       |¦  «        }| j                             |d¬¦  «         t          | j        j        d¦  «        }| j        r| j        nt          }	 t          |d¦  «        r?|                     |¦  «         | j         	                    |t          |¦  «        ¦  «         d S d S # t          t          t          f$ r�}t          |d¦  «        r>|                     |¦  «         | j         	                    |t          |¦  «        ¦  «         n4| j        j                             |› d|j        j        › �¦  «         Y d }~d S Y d }~d S d }~ww xY w)NÚmodel)Úprefixz
model.jsonÚsaveÚ
save_agentz$ Could not save Langchain Asset for )Ú_get_llm_parametersr"   Úlog_parametersr   rT   rH   ÚLANGCHAIN_MODEL_NAMEÚhasattrrØ   Ú	log_modelrŸ   Ú
ValueErrorÚAttributeErrorÚNotImplementedErrorrÙ   r   rX   r‘   r`   Ú__name__)r^   rÆ   Úmodel_parametersÚlangchain_asset_pathÚ
model_nameÚes         r   rÎ   zCometCallbackHandler._log_modelÒ  s¢  € Ø×3Ò3°OÑDÔDÐØŒ×&Ò&Ð'7ÀÐ&ÑHÔHÐHå# D¤MÔ$6¸ÑEÔEÐØ"&¤)ÐE�T”Y�YÕ1Eˆ
ð	Ý�¨Ñ/Ô/ð QØ×$Ò$Ð%9Ñ:Ô:Ð:Ø”×)Ò)¨*µcÐ:NÑ6OÔ6OÑPÔPÐPÐPÐPðQð Qøõ �NÕ,?Ð@ð 		ð 		ð 		Ý�¨Ñ5Ô5ð Ø×*Ò*Ð+?Ñ@Ô@Ð@Ø”×)Ò)¨*µcÐ:NÑ6OÔ6OÑPÔPÐPÐPà”Ô$×*Ò*Øð @ð @à*Ô4Ô=ð@ð @ñô ð ð ð ð ð ð ð ð QÐPÐPÐPÐPÐPøøøøð		øøøs   Á"AB3 Â3EÃ
A<EÅEc                 óN  — 	 |                       |¦  «        }| j                             d|¦  «         n4# t          $ r' | j        j                             ddddi¬¦  «         Y nw xY w	 dt          t          j	        ¦  «        i}| j         
                    | j        d|¬¦  «         n4# t          $ r' | j        j                             ddddi¬¦  «         Y nw xY w	 |                      |¦  «         d S # t          $ r( | j        j                             d	dddi¬¦  «         Y d S w xY w)
Nzlangchain-llm-session.csvz#Failed to log session data to CometTrÉ   rÊ   Úlangchain_versionzlangchain-action_records.json)rv   z%Failed to log visualizations to Comet)Ú"_create_session_analysis_dataframer"   Ú	log_tablerÏ   r   rX   rY   rŸ   Úlangchain_communityÚ__version__Úlog_asset_datar[   Ú_log_visualizations)r^   rÆ   Úllm_session_dfrv   s       r   rÍ   z!CometCallbackHandler._log_sessionè  s¥  € ð		Ø!×DÒDÀ_ÑUÔUˆNàŒO×%Ò%Ð&AÀ>ÑRÔRÐRÐRøÝð 	ð 	ð 	ØŒMÔ ×(Ò(Ø5ØØ'¨Ð.ð )ñ ô ð ð ð ð	øøøð	Ø+­SÕ1DÔ1PÑ-QÔ-QÐRˆHàŒO×*Ò*ØÔ#Ð%DÈxð +ñ ô ð ð øõ ð 	ð 	ð 	ØŒMÔ ×(Ò(Ø5ØØ'¨Ð.ð )ñ ô ð ð ð ð	øøøð	Ø×$Ò$ ^Ñ4Ô4Ð4Ð4Ð4øÝð 	ð 	ð 	ØŒMÔ ×(Ò(Ø7ØØ'¨Ð.ð )ñ ô ð ð ð ð ð	øøøs3   ‚03 ³.A$Á#A$Á(=B& Â&.CÃCÃC2 Ã2.D$Ä#D$r9   c                 óš   — |sd S t          |¦  «        }|                     ¦   «         D ]"\  }}| j                             |||¬¦  «         Œ#d S )N)r×   rn   )rB   r�   r"   Úlog_metrics)r^   r9   rn   rA   ÚkeyÚvalues         r   rŠ   z&CometCallbackHandler._log_text_metrics
  si   € Øð 	ØˆFåBÀ7ÑKÔKˆØ)×/Ò/Ñ1Ô1ð 	Fð 	F‰JˆC�ØŒO×'Ò'¨°cÀÐ'ÑEÔEÐEÐEð	Fð 	Fr   Ú
session_dfc           
      ód  — | j         r| j        sd S t          ¦   «         }|d                              ¦   «         }|d                              ¦   «         }t	          t          ||¦  «        ¦  «        D ]¿\  }\  }}|                      |¦  «        }t          |j        ¦  «        }	| j         D ]†}
	 |j         	                    |	|
ddidd¬¦  «        }| j
                             |d|
› d|› d	�d
|i|¬¦  «         ŒL# t          $ r.}| j        j                             |dddi¬¦  «         Y d }~Œd }~ww xY wŒÀd S )Nrh   r$   ÚcompactTF)ÚstyleÚoptionsÚjupyterÚpagezlangchain-viz-ú-z.htmlrw   )rH   rv   rn   rÉ   rÊ   )rI   r]   r   Útolistr„   ÚzipÚlistÚsentsÚdisplacyÚrenderr"   rí   rÏ   r   rX   rY   )r^   rô   r_   rh   r£   Úidxrw   r°   ÚdocÚsentence_spansÚvisualizationÚhtmlræ   s                r   rî   z(CometCallbackHandler._log_visualizations  sŸ  € ØÔ#ð 	¨¬ð 	ØˆFå‘”ˆà˜YÔ'×.Ò.Ñ0Ô0ˆØ˜VÔ$×+Ò+Ñ-Ô-ˆå%.­s°7¸GÑ/DÔ/DÑ%EÔ%Eð 	ð 	Ñ!ˆCÑ!�&˜&Ø—(’(˜6Ñ"Ô"ˆCÝ! #¤)™_œ_ˆNà!%Ô!4ð ð �ðØ œ>×0Ò0Ø&Ø+Ø!*¨DÐ 1Ø %Ø!ð 1ñ ô �Dð ”O×2Ò2ØØH¨mÐHÐH¸cÐHÐHÐHØ"*¨FÐ!3Ø ð	 3ñ ô ð ð øõ !ð ð ð Ø”MÔ(×0Ò0Ø DÐ1AÀ4Ð0Hð 1ñ ô ð ð ð ð ð ð øøøøðøøøðð( 	ˆs   Â+AC4Ã4
D,Ã>$D'Ä'D,c	           
      óH  — |r|n| j         }	|r|n| j        }
|r|n| j        }|r|n| j        }|r|n| j        }|r|n| j        }|r|n| j        }|r|n| j        }|                      |	|
||||||¬¦  «         |  	                    ¦   «          t          j        ¦   «         | _        d S )N)rF   r   r   rG   rH   rI   rJ   rK   )rF   r   r   rG   rH   rI   rJ   rK   rQ   Úreset_callback_metarR   rS   rT   )r^   rF   r   r   rG   rH   rI   rJ   rK   Ú
_task_typeÚ
_workspaceÚ_project_nameÚ_tagsÚ_nameÚ_visualizationsÚ_complexity_metricsÚ_custom_metricss                    r   rÑ   zCometCallbackHandler._reset5  sê   € ð #,Ð?�Y�Y°´ˆ
Ø"+Ð?�Y�Y°´ˆ
Ø(4ÐK˜˜¸$Ô:KˆØÐ+�� $¤)ˆØÐ+�� $¤)ˆØ,:ÐS˜.˜.ÀÔ@Sˆà"4ÐQÐÐ¸$Ô:Qð 	ð -;ÐS˜.˜.ÀÔ@Sˆà�ŠØ Ø Ø&ØØØ*Ø2Ø*ð 	ñ 		
ô 		
ð 		
ð 	× Ò Ñ"Ô"Ð"Ý Ô3Ñ5Ô5ˆŒˆˆr   c                 óŠ  — t          ¦   «         }|                      |¦  «        }|                     dd¦  «        }|                     | j        ¦  «        }|j        |j                             |¦  «                                      d¬¦  «        }|                     | j	        ¦  «        }| 
                    ||ddddg¬¦  «        }|S )NÚnrk   T)ÚdropÚ
_llm_startÚ_llm_end)Ú
left_indexÚright_indexÚsuffixes)r   rÚ   Úgetr<   rs   ÚlocÚindexÚrepeatÚreset_indexr‰   Úmerge)r^   rÆ   r?   Úllm_parametersÚnum_generations_per_promptÚllm_start_records_dfÚllm_end_records_dfrï   s           r   ré   z7CometCallbackHandler._create_session_analysis_dataframeY  sÈ   € Ý‰_Œ_ˆà×1Ò1°/ÑBÔBˆØ%3×%7Ò%7¸¸QÑ%?Ô%?Ð"à!Ÿ|š|¨DÔ,EÑFÔFÐà3Ô7Ø Ô&×-Ò-Ð.HÑIÔIô 
ç
Š+˜4ˆ+Ñ
 Ô
 ð 	ð  Ÿ\š\¨$Ô*AÑBÔBÐàŸšØ ØØØØ" JÐ/ð "ñ 
ô 
ˆð Ðr   c                 óx  — |si S 	 t          |d¦  «        r$|j        j        j                             ¦   «         }nmt          |d¦  «        r|j        j                             ¦   «         }n>t          |d¦  «        r|j                             ¦   «         }n|                     ¦   «         }n# t
          $ r i cY S w xY w|S )NÚagentÚ	llm_chainÚllm)rÝ   r$  r%  r&  r†   rÏ   )r^   rÆ   r  s      r   rÚ   z(CometCallbackHandler._get_llm_parametersp  sÓ   € Øð 	ØˆIð
	Ý�¨Ñ0Ô0ð 8Ø!0Ô!6Ô!@Ô!D×!IÒ!IÑ!KÔ!K��Ý˜¨+Ñ6Ô6ð 8Ø!0Ô!:Ô!>×!CÒ!CÑ!EÔ!E��Ý˜¨%Ñ0Ô0ð 8Ø!0Ô!4×!9Ò!9Ñ!;Ô!;��à!0×!5Ò!5Ñ!7Ô!7�øøÝð 	ð 	ð 	ØˆIˆIˆIð	øøøð Ðs   †B!B( Â(B7Â6B7)	rE   NNNNNFNT)NrE   NrÅ   NNNFNFFr;   )NNNNNNFN).râ   Ú
__module__Ú__qualname__Ú__doc__r	   rŸ   r
   r   Úboolr   rQ   r   rf   r   rm   r{   r   r€   ÚBaseExceptionr–   rš   r¥   r«   r®   r²   rµ   r·   r   r»   r   rÀ   r†   r‡   r   Úintrˆ   rÒ   ru   rÎ   rÍ   rŠ   rî   rÑ   ré   rÚ   Ú__classcell__)r`   s   @r   rD   rD   H   s{  ø€ € € € € ðð ð( $/Ø#'Ø&*Ø#'Ø"Ø.2Ø#(Ø-1Ø ð2ð 2à˜C”=ð2ð ˜C”=ð2ð ˜s”mð	2ð
 �xÔ ð2ð �sŒmð2ð !  c¤Ô+ð2ð !ð2ð ! Ô*ð2ð ð2ð 
ð2ð 2ð 2ð 2ð 2ð 2ðh8˜Dð 8ð 8ð 8ð 8ð>Ø˜s C˜xœ.ð>Ø37¸´9ð>ØHKð>à	ð>ð >ð >ð >ð,	) cð 	)°Sð 	)¸Tð 	)ð 	)ð 	)ð 	)ð(F 9ð (F¸ð (FÀð (Fð (Fð (Fð (FðT -ð ¸3ð À4ð ð ð ð ð
Ø˜s C˜xœ.ðØ26°s¸C°x´.ðØLOðà	ðð ð ð ð6 D¨¨c¨¤Nð ¸cð Àdð ð ð ð ð. Mð ¸Sð ÀTð ð ð ð ð
)Ø˜s C˜xœ.ð)Ø58ð)ØDGð)à	ð)ð )ð )ð )ð$) #ð )°ð )¸ð )ð )ð )ð )ð  =ð ¸Cð ÀDð ð ð ð ð
)˜Cð )¨3ð )°4ð )ð )ð )ð )ð ) kð )¸Sð )ÀTð )ð )ð )ð )ð$) kð )¸Sð )ÀSð )ð )ð )ð )ð&¨Cð °Dð ð ð ð ð Ø$ðØ25ðØ@Cðà	ðð ð ð ð.  $Ø#.Ø#'Ø&<Ø#'Ø"Ø.2Ø#(Ø-1ØØð3ð 3àð3ð ˜C”=ð3ð ˜C”=ð	3ð
 ˜s”mð3ð �xÔ ð3ð �sŒmð3ð !  c¤Ô+ð3ð !ð3ð ! Ô*ð3ð ð3ð ð3ð 
ð3ð 3ð 3ð 3ðjG #ð G°ð G¸Sð GÀTð Gð Gð Gð Gð¨#ð °$ð ð ð ð ð, ð  ¨H°S¬Mð  ÀTð  ð  ð  ð  ðDF¨°$¬ð F¸sð FÀtð Fð Fð Fð Fð!¨cð !°dð !ð !ð !ð !ðJ $(Ø#'Ø&*Ø#'Ø"Ø.2Ø#(Ø-1ð"6ð "6à˜C”=ð"6ð ˜C”=ð"6ð ˜s”mð	"6ð
 �xÔ ð"6ð �sŒmð"6ð !  c¤Ô+ð"6ð !ð"6ð ! Ô*ð"6ð 
ð"6ð "6ð "6ð "6ðHð À#ð ÐQUð ð ð ð ð.ð °3ð À$ð ð ð ð ð ð ð ð r   rD   )NN)%rR   Úcopyr   Úpathlibr   Útypingr   r   r   r   r	   r
   Úlangchain_core.agentsr   r   Úlangchain_core.callbacksr   Úlangchain_core.outputsr   r   Úlangchain_core.utilsr   rë   Ú#langchain_community.callbacks.utilsr   r   r   r   r   rÜ   r   rŸ   r#   r†   r8   rB   rD   r   r   r   ú<module>r6     sñ  ðØ €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø -Ð -Ð -Ð -Ð -Ð -à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð ð$˜ð $ð $ð $ð $ð DHð
ð 
Ø˜Œ}ð
Ø3;¸C´=ð
àð
ð 
ð 
ð 
ð#¨ð #°ð #ð #ð #ð #ð.%°hð %À4ð %ð %ð %ð %ðwð wð wð wð wÐ6Ð8Kñ wô wð wð wð wr   