Ë
    µŒjÅ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$y)é    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   © ó    úy/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/callbacks/comet_ml_callback.pyÚimport_comet_mlr      s   € ä˜
Ó#Ð#r   Ú	workspaceÚproject_namec                 ó@   — t        «       }|j                  | |¬«      }|S )N)r   r   )r   Ú
Experiment)r   r   r   Ú
experiments       r   Ú_get_experimentr#      s/   € ô Ó €Hà×$Ñ$ØØ!ð %ó €Jð
 Ðr   Útextc                 ó^  — t        «       }i d|j                  | «      “d|j                  | «      “d|j                  | «      “d|j	                  | «      “d|j                  | «      “d|j                  | «      “d|j                  | «      “d|j                  | «      “d	|j                  | «      “d
|j                  | «      “d|j                  | «      “d|j                  | «      “d|j                  | «      “d|j                  | «      “d|j                  | «      “d|j!                  | «      “}|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ðà × =Ñ =¸dÓ Cðð 	�h×)Ñ)¨$Ó/ðð 	˜h×9Ñ9¸$Ó?ð	ð
 	& x×'KÑ'KÈDÓ'Qðð 	'¨×(MÑ(MÈdÓ(Sðð 	˜8×3Ñ3°DÓ9ðð 	  ×!?Ñ!?ÀÓ!Eðð 	�x×+Ñ+¨DÓ1ðð 	˜×/Ñ/°Ó5ðð 	˜H×5Ñ5°dÓ;ðð 	˜8×3Ñ3°DÓ9ðð 	˜H×5Ñ5°dÓ;ðð 	�H×%Ñ% dÓ+ðð 	˜(×1Ñ1°$Ó7ðð  	�—‘ Ó%ð!Ðð$ #Ð"r   Úmetricsc                 óx   — t        «       }|j                  | «      }|j                  «       }|j                  «       S ©N)r   Ú	DataFrameÚdescribeÚto_dict)r9   ÚpdÚ
metrics_dfÚmetrics_summarys       r   Ú(_summarize_metrics_for_generated_outputsrB   @   s4   € Ü	‹€BØ—‘˜gÓ&€JØ ×)Ñ)Ó+€Oà×"Ñ"Ó$Ð$r   c                   óˆ  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 d>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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d-„Z#	 	 	 	 	 	 	 	 	 	 	 d?d.e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d/eddfd0„Z$d1ed2ed3e"ddfd4„Z%d.eddfd5„Z&d@d.ee   ddfd6„Z'd7ee   d3e"ddfd8„Z(d9eddfd:„Z)	 	 	 	 	 	 	 	 dAd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*d@d.edefd<„Z+d@d.edefd=„Z,ˆ xZ-S )BÚ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.
    NÚ	task_typer   r   ÚtagsÚnameÚvisualizationsÚcomplexity_metricsÚcustom_metricsÚstream_logsr   c
                 óÆ  •— t        «       | _        t        ‰| �  «        || _        || _        || _        || _        || _        || _	        || _
        |	| _        t        j                  «       | _        t        ||«      | _        | j                   j#                  dd«       |r| j                   j%                  |«       || _        | j&                  r%| j                   j)                  | j&                  «       d}
| j                  j*                  j-                  |
«       g | _        g | _        || _	        | j                  r!t3        «       }|j5                  d«      | _        yd| _        y)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__rE   r   r   rF   rH   rI   rJ   rK   ÚtempfileÚTemporaryDirectoryÚtemp_dirr#   r"   Ú	log_otherÚadd_tagsrG   Úset_nameÚLOGGERÚwarningÚcallback_columnsÚaction_recordsr   ÚloadÚnlp)ÚselfrE   r   r   rF   rG   rH   rI   rJ   rK   rX   ÚspacyÚ	__class__s               €r   rP   zCometCallbackHandler.__init__[   s&  ø€ ô (Ó)ˆŒÜ‰ÑÔà"ˆŒØ"ˆŒØ(ˆÔØˆŒ	Ø,ˆÔØ"4ˆÔØ,ˆÔØ&ˆÔÜ ×3Ñ3Ó5ˆŒä)¨)°\ÓBˆŒØ�‰×!Ñ! .°+Ô>ÙØ�O‰O×$Ñ$ TÔ*ØˆŒ	Ø�9Š9Ø�O‰O×$Ñ$ T§Y¡YÔ/ðð 	ð 	�‰×Ñ×$Ñ$ WÔ-à&(ˆÔØ$&ˆÔØ"4ˆÔØ×ÒÜ “NˆEØ—z‘zÐ"2Ó3ˆD�HàˆD�Hr   c                 óB   — | j                   D �ci c]  }|d “Œ c}S c c}w r;   )rY   )r]   Úks     r   Ú
_init_respzCometCallbackHandler._init_resp�   s&   € Ø!%×!6Ò!6Ó7Ñ!6˜A��4‘Ð!6Ñ7Ð7ùÒ7s   �
Ú
serializedÚpromptsÚkwargsc                 ó(  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        | j                  «       }|j	                  ddi«       |j	                  t        |«      «       |j	                  | j                  «       «       |D ]r  }t        |«      }||d<   | j                  j                  |«       | j                  j                  |«       | j                  sŒV| j                  ||| j                   «       Œt y)zRun when LLM starts.é   ÚactionÚon_llm_startrd   N)ÚstepÚ
llm_startsÚstartsrb   Úupdater   Úget_custom_callback_metar   Úon_llm_start_recordsÚappendrZ   rK   Ú_log_stream)r]   rc   rd   re   ÚmetadataÚpromptÚprompt_resps          r   ri   z!CometCallbackHandler.on_llm_start’   sÕ   € ð 	�	Š	�Q‰�	Ø�Š˜1Ñ�Ø�Š�qÑ�à—?‘?Ó$ˆØ�‰˜ >Ð2Ô3Ø�‰œ ZÓ0Ô1Ø�‰˜×5Ñ5Ó7Ô8ãˆFÜ" 8Ó,ˆKØ%+ˆK˜	Ñ"Ø×%Ñ%×,Ñ,¨[Ô9Ø×Ñ×&Ñ& {Ô3à×ÓØ× Ñ  ¨°4·9±9Õ=ñ r   Útokenc                 ó  — | xj                   dz  c_         | xj                  dz  c_        | j                  «       }|j                  d|dœ«       |j                  | j	                  «       «       | j
                  j                  |«       y)z#Run when LLM generates a new token.rg   Úon_llm_new_token)rh   ru   N)rj   Úllm_streamsrb   rm   rn   rZ   rp   )r]   ru   re   Úresps       r   rw   z%CometCallbackHandler.on_llm_new_token¨   sg   € à�	Š	�Q‰�	Ø×Ò˜AÑÕà�‰Ó ˆØ�‰Ð1¸EÑBÔCØ�‰�D×1Ñ1Ó3Ô4à×Ñ×"Ñ" 4Õ(r   Úresponsec                 óN  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        | j                  «       }|j	                  ddi«       |j	                  t        |j                  xs i «      «       |j	                  | j                  «       «       g }g }t        |j                  «      D �]%  \  }}t        |«      D �]  \  }}	|	j                  }
