o
    hL                     @   sd   d dl mZ ddlmZmZmZ eeZdde	de
fddZdd
ede
fddZG dd dZdS )   )logging   )
AgentAudio
AgentImage	AgentTextTstep_log	test_modec                 c   s   zddl m} W n ty    |rG dd d}ntdY nw | dr/|d| d dV  | d	r]| d	 d
 dk}| d	 d }|rJd| d}|ddd| d	 d
  it|dV  | dro|dd| d  ddV  | dr|dt| d ddidV  d S d S )N    ChatMessagec                   @      e Zd ZdddZdS )z!pull_message.<locals>.ChatMessageNc                 S      || _ || _|| _d S Nrolecontentmetadataselfr   r   r    r   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/transformers/agents/monitoring.py__init__      
z*pull_message.<locals>.ChatMessage.__init__r   __name__
__module____qualname__r   r   r   r   r   r          r   <Gradio should be installed in order to launch a gradio demo.	rationale	assistantr   r   	tool_call	tool_namezcode interpretertool_argumentsz```py

```titleu   🛠️ Used tool )r   r   r   observationz```
erroru
   💥 Errorr   )gradior   ImportErrorgetstr)r   r   r   	used_coder   r   r   r   pull_message   s<   




r.   Ftaskc                 k   s   zddl m} W n ty    |rG dd d}ntdY nw | j|fddi|D ]}t|tr?t||dD ]}|V  q9q,|}t|trV|d	d
|  ddV  dS t|t	ri|d	| dddV  dS t|t
r||d	| dddV  dS |d	t|dV  dS )zaRuns an agent with the given task and streams the messages from the agent as gradio ChatMessages.r	   r
   c                   @   r   )z%stream_to_gradio.<locals>.ChatMessageNc                 S   r   r   r   r   r   r   r   r   E   r   z.stream_to_gradio.<locals>.ChatMessage.__init__r   r   r   r   r   r   r   D   r   r   r   streamT)r   r    z**Final answer:**
```
r%   r!   z	image/png)path	mime_typez	audio/wavN)r)   r   r*   run
isinstancedictr.   r   	to_stringr   r   r,   )agentr/   r   kwargsr   r   messagefinal_answerr   r   r   stream_to_gradio<   s8   



r;   c                   @   s   e Zd Zdd Zdd ZdS )Monitorc                 C   s2   g | _ || _t| jdddkrd| _d| _d S d S )Nlast_input_token_countz	Not foundr	   )step_durationstracked_llm_enginegetattrtotal_input_token_counttotal_output_token_count)r   r?   r   r   r   r   d   s   
zMonitor.__init__c                 C   s   |d }| j | tdt| j  d td|dd t| jdd d urO|  j| jj7  _|  j	| jj
7  _	td| j  td	| j	  d S d S )
Nstep_durationzStep :z- Time taken: z.2fz' seconds (valid only if step succeeded)r=   z- Input tokens: z- Output tokens: )r>   appendloggerinfolenr@   r?   rA   r=   rB   last_output_token_count)r   r   rC   r   r   r   update_metricsk   s   zMonitor.update_metricsN)r   r   r   r   rJ   r   r   r   r   r<   c   s    r<   N)T)F)utilsr   agent_typesr   r   r   
get_loggerr   rF   r5   boolr.   r,   r;   r<   r   r   r   r   <module>   s   
$'