
    .h0                       d dl mZ d dl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mZmZmZmZmZmZ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$ e G d d                      Z% G d d          Z&dS )    )annotations)AsyncIterator)	dataclassfield)AsyncStream)ChatCompletionChunk)CompletionUsage)ResponseResponseCompletedEventResponseContentPartAddedEventResponseContentPartDoneEventResponseCreatedEvent'ResponseFunctionCallArgumentsDeltaEventResponseFunctionToolCallResponseOutputItemResponseOutputItemAddedEventResponseOutputItemDoneEventResponseOutputMessageResponseOutputRefusalResponseOutputTextResponseRefusalDeltaEventResponseTextDeltaEventResponseUsage)InputTokensDetailsOutputTokensDetails   )TResponseStreamEvent   )FAKE_RESPONSES_IDc                  \    e Zd ZU dZded<   dZded<   dZded<    ee	          Z	d
ed<   dS )StreamingStateFboolstartedNz%tuple[int, ResponseOutputText] | Nonetext_content_index_and_outputz(tuple[int, ResponseOutputRefusal] | None refusal_content_index_and_output)default_factoryz#dict[int, ResponseFunctionToolCall]function_calls)
__name__
__module____qualname__r#   __annotations__r$   r%   r   dictr'        b/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/agents/models/chatcmpl_stream_handler.pyr!   r!   !   sf         GKO!OOOOQU$UUUU:?%PT:U:U:UNUUUUUUr.   r!   c                  &    e Zd Zed	d            ZdS )
ChatCmplStreamHandlerresponser
   stream AsyncStream[ChatCompletionChunk]return#AsyncIterator[TResponseStreamEvent]c                 K   d }t                      }|2 3 d {V }|j        sd|_        t          |d          W V  t          |d          r|j        nd }|j        r|j        d         j        s\|j        d         j        }|j        r|j        s|j	        sdndt          ddg 	          f|_        t          t          g d
dd          }t          |dd          W V  t          |j        d         t          dt          ddg 	          d          W V  t          |j        d         |j        t          dd          W V  |j        d         xj        |j        z  c_        t          |d          r|j        r|j	        s|j        sdndt%          dd          f|_	        t          t          g d
dd          }t          |dd          W V  t          |j	        d         t          dt          ddg 	          d          W V  t'          |j	        d         |j        t          dd          W V  |j	        d         xj        |j        z  c_        |j        r|j        D ]}|j        |j        vr&t/          t          dddd          |j        |j        <   |j        }	|j        |j                 xj        |	r|	j        ndpdz  c_        |j        |j                 xj        |	r|	j        ndpdz  c_        |j        |j                 xj        |j        pdz  c_        
6 d}
|j        r7|
dz  }
t;          |j        d         t          d|j        d         d          W V  |j	        r7|
dz  }
t;          |j	        d         t          d|j	        d         d          W V  |j                                        D ]}t          t/          t          |j        |j        |j        d          |
d          W V  t?          |j        t          |
d          W V  tA          t/          t          |j        |j        |j        d          |
d          W V  g }|j        s|j	        rt          t          g d
dd          }|j        r%|j        !                    |j        d                    |j	        r%|j        !                    |j	        d                    |!                    |           tA          |dd          W V  |j                                        D ]}|!                    |           |"                                }||_#        |r}tI          |j%        |j&        |j'        tQ          |j)        r|j)        j*        r|j)        j*        nd          tW          |j,        r|j,        j-        r|j,        j-        nd           !          nd |_        t]          |d"          W V  d S )#NTzresponse.created)r2   typeusager   r    output_text)textr8   r   	assistantmessagein_progress)idcontentroler8   statuszresponse.output_item.added)itemoutput_indexr8   zresponse.content_part.added)content_indexitem_idrE   partr8   zresponse.output_text.delta)rF   deltarG   rE   r8   refusal)rJ   r8   zresponse.refusal.deltafunction_call)r@   	argumentsnamer8   call_idzresponse.content_part.done)r@   rN   rL   rM   r8   z&response.function_call_arguments.delta)rI   rG   rE   r8   zresponse.output_item.done	completed)reasoning_tokens)cached_tokens)input_tokensoutput_tokenstotal_tokensoutput_tokens_detailsinput_tokens_detailszresponse.completed)/r!   r#   r   hasattrr9   choicesrI   rA   r$   r%   r   r   r   r   r   r   r<   rJ   r   r   
tool_callsindexr'   r   functionrL   rM   rN   r@   r   valuesr   r   append
model_copyoutputr   prompt_tokenscompletion_tokensrT   r   completion_tokens_detailsrP   r   prompt_tokens_detailsrQ   r   )clsr2   r3   r9   statechunkrI   assistant_itemtc_deltatc_functionfunction_call_starting_indexrK   outputsassistant_msgfinal_responses                  r/   handle_streamz#ChatCmplStreamHandler.handle_stream*   s      )-  ! B	V B	V B	V B	V B	V B	V B	V%=  $*%+       $+5'#:#:DEKKE= a(8(> M!$*E } -M: " "'!GNQ*!#!.(*  ;E7 &;, "(&,& & &N 7+%&9      
 8&+&I!&L 1%&/!#!.(*  
 ;
 
 
 
 
 
 
 -"'"Ea"H--!"5       3A6;;u}L;; ui(( )SU] )S=  "'!DK!-byIII>E:
 &;, "(&,& & &N 7+%&9      
 8&+&LQ&O 1%&/!#!.(*  
 ;
 
 
 
 
 
 
 0"'"H"K--!"1       6q9AAU]RAA
  V % 0 V VH~U-AAA?W0&(!#!0$&@ @ @,X^< #+"3K(8BB1<D--"GBB (8==,7?((RB== (8@@HKDUSUU@@@E "H ()$. 		(A-(.#A!D)8;1       1 		(A-(.#DQG);A>1       #188:: 	 	M.-()1+5&+(   :1
 
 
 
 
 
 
 :#-)9=	       .-()1+5&+(   :0
 
 
 
 
 
 
 
 -/. 	%2X 	1$ "  M 2 U%,,U-PQR-STTT5 X%,,U-STU-VWWWNN=))) ."0       #188:: 	* 	*MNN=))))!,,.. '$ !M"0#5"/&96&7H&U%D%U%U 	' ' ' &82#7<7R7`#%"="K"K& & &   " % 	* %#%
 
 
 	
 	
 	
 	
 	
 	
s   LN)r2   r
   r3   r4   r5   r6   )r(   r)   r*   classmethodrn   r-   r.   r/   r1   r1   )   s8        y
 y
 y
 [y
 y
 y
r.   r1   N)'
__future__r   collections.abcr   dataclassesr   r   openair   openai.types.chatr   openai.types.completion_usager	   openai.types.responsesr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   %openai.types.responses.response_usager   r   itemsr   fake_idr   r!   r1   r-   r.   r/   <module>rz      s   " " " " " " ) ) ) ) ) ) ( ( ( ( ( ( ( (       1 1 1 1 1 1 9 9 9 9 9 9                                   $ Z Y Y Y Y Y Y Y ( ( ( ( ( ( & & & & & & V V V V V V V V{
 {
 {
 {
 {
 {
 {
 {
 {
 {
r.   