t        |«      }|j	                  t        |	j                  «       «      «       | j                  |
«      }|r"|j                  |«       |j	                  |«       | j                  |	||«      }|r"|j                  |«       |j	                  |«       | j                   r| j#                  |
|| j                   «       | j$                  j                  |«       | j&                  j                  |«       �Œ �Œ( | j)                  || j                   ¬«       | j)                  || j                   ¬«       y)zRun when LLM ends running.rg   rh   Ú
on_llm_end)rj   N)rj   Úllm_endsÚendsrb   rm   r   Ú
llm_outputrn   Ú	enumerateÚgenerationsr$   r   ÚdictÚ_get_complexity_metricsrp   Ú_get_custom_metricsrK   rq   rZ   Úon_llm_end_recordsÚ_log_text_metrics)r]   rz   re   rr   Úoutput_complexity_metricsÚoutput_custom_metricsÚ
prompt_idxr�   Úgen_idxÚ
generationr$   Úgeneration_resprI   rJ   s                 r   r|   zCometCallbackHandler.on_llm_end³   sÃ  € à�	Š	�Q‰�	Ø�Š˜Ñ�Ø�	Š	�Q‰�	à—?‘?Ó$ˆØ�‰˜ <Ð0Ô1Ø�‰œ X×%8Ñ%8Ò%>¸BÓ?Ô@Ø�‰˜×5Ñ5Ó7Ô8à$&Ð!Ø "Ðä'0°×1EÑ1E×'FÑ#ˆJ˜Ü'0°×'=Ñ#�˜Ø!—‘�ä"*¨8Ó"4�Ø×&Ñ&¤|°J·O±OÓ4EÓ'FÔGà%)×%AÑ%AÀ$Ó%GÐ"Ù%Ø-×4Ñ4Ð5GÔHØ#×*Ñ*Ð+=Ô>à!%×!9Ñ!9Ø 
¨Gó"�ñ "Ø)×0Ñ0°Ô@Ø#×*Ñ*¨>Ô:à×#Ò#Ø×$Ñ$ T¨8°T·Y±YÔ?à×#Ñ#×*Ñ*¨?Ô;Ø×'Ñ'×.Ñ.¨Ö?ò- (>ð (Gð2 	×ÑÐ8¸t¿y¹yÐÔIØ×ÑÐ4¸4¿9¹9ÐÕEr   Úerrorc                 óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when LLM errors.rg   N©rj   Úerrors©r]   r�   re   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_        | j                  «       }|j	                  ddi«       |j	                  t        |«      «       |j	                  | j                  «       «       |j                  «       D ]¡  \  }}t        |t        «      rct        |«      }| j                  r| j                  ||| j                   «       |j	                  ||i«       | j                  j                  |«       Œy| j                  j                   j#                  d|› d�«       Œ£ y)zRun when chain starts running.rg   rh   Úon_chain_startz1Unexpected data format provided! Input Value for ú will not be loggedN)rj   Úchain_startsrl   rb   rm   r   rn   ÚitemsÚ
isinstanceÚstrr   rK   rq   rZ   rp   r   rW   rX   )r]   rc   r”   re   ry   Úchain_input_keyÚchain_input_valÚ
input_resps           r   r–   z#CometCallbackHandler.on_chain_startâ   s  € ð 	�	Š	�Q‰�	Ø×Ò˜QÑÕØ�Š�qÑ�à�‰Ó ˆØ�‰�XÐ/Ð0Ô1Ø�‰”L Ó,Ô-Ø�‰�D×1Ñ1Ó3Ô4à06·±¶Ñ,ˆO˜_Ü˜/¬3Ô/Ü% d›^�
Ø×#Ò#Ø×$Ñ$ _°d¸D¿I¹IÔFØ×!Ñ! ?°OÐ"DÔEØ×#Ñ#×*Ñ*¨:Õ6ð —‘×$Ñ$×,Ñ,ð'Ø'6Ð&7Ð7JðLõñ 1?r   Úoutputsc                 ón  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        | j                  «       }|j	                  ddi«       |j	                  | j                  «       «       |j                  «       D ]¡  \  }}t        |t        «      rct        |«      }| j                  r| j                  ||| j                   «       |j	                  ||i«       | j                  j                  |«       Œy| j                  j                  j!                  d|› d�«       Œ£ y)zRun when chain ends running.rg   rh   Úon_chain_endz2Unexpected data format provided! Output Value for r—   N)rj   Ú
chain_endsr~   rb   rm   rn   r™   rš   r›   r   rK   rq   rZ   rp   r   rW   rX   )r]   rŸ   re   ry   Úchain_output_keyÚchain_output_valÚoutput_resps          r   r¡   z!CometCallbackHandler.on_chain_endý   sý   € à�	Š	�Q‰�	Ø�Š˜1Ñ�Ø�	Š	�Q‰�	à�‰Ó ˆØ�‰�X˜~Ð.Ô/Ø�‰�D×1Ñ1Ó3Ô4à29·-±-¶/Ñ.ÐÐ.ÜÐ*¬CÔ0Ü& t›n�Ø×#Ò#Ø×$Ñ$Ð%5°t¸T¿Y¹YÔGØ×"Ñ"Ð$4Ð6FÐ#GÔHØ×#Ñ#×*Ñ*¨;Õ7à—‘×$Ñ$×,Ñ,ð(Ø(8Ð'9Ð9LðNõñ 3Br   c                 óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when chain errors.rg   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_        | j                  «       }|j	                  ddi«       |j	                  t        |«      «       |j	                  | j                  «       «       | j                  r| j                  ||| j                   «       |j	                  d|i«       | j                  j                  |«       y)zRun when tool starts running.rg   rh   Úon_tool_startr¨   N)rj   Útool_startsrl   rb   rm   r   rn   rK   rq   rZ   rp   )r]   rc   r¨   re   ry   s        r   rª   z"CometCallbackHandler.on_tool_start  s·   € ð 	�	Š	�Q‰�	Ø×Ò˜AÑÕØ�Š�qÑ�à�‰Ó ˆØ�‰�X˜Ð/Ô0Ø�‰”L Ó,Ô-Ø�‰�D×1Ñ1Ó3Ô4Ø×ÒØ×Ñ˜Y¨¨d¯i©iÔ8à�‰�[ )Ð,Ô-Ø×Ñ×"Ñ" 4Õ(r   Úoutputc                 óÊ  — t        |«      }| xj                  dz  c_        | xj                  dz  c_        | xj                  dz  c_        | j	                  «       }|j                  ddi«       |j                  | j                  «       «       | j                  r| j                  ||| j                  «       |j                  d|i«       | j                  j                  |«       y)zRun when tool ends running.rg   rh   Úon_tool_endr¬   N)r›   rj   Ú	tool_endsr~   rb   rm   rn   rK   rq   rZ   rp   )r]   r¬   re   ry   s       r   r®   z CometCallbackHandler.on_tool_end+  s©   € ä�V“ˆØ�	Š	�Q‰�	Ø�Š˜!Ñ�Ø�	Š	�Q‰�	à�‰Ó ˆØ�‰�X˜}Ð-Ô.Ø�‰�D×1Ñ1Ó3Ô4Ø×ÒØ×Ñ˜V T¨4¯9©9Ô5à�‰�X˜vÐ&Ô'Ø×Ñ×"Ñ" 4Õ(r   c                 óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when tool errors.rg   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_        | j                  «       }|j                  ddi«       |j                  | j	                  «       «       | j
                  r| j                  ||| j                   «       |j                  d|i«       | j                  j                  |«       y)z+
        Run when agent is ending.
        rg   rh   Úon_textr$   N)	rj   Útext_ctrrb   rm   rn   rK   rq   rZ   rp   )r]   r$   re   ry   s       r   r³   zCometCallbackHandler.on_text@  s”   € ð 	�	Š	�Q‰�	Ø�Š˜Ñ�à�‰Ó ˆØ�‰�X˜yÐ)Ô*Ø�‰�D×1Ñ1Ó3Ô4Ø×ÒØ×Ñ˜T 4¨¯©Ô3à�‰�V˜T�NÔ#Ø×Ñ×"Ñ" 4Õ(r   Úfinishc                 óì  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        | j                  «       }|j                  d   }|j
                  }|j                  d|dœ«       |j                  | j                  «       «       | j                  r| j                  ||| j                   «       |j                  d|i«       | j                  j                  |«       y)zRun when agent ends running.rg   r¬   Úon_agent_finish)rh   ÚlogN)rj   Ú
