§
    Ý
@g q  ã                  óp  — d dl mZ d dl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 d dlmZmZmZ d dlmZ ddlmZmZ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$ d
dl%m&Z& ddlm'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZI ddlJmKZL  G d„ dee4         ¦  «        ZM G d„ dee4         ¦  «        ZN G d„ dee4         ¦  «        ZO G d„ d ee4         ¦  «        ZP G d!„ d"ee4         ¦  «        ZQ G d#„ d$¦  «        ZRd*d)„ZSdS )+é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚGenericÚCallableÚIterableÚ	AwaitableÚAsyncIteratorÚcast)ÚSelfÚIteratorÚassert_never)Ú	from_jsoné   )ÚParsedChoiceSnapshotÚParsedChatCompletionSnapshotÚ#ParsedChatCompletionMessageSnapshot)Ú
ChunkEventÚContentDoneEventÚRefusalDoneEventÚContentDeltaEventÚRefusalDeltaEventÚLogprobsContentDoneEventÚLogprobsRefusalDoneEventÚChatCompletionStreamEventÚLogprobsContentDeltaEventÚLogprobsRefusalDeltaEventÚ"FunctionToolCallArgumentsDoneEventÚ#FunctionToolCallArgumentsDeltaEventé   )Úaccumulate_deltaé   )Ú	NOT_GIVENÚIncExÚNotGiven)Úis_givenÚconsume_sync_iteratorÚconsume_async_iterator)Ú
model_dump)ÚbuildÚconstruct_typeé   )ÚResponseFormatTÚhas_parseable_inputÚmaybe_parse_contentÚparse_chat_completionÚget_input_tool_by_nameÚsolve_response_format_tÚparse_function_tool_arguments)ÚStreamÚAsyncStream)ÚChatCompletionChunkÚParsedChatCompletionÚChatCompletionToolParam)ÚLengthFinishReasonErrorÚContentFilterFinishReasonError)ÚChoiceLogprobs)ÚChoice)ÚResponseFormatc                  ór   — e Zd ZdZd d
„Zd!d„Zd"d„Zd#d„Zd$d„Zd%d„Z	d&d„Z
d#d„Zed'd„¦   «         Zd"d„ZdS )(ÚChatCompletionStreamá+  Wrapper over the Chat Completions streaming API that adds helpful
    events such as `content.done`, supports automatically parsing
    responses & tool calls and accumulates a `ChatCompletion` object
    from each individual chunk.

    https://platform.openai.com/docs/api-reference/streaming
    Ú
raw_streamúStream[ChatCompletionChunk]Úresponse_formatú6type[ResponseFormatT] | ResponseFormatParam | NotGivenÚinput_toolsú,Iterable[ChatCompletionToolParam] | NotGivenÚreturnÚNonec               óŠ   — || _         |j        | _        |                      ¦   «         | _        t          ||¬¦  «        | _        d S ©N©rD   rF   ©Ú_raw_streamÚresponseÚ	_responseÚ
__stream__Ú	_iteratorÚChatCompletionStreamStateÚ_state©ÚselfrB   rD   rF   s       úZ/var/www/piapp/venv/lib/python3.11/site-packages/openai/lib/streaming/chat/_completions.pyÚ__init__zChatCompletionStream.__init__8   ó@   € ð &ˆÔØ#Ô,ˆŒØŸšÑ*Ô*ˆŒÝ/ÀÐ]hÐiÑiÔiˆŒˆˆó    ú*ChatCompletionStreamEvent[ResponseFormatT]c                ó4   — | j                              ¦   «         S ©N)rR   Ú__next__©rV   s    rW   r^   zChatCompletionStream.__next__D   s   € ØŒ~×&Ò&Ñ(Ô(Ð(rZ   ú4Iterator[ChatCompletionStreamEvent[ResponseFormatT]]c              #  ó&   K  — | j         D ]}|V — Œd S r]   ©rR   ©rV   Úitems     rW   Ú__iter__zChatCompletionStream.__iter__G   s,   è è € Ø”Nð 	ð 	ˆDØˆJˆJˆJˆJð	ð 	rZ   r   c                ó   — | S r]   © r_   s    rW   Ú	__enter__zChatCompletionStream.__enter__K   s   € ØˆrZ   Úexc_typeútype[BaseException] | NoneÚexcúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó.   — |                       ¦   «          d S r]   ©Úclose©rV   ri   rk   rm   s       rW   Ú__exit__zChatCompletionStream.__exit__N   s   € ð 	�
Š
‰ŒˆˆˆrZ   c                ó8   — | j                              ¦   «          dS ©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)rP   rq   r_   s    rW   rq   zChatCompletionStream.closeV   s   € ð 	Œ×ÒÑÔÐÐÐrZ   ú%ParsedChatCompletion[ResponseFormatT]c                ó\   — |                       ¦   «          | j                             ¦   «         S )áV  Waits until the stream has been read to completion and returns
        the accumulated `ParsedChatCompletion` object.

        If you passed a class type to `.stream()`, the `completion.choices[0].message.parsed`
        property will be the content deserialised into that class, if there was any content returned
        by the API.
        ©Ú
