Ë
    ‚3fiÓ1  ã                  ó  — d Z ddlmZ ddlZddlmZ ddl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 dd	lmZ dd
lmZmZmZmZmZ er
ddlZddlmZ  ej<                  e«      Z dd„Z!	 	 d	 	 	 	 	 	 	 dd„Z" G d„ dee«      Z#y)zFlyteKit callback handler.é    )ÚannotationsN)Údeepcopy)ÚTYPE_CHECKINGÚAnyÚDictÚListÚTuple)ÚAgentActionÚAgentFinish)ÚBaseCallbackHandler)Ú	LLMResult)Úguard_import)ÚBaseMetadataCallbackHandlerÚflatten_dictÚimport_pandasÚimport_spacyÚimport_textstat)Úrendererc                 óF   — t        d«      t        dd¬«      j                  fS )z2Import flytekit and flytekitplugins-deck-standard.Úflytekitzflytekitplugins.deckzflytekitplugins-deck-standard)Úpip_name)r   r   © ó    új/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/callbacks/flyte_callback.pyÚimport_flytekitr      s)   € ô 	ZÓ ÜØ"Ð-Lô	
ç
‰(ð	ð r   c                ó  — i }||j                  | «      |j                  | «      |j                  | «      |j                  | «      |j	                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      |j                  | «      dœ}|j                  d|i«       |j                  |«       |ft!        «       } || «      }|j"                  j%                  |ddd¬«      }|j"                  j%                  |ddd¬«      }||dœ}	|j                  |	«       |S )	a0  Analyze text using textstat and spacy.

    Parameters:
        text (str): The text to analyze.
        nlp (spacy.lang): The spacy language model to use for visualization.

    Returns:
        `dict` containing the complexity metrics and visualization
            files serialized to HTML string.
    )Ú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Úfernandez_huertaÚszigriszt_pazosÚgutierrez_poliniÚcrawfordÚgulpease_indexÚosmanÚtext_complexity_metricsÚdepFT)ÚstyleÚjupyterÚpageÚent)Údependency_treeÚentities)r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úupdater   ÚdisplacyÚrender)
ÚtextÚnlpÚtextstatÚrespr,   ÚspacyÚdocÚdep_outÚent_outÚtext_visualizationss
             r   Úanalyze_textr@   '   s|  € ð €DØÑà#+×#?Ñ#?ÀÓ#EØ$,×$AÑ$AÀ$Ó$GØ"×-Ñ-¨dÓ3Ø"*×"=Ñ"=¸dÓ"CØ+3×+OÑ+OÐPTÓ+UØ,4×,QÑ,QÐRVÓ,WØ'×7Ñ7¸Ó=Ø%-×%CÑ%CÀDÓ%IØ#×/Ñ/°Ó5Ø (× 9Ñ 9¸$Ó ?Ø'×7Ñ7¸Ó=Ø (× 9Ñ 9¸$Ó ?Ø ×)Ñ)¨$Ó/Ø&×5Ñ5°dÓ;Ø—^‘^ DÓ)ñ#
Ðð" 	‰Ð.Ð0GÐHÔIØ‰Ð+Ô,à
€Ü“ˆÙ$‹iˆØ—.‘.×'Ñ'¨°5À%ÈdÐ'ÓSˆØ—.‘.×'Ñ'¨°5À%ÈdÐ'ÓSˆà&Øñ
Ðð 	‰Ð'Ô(à€Kr   c                  ó¼   ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Z	dd„Z
dd	„Z	 	 	 	 	 	 	 	 dd
„Zdd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )ÚFlyteCallbackHandlerz2Callback handler that is used within a Flyte task.c                óh  •— t        «       \  }}t        «       | _        d| _        	 t	        «       | _        d}	 t        «       }t        ‰| )  «        d| _        |r	 |j                  d«      | _        |j                  | _        |j                   | _         |j$                  d| j#                  «       j'                  d«      «      | _        y# t
        $ r t        j                  d«       Y Œ³w xY w# t
        $ r t        j                  d«       Y ŒÊw xY w# t        $ r t        j                  d«       Y ŒÀw xY w)zInitialize callback handler.NzœTextstat library is not installed.                 It may result in the inability to log                 certain metrics that can be captured with Textstat.z–Spacy library is not installed.                 It may result in the inability to log                 certain metrics that can be captured with Spacy.Úen_core_web_smz®FlyteCallbackHandler uses spacy's en_core_web_sm model for certain metrics. To download, run the following command in your terminal: `python -m spacy download en_core_web_sm`zLangChain Metricsz## LangChain Metrics)r   r   Úpandasr9   r   ÚImportErrorÚloggerÚwarningr   ÚsuperÚ__init__r8   ÚloadÚOSErrorÚTableRendererÚtable_rendererÚMarkdownRendererÚmarkdown_rendererÚDeckÚto_htmlÚdeck)Úselfr   r   r;   Ú	__class__s       €r   rJ   zFlyteCallbackHandler.__init__]   s"  ø€ ä,Ó.Ñˆ(Ü#“oˆŒàˆŒð	Ü+Ó-ˆDŒMð ˆð	Ü “NˆEô 	‰ÑÔàˆŒÙðØ Ÿ:™:Ð&6Ó7”ð '×4Ñ4ˆÔØ!)×!:Ñ!:ˆÔà!H—M‘MØØ×"Ñ"Ó$×,Ñ,Ð-CÓDó