agent_endsr~   rb   Úreturn_valuesr¸   rm   rn   rK   rq   rZ   rp   )r]   rµ   re   ry   r¬   r¸   s         r   r·   z$CometCallbackHandler.on_agent_finishP  sº   € à�	Š	�Q‰�	Ø�Š˜1Ñ�Ø�	Š	�Q‰�	à�‰Ó ˆØ×%Ñ% hÑ/ˆØ�j‰jˆà�‰Ð0¸Ñ=Ô>Ø�‰�D×1Ñ1Ó3Ô4Ø×ÒØ×Ñ˜V T¨4¯9©9Ô5à�‰�X˜vÐ&Ô'Ø×Ñ×"Ñ" 4Õ(r   rh   c                 ó  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        |j                  }t	        |j
                  «      }|j                  }| j                  «       }|j                  d||dœ«       |j                  | j                  «       «       | j                  r| j                  ||| j                   «       |j                  d|i«       | j                  j                  |«       y)zRun on agent action.rg   Úon_agent_action)rh   r¸   ÚtoolÚ
tool_inputN)rj   r«   rl   r½   r›   r¾   r¸   rb   rm   rn   rK   rq   rZ   rp   )r]   rh   re   r½   r¾   r¸   ry   s          r   r¼   z$CometCallbackHandler.on_agent_actionb  sÉ   € à�	Š	�Q‰�	Ø×Ò˜AÑÕØ�Š�qÑ�à�{‰{ˆÜ˜×*Ñ*Ó+ˆ
Ø�j‰jˆà�‰Ó ˆØ�‰Ð0¸ÀdÑKÔLØ�‰�D×1Ñ1Ó3Ô4Ø×ÒØ×Ñ˜Z¨¨t¯y©yÔ9à�‰�\ :Ð.Ô/Ø×Ñ×"Ñ" 4Õ(r   c                 óZ   — i }| j                   rt        |«      }|j                  |«       |S )zÐCompute text complexity metrics using textstat.

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

        Returns:
            (dict): A dictionary containing the complexity metrics.
        )rI   r8   rm   )r]   r$   ry   r7   s       r   rƒ   z,CometCallbackHandler._get_complexity_metricsu  s/   € ð ˆØ×"Ò"Ü&DÀTÓ&JÐ#Ø�K‰KÐ/Ô0àˆr   r‹   r‰   rŠ   c                 ój   — i }| j                   r$| j                  |||«      }|j                  |«       |S )aW  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: A dictionary containing the custom metrics.
        )rJ   rm   )r]   r‹   r‰   rŠ   ry   rJ   s         r   r„   z(CometCallbackHandler._get_custom_metrics…  s7   € ð ˆØ×ÒØ!×0Ñ0°¸ZÈÓQˆNØ�K‰K˜Ô'àˆr   Úlangchain_assetÚresetc           
      ó.  — | j                  |«       |r	 | j                  |«       |
r| j                  j                  «        |r| j                  ||||||||	«       yy# t        $ r- | j                  j                  j                  ddddi¬«       Y Œmw xY w)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   rW   r�   r"   ÚendÚ_reset)r]   rÁ   rE   r   r   rF   rG   rH   rI   rJ   rµ   rÂ   s               r   Úflush_trackerz"CometCallbackHandler.flush_trackerš  s£   € ð4 	×Ñ˜/Ô*áðØ—‘ Ô0ñ Ø�O‰O×ÑÔ!áØ�K‰KØØØØØØØ"Øõ	ð øô ò Ø—‘×$Ñ$×*Ñ*Ø<Ø!Ø+¨TÐ2ð +ö ðús   •A Á3BÂBrs   rr   rj   c                 ó@   — | j                   j                  |||¬«       y )N)rr   rj   )r"   Úlog_text)r]   rs   rr   rj   s       r   rq   z CometCallbackHandler._log_streamÏ  s   € Ø�‰× Ñ  °(ÀÐ ÕFr   c                 ó²  — | j                  |«      }| j                  j                  |d¬«       t        | j                  j
                  d«      }| j
                  r| j
                  nt        }	 t        |d«      r7|j                  |«       | j                  j                  |t        |«      «       y y # t        t        t        f$ r�}t        |d«      r7|j                  |«       | j                  j                  |t        |«      «       nC| j                  j                   j#                  |› d|j$                  j&                  › �«       Y d }~y Y d }~y 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   rS   rG   ÚLANGCHAIN_MODEL_NAMEÚhasattrrÓ   Ú	log_modelr›   Ú