until_donerT   Úget_final_completionr_   s    rW   r{   z)ChatCompletionStream.get_final_completion^   s(   € ð 	�ŠÑÔÐØŒ{×/Ò/Ñ1Ô1Ð1rZ   c                ó$   — t          | ¦  «         | S )ú*Blocks until the stream has been consumed.)r(   r_   s    rW   rz   zChatCompletionStream.until_donei   s   € å˜dÑ#Ô#Ð#ØˆrZ   r   c                ó   — | j         j        S r]   ©rT   Úcurrent_completion_snapshotr_   s    rW   r€   z0ChatCompletionStream.current_completion_snapshotn   ó   € àŒ{Ô6Ð6rZ   c              #  ód   K  — | j         D ]%}| j                             |¦  «        }|D ]}|V — ŒŒ&d S r]   ©rN   rT   Úhandle_chunk©rV   Ú	sse_eventÚevents_to_fireÚevents       rW   rQ   zChatCompletionStream.__stream__r   sV   è è € ØÔ)ð 	ð 	ˆIØ!œ[×5Ò5°iÑ@Ô@ˆNØ'ð ð �Ø����ðð	ð 	rZ   N)rB   rC   rD   rE   rF   rG   rH   rI   ©rH   r[   )rH   r`   ©rH   r   ©ri   rj   rk   rl   rm   rn   rH   rI   ©rH   rI   ©rH   rv   ©rH   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rX   r^   re   rh   rs   rq   r{   rz   Úpropertyr€   rQ   rg   rZ   rW   r@   r@   /   sö   € € € € € ðð ð
jð 
jð 
jð 
jð)ð )ð )ð )ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð	2ð 	2ð 	2ð 	2ðð ð ð ð
 ð7ð 7ð 7ñ „Xð7ðð ð ð ð ð rZ   r@   c                  ó*   — e Zd ZdZdd