ˆ	øôE ò 	ÜN‰NðEöð	ûô ò 	ÜN‰NðBöð	ûô ò Ü—‘ðAöðús4   ¦C ¸
C, ÁD ÃC)Ã(C)Ã,DÄDÄD1Ä0D1c                ó’  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  ddi«       |j                  t	        |«      «       |j                  | j                  «       «       g }|D ]  }|j                  |«       Œ |j                  d|i«       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)zRun when LLM starts.é   ÚactionÚon_llm_startÚpromptsz### LLM StartÚ
N)ÚstepÚ
llm_startsÚstartsr4   r   Úget_custom_callback_metaÚappendrS   rP   rR   rN   rE   Ú	DataFrame)rT   Ú
serializedrZ   Úkwargsr:   Úprompt_responsesÚprompts          r   rY   z!FlyteCallbackHandler.on_llm_startŒ   s  € ð
 		Š	Q‰	ØŠ˜1ÑØŠqÑà!ˆØ‰X˜~Ð.Ô/Ø‰”L Ó,Ô-Ø‰D×1Ñ1Ó3Ô4àÐØò 	,ˆFØ×#Ñ# FÕ+ð	,ð 	‰YÐ 0Ð1Ô2à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9¸/ÓJÔKØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   c                 ó   — y)z#Run when LLM generates a new token.Nr   )rT   Útokenrc   s      r   Úon_llm_new_tokenz%FlyteCallbackHandler.on_llm_new_token¥   s    r   c           	     ó(  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  ddi«       |j                  t	        |j
                  xs i «      «       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      «       |j                  D ]]  }|D ]T  }t        |«      }|j                  t	        |j!                  «       «      «       | j"                  s| j$                  r‹|j                  t'        |j(                  | j"                  | j$                  ¬«      «       |j+                  d«      }| j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       |d	   }| j                  j                  | j                  «       j                  d