ValueErrorÚAttributeErrorÚNotImplementedErrorrÔ   r   rW   r�   r_   Ú__name__)r]   rÁ   Úmodel_parametersÚlangchain_asset_pathÚ
model_nameÚes         r   rÉ   zCometCallbackHandler._log_modelÒ  s#  € Ø×3Ñ3°OÓDÐØ�‰×&Ñ&Ð'7ÀÐ&ÔHä# D§M¡M×$6Ñ$6¸ÓEÐØ"&§)¢)�T—Y’YÔ1Eˆ
ð	Ü�¨Ô/Ø×$Ñ$Ð%9Ô:Ø—‘×)Ñ)¨*´cÐ:NÓ6OÕPð 0øô œNÔ,?Ð@ò 		Ü�¨Ô5Ø×*Ñ*Ð+?Ô@Ø—‘×)Ñ)¨*´cÐ:NÓ6OÕPà—‘×$Ñ$×*Ñ*Ø�cðØ*×4Ñ4×=Ñ=Ð>ð@÷ñ ô Qûð		ús   Á.AB2 Â2EÃBEÅEc                 ób  — 	 | j                  |«      }| j                  j                  d|«       	 dt        t        j                  «      i}| j                  j                  | j                  d|¬«       	 | j                  «       y # t        $ r- | j                  j
                  j                  ddddi¬«       Y ŒŒw xY w# t        $ r- | j                  j
                  j                  ddddi¬«       Y Œ�w xY w# t        $ r- | j                  j
                  j                  d	dddi¬«       Y y w xY w)
