o
    Zh_	                     @  sd   d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ G dd deZdS )    )annotationsN)AnyAsyncIteratorDictListLiteralUnioncast)AsyncCallbackHandler)	LLMResultc                   @  sl   e Zd ZU dZded< ded< ed%dd	Zd&ddZd'ddZd(ddZ	d)ddZ
d*dd Zd+d"d#Zd$S ),AsyncIteratorCallbackHandlerz0Callback handler that returns an async iterator.zasyncio.Queue[str]queuezasyncio.Eventdonereturnboolc                 C  s   dS )NT selfr   r   Z/var/www/html/lang_env/lib/python3.10/site-packages/langchain/callbacks/streaming_aiter.pyalways_verbose   s   z+AsyncIteratorCallbackHandler.always_verboseNonec                 C  s   t  | _t  | _d S N)asyncioQueuer   Eventr   r   r   r   r   __init__   s   
z%AsyncIteratorCallbackHandler.__init__
serializedDict[str, Any]prompts	List[str]kwargsr   c                      | j   d S r   )r   clear)r   r   r   r    r   r   r   on_llm_start   s   z)AsyncIteratorCallbackHandler.on_llm_starttokenstrc                   s*   |d ur|dkr| j | d S d S d S )N )r   
put_nowait)r   r$   r    r   r   r   on_llm_new_token!   s   z-AsyncIteratorCallbackHandler.on_llm_new_tokenresponser   c                   r!   r   r   set)r   r)   r    r   r   r   
on_llm_end%      z'AsyncIteratorCallbackHandler.on_llm_enderrorBaseExceptionc                   r!   r   r*   )r   r.   r    r   r   r   on_llm_error(   r-   z)AsyncIteratorCallbackHandler.on_llm_errorAsyncIterator[str]c                 C s   | j  r| j sRtjt| j  t| j gtjdI d H \}}|r.|	 
  ttttd f |	  }|du rCd S |V  | j  r| j rd S d S )N)return_whenT)r   emptyr   is_setr   waitensure_futuregetFIRST_COMPLETEDpopcancelr	   r   r%   r   result)r   r   otherZtoken_or_doner   r   r   aiter-   s   z"AsyncIteratorCallbackHandler.aiterN)r   r   )r   r   )r   r   r   r   r    r   r   r   )r$   r%   r    r   r   r   )r)   r   r    r   r   r   )r.   r/   r    r   r   r   )r   r1   )__name__
__module____qualname____doc____annotations__propertyr   r   r#   r(   r,   r0   r=   r   r   r   r   r      s   
 




r   )
__future__r   r   typingr   r   r   r   r   r   r	   Zlangchain_core.callbacksr
   Zlangchain_core.outputsr   r   r   r   r   r   <module>   s    $