«      «       | j                  j                  |«       |d   }	| j                  j                  | j                  «       j                  d«      «       | j                  j                  |	«       ŒÛ| j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  |j(                  «      «       ŒW Œ` y)zRun when LLM ends running.rW   rX   Ú
on_llm_endz### LLM End)r8   r9   r,   z#### Text Complexity Metricsr[   r2   z#### Dependency Treer3   z#### Entitiesz#### Generated ResponseN)r\   Úllm_endsÚendsr4   r   Ú
llm_outputr_   rS   r`   rP   rR   rN   rE   ra   Úgenerationsr   Údictr8   r9   r@   r7   Úpop)
rT   Úresponserc   r:   rn   Ú
generationÚgeneration_respÚcomplexity_metricsr2   r3   s
             r   rj   zFlyteCallbackHandler.on_llm_end¨   sÁ  € à	Š	Q‰	ØŠ˜ÑØ	Š	Q‰	à!ˆØ‰X˜|Ð,Ô-Ø‰”L ×!4Ñ!4Ò!:¸Ó;Ô<Ø‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9¸-ÓHÔIØ	‰	×Ñ˜×,Ñ,Ó.×6Ñ6°t·{±{×7LÑ7LÈdÈVÓ7TÓUÔVà#×/Ñ/ó %	XˆKØ)ó $X
Ü"*¨4£.Ø×&Ñ&¤|°J·O±OÓ4EÓ'FÔGØ—8’8˜tŸ}›}Ø#×*Ñ*Ü$Ø&ŸO™O°·±ÀDÇMÁMôôð <K×;NÑ;NØ1ó<Ð&ð —I‘I×$Ñ$Ø×.Ñ.Ó0×8Ñ8Ð9WÓXôð —I‘I×$Ñ$Ø×+Ñ+Ó-×5Ñ5Ø ŸK™K×1Ñ1Ð3EÐ2FÓGóð ñôð '6Ð6GÑ&HOØ—I‘I×$Ñ$Ø×.Ñ.Ó0×8Ñ8Ð9OÓPôð —I‘I×$Ñ$ _Ô5à.¨zÑ:HØ—I‘I×$Ñ$ T×%;Ñ%;Ó%=×%EÑ%EÀoÓ%VÔWØ—I‘I×$Ñ$ XÖ.à—I‘I×$Ñ$Ø×.Ñ.Ó0×8Ñ8Ð9RÓSôð —I‘I×$Ñ$ T×%;Ñ%;Ó%=×%EÑ%EÀjÇoÁoÓ%VÖWòI$Xñ%	Xr   c                óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when LLM errors.rW   N©r\   Úerrors©rT   Úerrorrc   s      r   Úon_llm_errorz!FlyteCallbackHandler.on_llm_errorÝ   ó   € à	Š	Q‰	ØŠqÑŽr   c           	     óÒ  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  ddi«       |j                  t	        |«      «       |j                  | j                  «       «       dj                  |j                  «       D cg c]  \  }}|› d|› ‘Œ c}}«      }t        |«      }||d<   | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y	c c}}w )
zRun when chain starts running.rW   rX   Úon_chain_startú,ú=Úinputsz### Chain Startr[   N)r\   Úchain_startsr^   r4   r   r_   ÚjoinÚitemsr   rS   r`   rP   rR   rN   rE   ra   )	rT   rb   r€   rc   r:   ÚkÚvÚchain_inputÚ
input_resps	            r   r}   z#FlyteCallbackHandler.on_chain_startâ   s  € ð 		Š	Q‰	Ø×Ò˜QÑÕØŠqÑà!ˆØ‰XÐ/Ð0Ô1Ø‰”L Ó,Ô-Ø‰D×1Ñ1Ó3Ô4à—h‘h°v·|±|³~×F©t¨q°! 1 # Q q c¢
ÓFÓGˆÜ˜d“^ˆ
Ø*ˆ
8Ñà	‰	×Ñ˜×/Ñ/Ó1×9Ñ9Ð:KÓLÔMØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*MÓNÐQUÑUõ	
ùó  Gs   Â,E#
c           	     ó€  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }dj                  |j	                  «       D cg c]  \  }}|› d|› ‘Œ c}}«      }|j                  d|dœ«       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       yc c}}w )	zRun when chain ends running.rW   r~   r   Úon_chain_end)rX   Úoutputsz### Chain Endr[   N)r\   Ú
chain_endsrl   r‚   rƒ   r4   r_   rS   r`   rP   rR   rN   rE   ra   )rT   rŠ   rc   r:   r„   r…   Úchain_outputs          r   r‰   z!FlyteCallbackHandler.on_chain_endø   sí   € à	Š	Q‰	ØŠ˜1ÑØ	Š	Q‰	à!ˆØ—x‘x¸¿¹»× H±°°1 A 3 a¨ s¢Ó HÓIˆØ‰˜~¸,ÑGÔHØ‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9¸/ÓJÔKØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
ùó !Is   Á D:
c                óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when chain errors.rW   Nrv   rx   s      r   Úon_chain_errorz#FlyteCallbackHandler.on_chain_error  r{   r   c                ó:  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  d|dœ«       |j                  t	        |«      «       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)zRun when tool starts running.rW   Úon_tool_start)rX   Ú	input_strz### Tool Startr[   N)r\   Útool_startsr^   r4   r   r_   rS   r`   rP   rR   rN   rE   ra   )rT   rb   r‘   rc   r:   s        r   r   z"FlyteCallbackHandler.on_tool_start  sÒ   € ð 		Š	Q‰	Ø×Ò˜AÑÕØŠqÑà!ˆØ‰˜¸YÑGÔHØ‰”L Ó,Ô-Ø‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9Ð:JÓKÔLØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   c                ó  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  d|dœ«       |j                  | j	                  «       «       | j
                  j                  | j                  «       j                  d«      «       | j
                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)zRun when tool ends running.rW   Úon_tool_end)rX   Úoutputz### Tool Endr[   N)r\   Ú	tool_endsrl   r4   r_   rS   r`   rP   rR   rN   rE   ra   )rT   r•   rc   r:   s       r   r”   z FlyteCallbackHandler.on_tool_end  sº   € à	Š	Q‰	ØŠ˜!ÑØ	Š	Q‰	à!ˆØ‰˜}¸Ñ?Ô@Ø‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9¸.ÓIÔJØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   c                óX   — | xj                   dz  c_         | xj                  dz  c_        y)zRun when tool errors.rW   Nrv   rx   s      r   Úon_tool_errorz"FlyteCallbackHandler.on_tool_error.  r{   r   c                óÜ  — | xj                   dz  c_         | xj                  dz  c_        i }|j                  d|dœ«       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)z+
        Run when agent is ending.
        rW   Úon_text)rX   r7   z### On Textr[   N)r\   Útext_ctrr4   r_   rS   r`   rP   rR   rN   rE   ra   )rT   r7   rc   r:   s       r   rš   zFlyteCallbackHandler.on_text3  s¯   € ð 		Š	Q‰	ØŠ˜Ñà!ˆØ‰˜y°$Ñ7Ô8Ø‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9¸-ÓHÔIØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   c                ó6  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  d|j                  d   |j
                  dœ«       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)zRun when agent ends running.rW   Úon_agent_finishr•   )rX   r•   Úlogz### Agent Finishr[   N)r\   Ú