Nzlangchain-llm-session.csvz#Failed to log session data to CometTrÄ   rÅ   Úlangchain_versionzlangchain-action_records.json)rr   z%Failed to log visualizations to Comet)Ú"_create_session_analysis_dataframer"   Ú	log_tablerÊ   r   rW   rX   r›   Úlangchain_communityÚ__version__Úlog_asset_datarZ   Ú_log_visualizations)r]   rÁ   Úllm_session_dfrr   s       r   rÈ   z!CometCallbackHandler._log_sessionè  s1  € ð		Ø!×DÑDÀ_ÓUˆNà�O‰O×%Ñ%Ð&AÀ>ÔRð	Ø+¬SÔ1D×1PÑ1PÓ-QÐRˆHà�O‰O×*Ñ*Ø×#Ñ#Ð%DÈxð +ô ð	Ø×$Ñ$ ^Õ4øô+ ò 	Ø�M‰M× Ñ ×(Ñ(Ø5ØØ'¨Ð.ð )ö ð	ûô ò 	Ø�M‰M× Ñ ×(Ñ(Ø5ØØ'¨Ð.ð )ö ð	ûô ò 	Ø�M‰M× Ñ ×(Ñ(Ø7ØØ'¨Ð.ð )ö ð	ús5   ‚-B °AB? Á4C8 Â3B<Â;B<Â?3C5Ã4C5Ã83D.Ä-D.r9   c                 óŒ   — |sy t        |«      }|j                  «       D ]#  \  }}| j                  j                  |||¬«       Œ% y )N)rÒ   rj   )rB   r™   r"   Úlog_metrics)r]   r9   rj   rA   ÚkeyÚvalues         r   r†   z&CometCallbackHandler._log_text_metrics
  sB   € ÙØäBÀ7ÓKˆØ)×/Ñ/Ö1‰JˆC�Ø�O‰O×'Ñ'¨°cÀÐ'ÕEñ 2r   Ú
