U
    di^                     @   sB   d dl mZmZmZ d dlmZ edddZeedddZ	d	S )
   )
AgentAudio
AgentImage	AgentText)
ReactAgent)step_logc                 c   s   zddl m} W n tk
r,   tdY nX | drJ|d| d dV  | dr| d d d	k}| d d
 }|rd| d}|ddd| d d  it|dV  | dr|dd| d  ddV  | dr|dt| d ddidV  d S )N    ChatMessage<Gradio should be installed in order to launch a gradio demo.Z	rationale	assistantrolecontentZ	tool_callZ	tool_namezcode interpreterZtool_argumentsz```py

```titleu   🛠️ Used tool )r   metadatar   Zobservationz```
erroru
   💥 Error)r   r   r   )gradior	   ImportErrorgetstr)r   r	   Z	used_coder    r   B/tmp/pip-unpacked-wheel-bm_b0l5e/transformers/agents/monitoring.pypull_message   s0    




r   )agenttaskc                 k   s   zddl m} W n tk
r,   tdY nX | j|fddi|D ]"}t|trDt|D ]
}|V  qZqDt|tr|dd|  dd	V  nZt|t	r|d| d
dd	V  n6t|t
r|d| ddd	V  n|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   r
   streamTr   z**Final answer:**
```
r   r   z	image/png)pathZ	mime_typez	audio/wavN)r   r	   r   run
isinstancedictr   r   Z	to_stringr   r   r   )r   r   kwargsr	   r   messager   r   r   stream_to_gradio1   s*    






r#   N)
Zagent_typesr   r   r   Zagentsr   r    r   r   r#   r   r   r   r   <module>   s   