agent_endsrl   r4   Úreturn_valuesrž   r_   rS   r`   rP   rR   rN   rE   ra   )rT   Úfinishrc   r:   s       r   r   z$FlyteCallbackHandler.on_agent_finishC  sÕ   € à	Š	Q‰	ØŠ˜1ÑØ	Š	Q‰	à!ˆØ‰à+Ø ×.Ñ.¨xÑ8Ø—z‘zñô	
ð 	‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9Ð:LÓMÔNØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   c                óF  — | xj                   dz  c_         | xj                  dz  c_        | xj                  dz  c_        i }|j                  d|j                  |j
                  |j                  dœ«       |j                  | j                  «       «       | j                  j                  | j                  «       j                  d«      «       | j                  j                  | j                  «       j                  | j                  j                  |g«      «      dz   «       y)zRun on agent action.rW   Úon_agent_action)rX   ÚtoolÚ
tool_inputrž   z### Agent Actionr[   N)r\   r’   r^   r4   r¤   r¥   rž   r_   rS   r`   rP   rR   rN   rE   ra   )rT   rX   rc   r:   s       r   r£   z$FlyteCallbackHandler.on_agent_actionX  sÛ   € à	Š	Q‰	Ø×Ò˜AÑÕØŠqÑà!ˆØ‰à+ØŸ™Ø$×/Ñ/Ø—z‘zñ	ô	
ð 	‰D×1Ñ1Ó3Ô4à	‰	×Ñ˜×/Ñ/Ó1×9Ñ9Ð:LÓMÔNØ	‰	×ÑØ×ÑÓ!×)Ñ)¨$¯+©+×*?Ñ*?ÀÀÓ*GÓHÈ4ÑOõ	
r   )ÚreturnÚNone)rb   úDict[str, Any]rZ   z	List[str]rc   r   r¦   r§   )rg   Ústrrc   r   r¦   r§   )rq   r   rc   r   r¦   r§   )ry   ÚBaseExceptionrc   r   r¦   r§   )rb   r¨   r€   r¨   rc   r   r¦   r§   )rŠ   r¨   rc   r   r¦   r§   )rb   r¨   r‘   r©   rc   r   r¦   r§   )r•   r©   rc   r   r¦   r§   )r7   r©   rc   r   r¦   r§   )r¡   r   rc   r   r¦   r§   )rX   r
   rc   r   r¦   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   rY   rh   rj   rz   r}   r‰   rŽ   r   r”   r˜   rš   r   r£   Ú__classcell__)rU   s   @r   rB   rB   Z   s¯   ø„ Ù<õ-
ð^
Ø(ð
Ø3<ð
ØHKð
à	ó
ó22ó3Xójð

Ø(ð
Ø2@ð
ØLOð
à	ó
ó,
ó ð

Ø(ð
Ø58ð
ØDGð
à	ó
ó$
óó

ó 
÷*
r   rB   )r¦   zTuple[flytekit, renderer])NN)r7   r©   r8   r   r9   r   r¦   ro   )$r®   Ú
__future__r   ÚloggingÚcopyr   Útypingr   r   r   r   r	   Úlangchain_core.agentsr
   r   Úlangchain_core.callbacksr   Úlangchain_core.outputsr   Úlangchain_core.utilsr   Ú#langchain_community.callbacks.utilsr   r   r   r   r   r   Úflytekitplugins.deckr   Ú	getLoggerr«   rG   r   r@   rB   r   r   r   ú<module>r»      s“   ðÙ  å "ã Ý ß 8Õ 8ç :Ý 8Ý ,Ý -÷õ ñ ÛÝ-à	ˆ×	Ñ	˜8Ó	$€óð Øð0Ø
ð0à	ð0ð ð0ð 
ó	0ôfR
Ð6Ð8Kõ R
r   