session_dfc           
      óZ  — | j                   r| j                  sy t        «       }|d   j                  «       }|d   j                  «       }t	        t        ||«      «      D ]Š  \  }\  }}| j                  |«      }t        |j                  «      }	| j                   D ]M  }
	 |j                  j                  |	|
ddidd¬«      }| j                  j                  |d|
› d|› d	�d
|i|¬«       ŒO ŒŒ y # t        $ r4}| j                  j                  j                  |dddi¬«       Y d }~Œ‹d }~ww xY w)Nrd   r$   ÚcompactTF)ÚstyleÚoptionsÚjupyterÚpagezlangchain-viz-Ú-z.htmlrs   )rG   rr   rj   rÄ   rÅ   )rH   r\   r   Útolistr€   ÚzipÚlistÚsentsÚdisplacyÚrenderr"   rè   rÊ   r   rW   rX   )r]   rï   r^   rd   rŸ   Úidxrs   r¬   ÚdocÚsentence_spansÚvisualizationÚhtmlrá   s                r   ré   z(CometCallbackHandler._log_visualizations  s>  € Ø×#Ò#¨¯ªØä“ˆà˜YÑ'×.Ñ.Ó0ˆØ˜VÑ$×+Ñ+Ó-ˆä%.¬s°7¸GÓ/DÖ%EÑ!ˆCÑ!�&˜&Ø—(‘(˜6Ó"ˆCÜ! #§)¡)›_ˆNà!%×!4Ô!4�ðØ Ÿ>™>×0Ñ0Ø&Ø+Ø!*¨DÐ 1Ø %Ø!ð 1ó �Dð —O‘O×2Ñ2ØØ-¨m¨_¸A¸c¸UÀ%ÐHØ"*¨FÐ!3Ø ð	 3õ ñ "5ð	 &Fð0 	øô !ò Ø—M‘M×(Ñ(×0Ñ0Ø DÐ1AÀ4Ð0Hð 1÷ ñ ûðús   ÂA
C-Ã-	D*Ã6*D%Ä%D*c	           
      óˆ  — |r|n| j                   }	|r|n| j                  }