„Zdd„Zdd„ZdS )ÚChatCompletionStreamManageraK  Context manager over a `ChatCompletionStream` that is returned by `.stream()`.

    This context manager ensures the response cannot be leaked if you don't read
    the stream to completion.

    Usage:
    ```py
    with client.beta.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    Úapi_requestú)Callable[[], Stream[ChatCompletionChunk]]rD   rE   rF   rG   rH   rI   c               ó>   — d | _         || _        || _        || _        d S r]   )Ú$_ChatCompletionStreamManager__streamÚ)_ChatCompletionStreamManager__api_requestÚ-_ChatCompletionStreamManager__response_formatÚ)_ChatCompletionStreamManager__input_tools©rV   r–   rD   rF   s       rW   rX   z$ChatCompletionStreamManager.__init__‡   s+   € ð GKˆŒØ(ˆÔØ!0ˆÔØ(ˆÔÐÐrZ   ú%ChatCompletionStream[ResponseFormatT]c                óz   — |                       ¦   «         }t          || j        | j        ¬¦  «        | _        | j        S ©N)rB   rD   rF   )rš   r@   r›   rœ   r™   ©rV   rB   s     rW   rh   z%ChatCompletionStreamManager.__enter__“   sB   € Ø×'Ò'Ñ)Ô)ˆ
å,Ø!Ø Ô2ØÔ*ð
ñ 
ô 
ˆŒð Œ}ÐrZ   ri   rj   rk   rl   rm   rn   c                óJ   — | j         �| j                              ¦   «          d S d S r]   )r™   rq   rr   s       rW   rs   z$ChatCompletionStreamManager.__exit__ž   s.   € ð Œ=Ð$ØŒM×ÒÑ!Ô!Ð!Ð!Ð!ð %Ð$rZ   N)r–   r—   rD   rE   rF   rG   rH   rI   )rH   rž   r‹   )r�   r�   r‘   r’   rX   rh   rs   rg   rZ   rW   r•   r•   y   sZ   € € € € € ðð ð
)ð 
)ð 
)ð 
)ð	ð 	ð 	ð 	ð"ð "ð "ð "ð "ð "rZ   r•   c                  ór   — e Zd ZdZd d
„Zd!d„Zd"d„Zd#d„Zd$d„Zd%d„Z	d&d„Z
d#d„Zed'd„¦   «         Zd"d„ZdS )(ÚAsyncChatCompletionStreamrA   rB   ú AsyncStream[ChatCompletionChunk]rD   rE   rF   rG   rH   rI   c               óŠ   — || _         |j        | _        |                      ¦   «         | _        t          ||¬¦  «        | _        d S rK   rM   rU   s       rW   rX   z"AsyncChatCompletionStream.__init__±   rY   rZ   r[   c              ƒ  óD   K  — | j                              ¦   «         ƒ d {V —†S r]   )rR   Ú	__anext__r_   s    rW   r¨   z#AsyncChatCompletionStream.__anext__½   s,   è è € Ø”^×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/rZ   ú9AsyncIterator[ChatCompletionStreamEvent[ResponseFormatT]]c               ó4   K  — | j         2 3 d {V —†}|W V — Œ6 d S r]   rb   rc   s     rW   Ú	__aiter__z#AsyncChatCompletionStream.__aiter__À   sF   è è € Øœ.ð 	ð 	ð 	ð 	ð 	ð 	ð 	�$ØˆJˆJˆJˆJˆJð )˜.˜.s   Šr   c              ƒ  ó
   K  — | S r]   rg   r_   s    rW   Ú
__aenter__z$AsyncChatCompletionStream.__aenter__Ä   s   è è € ØˆrZ   ri   rj   rk   rl   rm   rn   c              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S r]   rp   rr   s       rW   Ú	__aexit__z#AsyncChatCompletionStream.__aexit__Ç   s.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐrZ   c              ƒ  óH   K  — | j                              ¦   «         ƒ d{V —† dS ru   )rP   Úacloser_   s    rW   rq   zAsyncChatCompletionStream.closeÏ   s4   è è € ð Œn×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%rZ   rv   c              ƒ  ól   K  — |                       ¦   «         ƒ d{V —† | j                             ¦   «         S )rx   Nry   r_   s    rW   r{   z.AsyncChatCompletionStream.get_final_completion×   s>   è è € ð �oŠoÑÔÐÐÐÐÐÐÐØŒ{×/Ò/Ñ1Ô1Ð1rZ   c              ƒ  ó4   K  — t          | ¦  «        ƒ d{V —† | S )r}   N)r)   r_   s    rW   rz   z$AsyncChatCompletionStream.until_doneâ   s+   è è € å$ TÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØˆrZ   r   c                ó   — | j         j        S r]   r   r_   s    rW   r€   z5AsyncChatCompletionStream.current_completion_snapshotç   r�   rZ   c               ór   K  — | j         2 3 d {V —†}| j                             |¦  «        }|D ]}|W V — ŒŒ,6 d S r]   rƒ   r…   s       rW   rQ   z$AsyncChatCompletionStream.__stream__ë   sr   è è € Ø#Ô/ð 	ð 	ð 	ð 	ð 	ð 	ð 	�)Ø!œ[×5Ò5°iÑ@Ô@ˆNØ'ð ð �Ø�����ðð  0Ð/Ð/s   Š6N)rB   r¥   rD   rE   rF   rG   rH   rI   r‰   )rH   r©   rŠ   r‹   rŒ   r�   rŽ   )r�   r�   r‘   r’   rX   r¨   r«   r­   r¯   rq   r{   rz   r“   r€   rQ   rg   rZ   rW   r¤   r¤   ¨   sö   € € € € € ðð ð
jð 
jð 
jð 
jð0ð 0ð 0ð 0ðð ð ð ðð ð ð ðð ð ð ð&ð &ð &ð &ð	2ð 	2ð 	2ð 	2ðð ð ð ð
 ð7ð 7ð 7ñ „Xð7ðð ð ð ð ð rZ   r¤   c                  ó*   — e Zd ZdZdd
„Zdd„Zdd„ZdS )Ú AsyncChatCompletionStreamManageraV  Context manager over a `AsyncChatCompletionStream` that is returned by `.stream()`.

    This context manager ensures the response cannot be leaked if you don't read
    the stream to completion.

    Usage:
    ```py
    async with client.beta.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    r–   ú+Awaitable[AsyncStream[ChatCompletionChunk]]rD   rE   rF   rG   rH   rI   c               ó>   — d | _         || _        || _        || _        d S r]   )Ú)_AsyncChatCompletionStreamManager__streamÚ._AsyncChatCompletionStreamManager__api_requestÚ2_AsyncChatCompletionStreamManager__response_formatÚ._AsyncChatCompletionStreamManager__input_toolsr�   s       rW   rX   z)AsyncChatCompletionStreamManager.__init__   s+   € ð LPˆŒØ(ˆÔØ!0ˆÔØ(ˆÔÐÐrZ   ú*AsyncChatCompletionStream[ResponseFormatT]c              ƒ  óp   K  — | j         ƒ d {V —†}t          || j        | j        ¬¦  «        | _        | j        S r    )r»   r¤   r¼   r½   rº   r¡   s     rW   r­   z+AsyncChatCompletionStreamManager.__aenter__  sO   è è € ØÔ-Ð-Ð-Ð-Ð-Ð-Ð-ˆ
å1Ø!Ø Ô2ØÔ*ð
ñ 
ô 
ˆŒð Œ}ÐrZ   ri   rj   rk   rl   rm   rn   c              ƒ  óZ   K  — | j         �!| j                              ¦   «         ƒ d {V —† d S d S r]   )rº   rq   rr   s       rW   r¯   z*AsyncChatCompletionStreamManager.__aexit__  sD   è è € ð Œ=Ð$Ø”-×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð %Ð$rZ   N)r–   r¸   rD   rE   rF   rG   rH   rI   )rH   r¾   r‹   )r�   r�   r‘   r’   rX   r­   r¯   rg   rZ   rW   r·   r·   ò   sZ   € € € € € ðð ð
)ð 
)ð 
)ð 
)ð	ð 	ð 	ð 	ð(ð (ð (ð (ð (ð (rZ   r·   c                  óV   — e Zd Zdd„Zdd	„Zedd„¦   «         Zdd„Zdd„Zdd„Z	dd„Z
dS )rS   rF   rG   rD   rE   rH   rI   c               ó¸   — d | _         g | _        t          |¦  «        rd„ |D ¦   «         ng | _        || _        t          j        |¦  «        r|nt          | _        d S )Nc                ó   — g | ]}|‘ŒS rg   rg   )Ú.0Útools     rW   ú
<listcomp>z6ChatCompletionStreamState.__init__.<locals>.<listcomp>+  s   € Ð:Ð:Ð: d˜TÐ:Ð:Ð:rZ   )	Ú7_ChatCompletionStreamState__current_completion_snapshotÚ/_ChatCompletionStreamState__choice_event_statesr'   Ú_input_toolsÚ_response_formatÚinspectÚisclassr$   Ú_rich_response_format)rV   rF   rD   s      rW   rX   z"ChatCompletionStreamState.__init__"  sk   € ð SWˆÔ*Ø=?ˆÔ"å>FÀ{Ñ>SÔ>SÐ[Ð:Ð:¨kÐ:Ñ:Ô:Ð:ÐY[ˆÔØ /ˆÔÝIPÌÐYhÑIiÔIiÐ6x°o°oÕoxˆÔ"Ð"Ð"rZ   rv   c                óD   — t          | j        | j        | j        ¬¦  «        S )N)Úchat_completionrD   rF   )r1   r€   rÍ   rÉ   r_   s    rW   r{   z.ChatCompletionStreamState.get_final_completion/  s+   € Ý$Ø Ô<Ø Ô6ØÔ)ð
ñ 
ô 
ð 	
rZ   r   c                ó"   — | j         €J ‚| j         S r]   )rÇ   r_   s    rW   r€   z5ChatCompletionStreamState.current_completion_snapshot6  s   € àÔ1Ð=Ð=Ð=ØÔ1Ð1rZ   Úchunkr7   ú0list[ChatCompletionStreamEvent[ResponseFormatT]]c                ón   — |                       |¦  «        | _        |                      || j        ¬¦  «        S )zOAccumulate a new chunk into the snapshot and returns a list of events to yield.)rÑ   Úcompletion_snapshot)Ú_accumulate_chunkrÇ   Ú_build_events)rV   rÑ   s     rW   r„   z&ChatCompletionStreamState.handle_chunk;  s>   € à-1×-CÒ-CÀEÑ-JÔ-JˆÔ*à×!Ò!ØØ $Ô Bð "ñ 
ô 
ð 	
rZ   ÚchoiceÚChoiceChunkÚChoiceEventStatec                óª   — 	 | j         |j                 S # t          $ r4 t          | j        ¬¦  «        }| j                              |¦  «         |cY S w xY w)N)rF   )rÈ   ÚindexÚ
IndexErrorrÙ   rÉ   Úappend)rV   r×   Úchoice_states      rW   Ú_get_choice_statez+ChatCompletionStreamState._get_choice_stateD  sh   € ð	 ØÔ-¨f¬lÔ;Ð;øÝð 	 ð 	 ð 	 Ý+¸Ô8IÐJÑJÔJˆLØÔ&×-Ò-¨lÑ;Ô;Ð;ØÐÐÐð	 øøøs   ‚ ”;AÁAc                ó	  — | j         }|€t          |¦  «        S |j        D �]F}	 |j        |j                 }|j        j        pg }t          t          t          t          t          t          dt          |j        t          t          dd„ t          |j        j        pg ¦  «        D ¦   «         dœ¦  «        ¬¦  «        ¦  «        t          d|j                             ¦   «         ¦  «        ¦  «        ¬¦  «        ¦  «        |_        t          |¦  «        D ]^\  }}|j        j        pg |         }|j        dk    r$|j        dk    sJ ‚|j        j        |j        _        ŒHt$          rt'          |¦  «         Œ_n†# t(          $ ry t          t*          t          t*          i | 
                    ddh¬	¦  «        ¥d
