o
    .if
                     @   s\   d 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 G dd deZdS )	'Callback Handler that writes to a file.    )AnyDictOptionalTextIOcast)AgentActionAgentFinish)
print_text)BaseCallbackHandlerc                   @   s$  e Zd ZdZ	d$dededee ddfdd	Zd%d
dZdeee	f deee	f de	ddfddZ
deee	f de	ddfddZ	d&dedee de	de	fddZ			d'dedee dee dee de	ddfddZ	d(dedee dede	ddf
dd Z	d&d!edee de	ddfd"d#ZdS ))FileCallbackHandlerr   aNfilenamemodecolorreturnc                 C   s    t tt||dd| _|| _dS )zInitialize callback handler.zutf-8)encodingN)r   r   openfiler   )selfr   r   r    r   Q/var/www/html/corbot_env/lib/python3.10/site-packages/langchain/callbacks/file.py__init__   s   
zFileCallbackHandler.__init__c                 C   s   | j   dS )z Destructor to cleanup when done.N)r   close)r   r   r   r   __del__   s   zFileCallbackHandler.__del__
serializedinputskwargsc                 K   s6   | d| ddgd }td| dd| jd d	S )
z'Print out that we are entering a chain.nameidz	<unknown>z

[1m> Entering new z chain...[0m
endr   N)getr
   r   )r   r   r   r   
class_namer   r   r   on_chain_start   s   

z"FileCallbackHandler.on_chain_startoutputsc                 K   s   t dd| jd dS )z#Print out that we finished a chain.z
[1m> Finished chain.[0mr!   r"   N)r
   r   )r   r'   r   r   r   r   on_chain_end#   s   z FileCallbackHandler.on_chain_endactionc                 K   s   t |j|p| j| jd dS )zRun on agent action.r   r   Nr
   logr   r   )r   r)   r   r   r   r   r   on_agent_action'      z#FileCallbackHandler.on_agent_actionoutputobservation_prefix
llm_prefixc                 K   sV   |durt d| | jd t ||p| j| jd |dur)t d| | jd dS dS )z/If not the final action, print out observation.Nr!   )r   r*   )r
   r   r   )r   r/   r   r0   r1   r   r   r   r   on_tool_end-   s   	zFileCallbackHandler.on_tool_end textr#   c                 K   s   t ||p| j|| jd dS )zRun when agent ends.r   r#   r   N)r
   r   r   )r   r4   r   r#   r   r   r   r   on_text<   r.   zFileCallbackHandler.on_textfinishc                 K   s   t |j|p| jd| jd dS )zRun on agent end.r!   r5   Nr+   )r   r7   r   r   r   r   r   on_agent_finishB   s   z#FileCallbackHandler.on_agent_finish)r   N)r   N)N)NNN)Nr3   )__name__
__module____qualname____doc__strr   r   r   r   r   r&   r(   r   r-   r2   r6   r	   r8   r   r   r   r   r   
   s    





	

r   N)r<   typingr   r   r   r   r   langchain_core.agentsr   r	   langchain_core.utils.inputr
   langchain.callbacks.baser   r   r   r   r   r   <module>   s    