|r|n| j                  }|r|n| j                  }|r|n| j                  }|r|n| j
                  }|r|n| j                  }|r|n| j                  }| j                  |	|
||||||¬«       | j                  «        t        j                  «       | _        y )N)rE   r   r   rF   rG   rH   rI   rJ   )rE   r   r   rF   rG   rH   rI   rJ   rP   Úreset_callback_metarQ   rR   rS   )r]   rE   r   r   rF   rG   rH   rI   rJ   Ú
_task_typeÚ
_workspaceÚ_project_nameÚ_tagsÚ_nameÚ_visualizationsÚ_complexity_metricsÚ_custom_metricss                    r   rÌ   zCometCallbackHandler._reset5  sÁ   € ñ #,‘Y°·±ˆ
Ù"+‘Y°·±ˆ
Ù(4™¸$×:KÑ:KˆÙ‘ $§)¡)ˆÙ‘ $§)¡)ˆÙ,:™.À×@SÑ@Sˆá"4Ñ¸$×:QÑ:Qð 	ñ -;™.À×@SÑ@Sˆà�‰Ø Ø Ø&ØØØ*Ø2Ø*ð 	ô 		
ð 	× Ñ Ô"Ü ×3Ñ3Ó5ˆ�r   c                 ól  — t        «       }| j                  |«      }|j                  dd«      }|j                  | j                  «      }|j
                  |j                  j                  |«         j                  d¬«      }|j                  | j                  «      }|j                  ||ddddg¬«      }|S )NÚnrg   T)ÚdropÚ