|j                             ¦   «         i¥¬¦  «        ¦  «        }|j                             |¦  «         Y nw xY w|j        r[|j        |_        t1          | j        | j        ¬¦  «        r4|j        dk    rt7          |¬¦  «        ‚|j        dk    rt9          ¦   «         ‚|j        j        rS|j        j        sGt?          | j         ¦  «        r3tC          tE          |j        j        d¦  «        d¬¦  «        |j        _#        |j        j        pg D ]Ç}	|j        j        pg |	j                 }
|
j        dk    r‹tI          | j        |
j        j%        ¬¦  «        }|rh| &                    di ¦  «         &                    d¦  «        r?|
j        j'        r3tC          tE          |
j        j'        d¦  «        d¬¦  «        |
j        _        Œ±t$          rt'          |
¦  «         ŒÈ|j(        �Ó|j(        €2tS          tT          |j(        j        |j(        j        ¬¦  «        |_(        �Œ¬|j(        j        rA|j(        j        €g |j(        _        |j(        j         +                    |j(        j        ¦  «         |j(        j        rA|j(        j        €g |j(        _        |j(        j         +                    |j(        j        ¦  «         �ŒH|j,        |_,        |j-        |_-        |S )Nzdict[object, object]Tc                ó"   — i | ]\  }}|d ddii“ŒS )ÚfunctionÚparsed_argumentsTrg   )rÄ   ÚidxÚ_s      rW   ú
<dictcomp>z?ChatCompletionStreamState._accumulate_chunk.<locals>.<dictcomp>h  s:   € ð ;.ð ;.ð ;.á4:°C¸ð 14°jÐCUÐW[ÐB\Ð5]ð;.ð ;.ð ;.rZ   )ÚparsedÚ
tool_calls)Úexclude©Útype_Úvaluerâ   Údelta©Úexclude_unsetré   ÚmessagerL   Úlength)Ú
completionÚcontent_filterzutf-8)Úpartial_mode)rF   ÚnameÚstrict)ÚcontentÚrefusal).rÇ   Ú$_convert_initial_chunk_into_snapshotÚchoicesrÛ   rð   rè   r   r   r,   r"   r*   r%   Ú	enumeraterí   Úto_dictÚtyperâ   rã   r   r   rÜ   r   rÝ   Úfinish_reasonr/   rÊ   rÉ   r:   r;   r÷   rø   r'   rÍ   r   Úbytesrç   r2   rõ   ÚgetÚ	argumentsÚlogprobsr+   r<   ÚextendÚusageÚsystem_fingerprint)rV   rÑ   rÔ   r×   Úchoice_snapshotÚprevious_tool_callsÚ
tool_indexÚ	prev_toolÚnew_toolÚtool_call_chunkÚtool_call_snapshotÚ
input_tools               rW   rÕ   z+ChatCompletionStreamState._accumulate_chunkL  s  € Ø"Ô@ÐàÐ&Ý7¸Ñ>Ô>Ð>à”mð v	Yñ v	YˆFð7DØ"5Ô"=¸f¼lÔ"K�Ø&5Ô&=Ô&HÐ&NÈBÐ#å*.Ý7Ý"ÝAÝ.Ý Ø 6Ý *Ø$3Ô$;õ -1å(-à6:ð;.ð ;.å>GÈÔH_ÔHjÐHpÐnpÑ>qÔ>qð;.ñ ;.ô ;.ð)*ð )*ñ
-&ô 
-&ð!"ñ !"ô !"ñô õ( !Ð!7¸¼×9MÒ9MÑ9OÔ9OÑPÔPñ+ô ðñ ô ñ+ô +�Ô'õ@ .7Ð7JÑ-KÔ-Kð 0ð 0Ñ)�J 	Ø /Ô 7Ô BÐ HÀbÈ*ÔU�Hà ”~¨Ò3Ð3Ø'œ}°
Ò:Ð:Ð:Ð:Ø=FÔ=OÔ=`˜Ô)Ô:Ð:Ý&ð 0Ý$ YÑ/Ô/Ð/øð0øõ ð Dð Dð DÝ"&Ý(Ý"Ý2ðØ$×/Ò/¸dÈWÈIÐ/ÑVÔVðà% v¤|×';Ò';Ñ'=Ô'=ðð ðñ ô ñ	#ô 	#�ð $Ô+×2Ò2°?ÑCÔCÐCÐCÐCðDøøøð Ô#ð 
?Ø06Ô0D�Ô-å&°tÔ7LÐZ^ÔZkÐlÑlÔlð ?ØÔ+¨xÒ7Ð7õ 6ÐATÐUÑUÔUÐUàÔ+Ð/?Ò?Ð?Ý<Ñ>Ô>Ð>ð  Ô'Ô/ðà'Ô/Ô7ðõ ˜TÔ7Ñ8Ô8ðõ
 2;Ý˜/Ô1Ô9¸7ÑCÔCØ!%ð2ñ 2ô 2�Ô'Ô.ð
 $*¤<Ô#:Ð#@¸bð 5ð 5�Ø&5Ô&=Ô&HÐ&NÈBÐP_ÔPeÔ%fÐ"à%Ô*¨jÒ8Ð8Ý!7Ø$(Ô$5Ð<NÔ<WÔ<\ð"ñ "ô "�Jð
 #ðà&ŸNšN¨:°rÑ:Ô:×>Ò>¸xÑHÔHðð /Ô7ÔAðõ
 HQÝ!Ð"4Ô"=Ô"GÈÑQÔQØ)-ðHñ Hô HÐ*Ô3ÔDøõ #ð 5Ý Ð!3Ñ4Ô4Ð4øàŒÐ*Ø"Ô+Ð3Ý/4Ý&Ø &¤Ô 7Ø &¤Ô 7ð0ñ 0ô 0�OÔ,Ñ,ð ”Ô.ð YØ*Ô3Ô;ÐCØ?A˜OÔ4Ô<à'Ô0Ô8×?Ò?ÀÄÔ@WÑXÔXÐXà”Ô.ð YØ*Ô3Ô;ÐCØ?A˜OÔ4Ô<à'Ô0Ô8×?Ò?ÀÄÔ@WÑXÔXÐXùà$)¤KÐÔ!Ø16Ô1IÐÔ.à"Ð"s   ¤E
E/Å/B G2Ç1G2rÔ   c               ó�  — g }|                      t          t          d||¬¦  «        ¦  «         |j        D �]�}|                      |¦  «        }|j        |j                 }|j        j        �V|j        j        �J|                      t          t          d|j        j        |j        j        |j        j
        ¬¦  «        ¦  «         |j        j        �K|j        j        �?|                      t          t          d|j        j        |j        j        ¬¦  «        ¦  «         |j        j        r´|j        j        }|€J ‚|j        j        D ]—}||j                 }	|	j        dk    rg|j        €J ‚|                      t          t           d|	j        j        |j        |	j        j        |	j        j        |j        j        pd	¬
¦  «        ¦  «         Œ�t(          rt+          |	¦  «         Œ˜|j        �µ|j        �®|j        j        rK|j        j        r?|                      t          t.          d|j        j        |j        j        ¬¦  «        ¦  «         |j        j        rK|j        j        r?|                      t          t0          d|j        j        |j        j        ¬¦  «        ¦  «         |                     |                     ||| j        ¬¦  «        ¦  «         �Œ‘|S )NrÑ   )rý   rÑ   Úsnapshotzcontent.delta)rý   rí   r  rç   zrefusal.delta)rý   rí   r  râ   z#tool_calls.function.arguments.deltaÚ )rý   rõ   rÛ   r  rã   Úarguments_deltazlogprobs.content.delta)rý   r÷   r  zlogprobs.refusal.delta)rý   rø   r  )Úchoice_chunkr  rD   )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  Úget_done_eventsrÊ   )
rV   rÑ   rÔ   r‡   r×   rÞ   r  rè   Útool_call_deltaÚ	tool_calls
             rW   rÖ   z'ChatCompletionStreamState._build_eventsÏ  s  € ð LNˆà×ÒÝ•* 7°%ÐBUÐVÑVÔVñ	
ô 	
ð 	
ð ”mð K	ñ K	ˆFØ×1Ò1°&Ñ9Ô9ˆLØ1Ô9¸&¼,ÔGˆOàŒ|Ô#Ð/°OÔ4KÔ4SÐ4_Ø×%Ò%ÝÝ)Ø,Ø$œlÔ2Ø!0Ô!8Ô!@Ø.Ô6Ô=ðñ ô ñô ð ð Œ|Ô#Ð/°OÔ4KÔ4SÐ4_Ø×%Ò%ÝÝ)Ø,Ø$œlÔ2Ø!0Ô!8Ô!@ð	ñ ô ñô ð ð Œ|Ô&ð 0Ø,Ô4Ô?�
Ø!Ð-Ð-Ð-à'-¤|Ô'>ð 0ð 0�OØ *¨?Ô+@Ô A�Ià ”~¨Ò3Ð3Ø.Ô7ÐCÐCÐCØ&×-Ò-Ý!Ý CØ%JØ%.Ô%7Ô%<Ø&5Ô&;Ø*3Ô*<Ô*FØ1:Ô1CÔ1TØ0?Ô0HÔ0RÐ0XÐVXðñ ô ñ
ô 
ð 
ð 
õ 'ð 0Ý$ YÑ/Ô/Ð/øàŒÐ*¨Ô/GÐ/SØ”?Ô*ð ¨Ô/GÔ/Oð Ø"×)Ò)ÝÝ5Ø!9Ø$*¤OÔ$;Ø%4Ô%=Ô%Eð	ñ ô ñô ð ð ”?Ô*ð ¨Ô/GÔ/Oð Ø"×)Ò)ÝÝ5Ø!9Ø$*¤OÔ$;Ø%4Ô%=Ô%Eð	ñ ô ñô ð ð ×!Ò!Ø×,Ò,Ø!'Ø$3Ø$(Ô$9ð -ñ ô ñô ð ñ ð ÐrZ   N)rF   rG   rD   rE   rH   rI   r�   rŽ   )rÑ   r7   rH   rÒ   )r×   rØ   rH   rÙ   ©rÑ   r7   rH   r   )rÑ   r7   rÔ   r   rH   rÒ   )r�   r�   r‘   rX   r{   r“   r€   r„   rß   rÕ   rÖ   rg   rZ   rW   rS   rS   !  s»   € € € € € ðyð yð yð yð
ð 
ð 
ð 
ð ð2ð 2ð 2ñ „Xð2ð
ð 
ð 
ð 
ð ð  ð  ð  ðA#ð A#ð A#ð A#ðFYð Yð Yð Yð Yð YrZ   rS   c                  ó.   — e Zd Zdd„Zdd„Zdd„Zdd„ZdS )rÙ   rF   úlist[ChatCompletionToolParam]rH   rI   c               ó€   — || _         d| _        d| _        d| _        d| _        t          ¦   «         | _        d | _        d S )NF)rÉ   Ú_content_doneÚ_refusal_doneÚ_logprobs_content_doneÚ_logprobs_refusal_doneÚsetÚ_done_tool_callsÚ*_ChoiceEventState__current_tool_call_index)rV   rF   s     rW   rX   zChoiceEventState.__init__,  sD   € Ø'ˆÔà"ˆÔØ"ˆÔØ&+ˆÔ#Ø&+ˆÔ#Ý*-©%¬%ˆÔØ59ˆÔ&Ð&Ð&rZ   r  rØ   r  r   rD   rE   rÒ   c               óÆ  — g }|j         r\|                     |                      ||¬¦  «        ¦  «         | j        �+| j        | j        vr|                      ||| j        ¬¦  «         |j        j        pg D ]l}| j        |j        k    rN|                     |                      ||¬¦  «        ¦  «         | j        �|                      ||| j        ¬¦  «         |j        | _        Œm|S )N)r  rD   )r‡   r  r  )	rþ   r  Ú_content_done_eventsr   r  Ú_add_tool_done_eventrí   rè   rÛ   )rV   r  r  rD   r‡   r  s         rW   r  z ChoiceEventState.get_done_events6  s.  € ð LNˆàÔ(ð 	Ø×!Ò!Ø×)Ò)¸/Ð[jÐ)ÑkÔkñô ð ð
 Ô.Ð:ØÔ2¸$Ô:OÐOÐOà×)Ò)Ø#1Ø$3Ø#Ô=ð *ñ ô ð ð &Ô+Ô6Ð<¸"ð 	=ð 	=ˆIØÔ-°´Ò@Ð@Ø×%Ò%Ø×-Ò-¸oÐ_nÐ-ÑoÔoñô ð ð Ô1Ð=Ø×-Ò-Ø'5Ø(7Ø#'Ô#Að .ñ ô ð ð .7¬_ˆDÔ*Ð*àÐrZ   c               óD  — g }|j         j        r™| j        s’d| _        t          ||j         ¬¦  «        }||j         _        |                     t          t          dt          t          t          ¦  «        t          |¦  «                 ¦  «        d|j         j        |¬¦  «        ¦  «         |j         j        �B| j        s;d| _        |                     t          t          d|j         j        ¬¦  «        ¦  «         |j        �N|j        j        �B| j        s;d| _        |                     t          t           d|j        j        ¬	¦  «        ¦  «         |j        �N|j        j        �B| j        s;d| _        |                     t          t$          d
|j        j        ¬¦  «        ¦  «         |S )NT)rD   rð   z'type[ContentDoneEvent[ResponseFormatT]]zcontent.done)rý   r÷   rç   zrefusal.done)rý   rø   zlogprobs.content.done)rý   r÷   zlogprobs.refusal.done)rð   r÷   r  r0   rç   rÝ   r+   r   r   r   r3   rø   r  r   r  r  r   r  r   )rV   r  rD   r‡   rç   s        rW   r"  z%ChoiceEventState._content_done_events_  sÓ  € ð LNˆàÔ"Ô*ð 	°4Ô3Eð 	Ø!%ˆDÔå(Ø /Ø'Ô/ðñ ô ˆFð .4ˆOÔ#Ô*à×!Ò!Ýõ ØAÝ�SÕ"2Ñ3Ô3Õ4KÈOÑ4\Ô4\Ô]ñô ð (Ø+Ô3Ô;Ø!ðñ ô ñô ð ð Ô"Ô*Ð6¸tÔ?QÐ6Ø!%ˆDÔØ×!Ò!ÝÕ&¨^À_ÔE\ÔEdÐeÑeÔeñô ð ð
 Ô$Ð0ØÔ(Ô0Ð<ØÔ/ð =ð +/ˆDÔ'Ø×!Ò!ÝÕ.Ð5LÐVeÔVnÔVvÐwÑwÔwñô ð ð
 Ô$Ð0ØÔ(Ô0Ð<ØÔ/ð =ð +/ˆDÔ'Ø×!Ò!ÝÕ.Ð5LÐVeÔVnÔVvÐwÑwÔwñô ð ð ÐrZ   r‡   r  Úintc          
     óª  — || j         v rd S | j                              |¦  «         |j        j        €J ‚|j        j        |         }|j        dk    rjt          | j        |j        ¬¦  «        }||j        _        | 	                    t          t          d||j        j        |j        j        |¬¦  «        ¦  «         d S t          rt          |¦  «         d S d S )Nrâ   )rF   râ   z"tool_calls.function.arguments.done)rý   rÛ   rõ   r  rã   )r  Úaddrð   rè   rý   r4   rÉ   râ   rã   rÝ   r+   r   rõ   r  r   r   )rV   r‡   r  r  r  rã   s         rW   r#  z%ChoiceEventState._add_tool_done_eventŸ  s
  € ð ˜Ô.Ð.Ð.ØˆFàÔ×!Ò! *Ñ-Ô-Ð-àÔ&Ô1Ð=Ð=Ð=Ø,Ô4Ô?À
ÔKÐàÔ" jÒ0Ð0Ý<Ø Ô-Ð8JÔ8Sð ñ  ô  Ðð <LÐÔ'Ô8à×!Ò!ÝÝ6Ø=Ø$Ø+Ô4Ô9Ø0Ô9ÔCØ%5ðñ ô ñ	ô 	ð 	ð 	ð 	õ ð 	-ÝÐ+Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-rZ   N)rF   r  rH   rI   )r  rØ   r  r   rD   rE   rH   rÒ   )r  r   rD   rE   rH   rÒ   )r‡   rÒ   r  r   r  r%  rH   rI   )r�   r�   r‘   rX   r  r"  r#  rg   rZ   rW   rÙ   rÙ   +  sf   € € € € € ð:ð :ð :ð :ð'ð 'ð 'ð 'ðR>ð >ð >ð >ð@$-ð $-ð $-ð $-ð $-ð $-rZ   rÙ   rÑ   r7   rH   r   c           	     óF  — |                       ¦   «         }t          d|d         ¦  «        }| j        D ]?}i |                     ddh¬¦  «        ¥d|j                              ¦   «         i¥||j        <   Œ@t          t          t          t          dd i|¥dd	i¥¬
¦  «        ¦  «        S )Nzlist[object]rú   Trí   rî   rð   r  Úobjectzchat.completionrê   )rü   r   rú   r*   rí   rÛ   r   r,   )rÑ   Údatarú   r×   s       rW   rù   rù   Æ  sÎ   € Ø�=Š=‰?Œ?€DÝ�> 4¨	¤?Ñ3Ô3€Gà”-ð 
ð 
ˆð!
Ø×Ò¨d¸W¸IÐÑFÔFð!
à�v”|×+Ò+Ñ-Ô-ð!
ð !
ˆ�”ÑÐõ
 Ý$ÝÝ.à$ dðàðð Ð+ðð ð	
ñ 	
ô 	
ñ
ô 
ð 
rZ   r  )TÚ
__future__r   rË   Útypesr   Útypingr   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   Újiterr   Ú_typesr   r   r   Ú_eventsr   r   r   r   r   r   r   r   r   r   r   r    Ú_deltasr"   r$   r%   r&   Ú_utilsr'   r(   r)   Ú_compatr*   Ú_modelsr+   r,   Ú_parsingr.   r/   r0   r1   r2   r3   r4   Ú
_streamingr5   r6   Ú
types.chatr7   r8   r9   Ú_exceptionsr:   r;   Útypes.chat.chat_completionr<   Ú types.chat.chat_completion_chunkr=   rØ   Ú#types.chat.completion_create_paramsr>   ÚResponseFormatParamr@   r•   r¤   r·   rS   rÙ   rù   rg   rZ   rW   ú<module>r>     sù  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à Ð Ð Ð Ð Ð à kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø FÐ FÐ FÐ FÐ FÐ FØ YÐ YÐ YÐ YÐ YÐ YðGð Gð Gð Gð G˜7 ?Ô3ñ Gô Gð GðT,"ð ,"ð ,"ð ,"ð ," '¨/Ô":ñ ,"ô ,"ð ,"ð^Gð Gð Gð Gð G ¨Ô 8ñ Gô Gð GðT,(ð ,(ð ,(ð ,(ð ,( w¨Ô'?ñ ,(ô ,(ð ,(ð^Gð Gð Gð Gð G ¨Ô 8ñ Gô Gð GðTX-ð X-ð X-ð X-ð X-ñ X-ô X-ð X-ðvð ð ð ð ð rZ   