_llm_startÚ_llm_end)Ú
left_indexÚright_indexÚsuffixes)r   rÕ   Úgetr<   ro   Ú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ˆØ%3×%7Ñ%7¸¸QÓ%?Ð"à!Ÿ|™|¨D×,EÑ,EÓFÐà3×7Ñ7Ø ×&Ñ&×-Ñ-Ð.HÓIñ 
ç
‰+˜4ˆ+Ó
 ð 	ð  Ÿ\™\¨$×*AÑ*AÓBÐàŸ™Ø ØØØØ" JÐ/ð "ó 
ˆð Ðr   c                 ó€  — |si S 	 t        |d«      r0|j                  j                  j                  j	                  «       }|S t        |d«      r&|j                  j                  j	                  «       }|S t        |d«      r|j                  j	                  «       }|S |j	                  «       }	 |S # t
        $ r i cY S w xY w)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×!6Ñ!6×!@Ñ!@×!DÑ!D×!IÑ!IÓ!K�ð Ðô ˜¨+Ô6Ø!0×!:Ñ!:×!>Ñ!>×!CÑ!CÓ!E�ð Ðô ˜¨%Ô0Ø!0×!4Ñ!4×!9Ñ!9Ó!;�ð Ðð	 "1×!5Ñ!5Ó!7‘ð Ðøô ò 	ØŠIð	ús#   †:B/ Á0B/ Á4&B/ ÂB/ Â/B=Â<B=)	Ú	inferenceNNNNNFNT)Nr"  Nzcomet-langchain-demoNNNFNFFr;   )NNNNNNFN).rÝ   Ú
__module__Ú__qualname__Ú__doc__r	   r›   r
   r   Úboolr   rP   r   rb   r   ri   rw   r   r|   ÚBaseExceptionr’   r–   r¡   r§   rª   r®   r±   r³   r   r·   r   r¼   r‚   rƒ   r   Úintr„   rÍ   rq   rÉ   rÈ   r†   ré   rÌ   rä   rÕ   Ú__classcell__)r_   s   @r   rD   rD   H   s£  ø„ ñð( $/Ø#'Ø&*Ø#'Ø"Ø.2Ø#(Ø-1Ø ñ2à˜C‘=ð2ð ˜C‘=ð2ð ˜s‘mð	2ð
 �xÑ ð2ð �s‰mð2ð !  c¡Ñ+ð2ð !ð2ð ! Ñ*ð2ð ð2ð 
õ2ðh8˜Dó 8ð>Ø˜s C˜x™.ð>Ø37¸±9ð>ØHKð>à	ó>ð,	) cð 	)°Sð 	)¸Tó 	)ð(F 9ð (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ð ˜C‘=ð3ð ˜C‘=ð	3ð
 ˜s‘mð3ð �xÑ ð3ð �s‰mð3ð !  c¡Ñ+ð3ð !ð3ð ! Ñ*ð3ð ð3ð ð3ð 
ó3ðjG #ð G°ð G¸Sð GÀTó Gð¨#ð °$ó ñ, ¨H°S©Mð  ÀTó  ðDF¨°$©ð F¸sð FÀtó Fð!¨cð !°dó !ðJ $(Ø#'Ø&*Ø#'Ø"Ø.2Ø#(Ø-1ñ"6à˜C‘=ð"6ð ˜C‘=ð"6ð ˜s‘mð	"6ð
 �xÑ ð"6ð �s‰mð"6ð !  c¡Ñ+ð"6ð !ð"6ð ! Ñ*ð"6ð 
ó"6ñHÀ#ð ÐQUó ñ.°3ð À$÷ r   rD   )NN)%rQ   Ú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>r2     s¥   ðÛ Ý Ý ß @× @ç :Ý 8ß 8Ý -ã ÷õ ð )Ð ð$˜ó $ð DHñ
Ø˜‰}ð
Ø3;¸C±=ð
àó
ð#¨ð #°ó #ð.%°hð %À4ó %ôwÐ6Ð8Kõ wr   