§
     �’jñz  ã                  ót  — 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l3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZBmCZC ddlDmEZE ddlFmGZH ddlImJZK  G d„ dee4         ¦  «        ZL 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$¦  «        ZQd-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é   )ÚOmitÚIncExÚomit)Ú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Úparse_function_tool_arguments)ÚStreamÚAsyncStream)ÚChatCompletionChunkÚParsedChatCompletionÚChatCompletionToolUnionParam)Ú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ú2type[ResponseFormatT] | ResponseFormatParam | OmitÚinput_toolsú-Iterable[ChatCompletionToolUnionParam] | OmitÚreturnÚNonec               óŠ   — || _         |j        | _        |                      ¦   «         | _        t          ||¬¦  «        | _        d S ©N©rC   rE   ©Ú_raw_streamÚresponseÚ	_responseÚ
__stream__Ú	_iteratorÚChatCompletionStreamStateÚ_state©ÚselfrA   rC   rE   s       úTC:\Projects\DSCons\.venv\Lib\site-packages\openai\lib\streaming\chat\_completions.pyÚ__init__zChatCompletionStream.__init__7   ó@   € ð &ˆÔØ#Ô,ˆŒØŸšÑ*Ô*ˆŒÝ/ÀÐ]hÐiÑiÔiˆŒˆˆó    ú*ChatCompletionStreamEvent[ResponseFormatT]c                ó4   — | j                              ¦   «         S ©N)rQ   Ú__next__©rU   s    rV   r]   zChatCompletionStream.__next__C   s   € ØŒ~×&Ò&Ñ(Ô(Ð(rY   ú4Iterator[ChatCompletionStreamEvent[ResponseFormatT]]c              #  ó&   K  — | j         D ]}|V — Œd S r\   ©rQ   ©rU   Úitems     rV   Ú__iter__zChatCompletionStream.__iter__F   s,   è è € Ø”Nð 	ð 	ˆDØˆJˆJˆJˆJð	ð 	rY   r   c                ó   — | S r\   © r^   s    rV   Ú	__enter__zChatCompletionStream.__enter__J   s   € ØˆrY   Úexc_typeútype[BaseException] | NoneÚexcúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó.   — |                       ¦   «          d S r\   ©Úclose©rU   rh   rj   rl   s       rV   Ú__exit__zChatCompletionStream.__exit__M   s   € ð 	�
Š
‰ŒˆˆˆrY   c                ó8   — | j                              ¦   «          dS ©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)rO   rp   r^   s    rV   rp   zChatCompletionStream.closeU   s   € ð 	Œ×ÒÑÔÐÐÐrY   ú%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_donerS   Úget_final_completionr^   s    rV   rz   z)ChatCompletionStream.get_final_completion]   s(   € ð 	�ŠÑÔÐØŒ{×/Ò/Ñ1Ô1Ð1rY   c                ó$   — t          | ¦  «         | S )ú*Blocks until the stream has been consumed.)r(   r^   s    rV   ry   zChatCompletionStream.until_doneh   s   € å˜dÑ#Ô#Ð#ØˆrY   r   c                ó   — | j         j        S r\   ©rS   Úcurrent_completion_snapshotr^   s    rV   r   z0ChatCompletionStream.current_completion_snapshotm   ó   € àŒ{Ô6Ð6rY   c              #  ó„   K  — | j         D ]5}t          |¦  «        sŒ| j                             |¦  «        }|D ]}|V — ŒŒ6d S r\   ©rM   Ú$_is_valid_chat_completion_chunk_weakrS   Úhandle_chunk©rU   Ú	sse_eventÚevents_to_fireÚevents       rV   rP   zChatCompletionStream.__stream__q   si   è è € ØÔ)ð 	ð 	ˆIÝ7¸	ÑBÔBð ØØ!œ[×5Ò5°iÑ@Ô@ˆNØ'ð ð �Ø����ðð		ð 	rY   N)rA   rB   rC   rD   rE   rF   rG   rH   ©rG   rZ   )rG   r_   ©rG   r   ©rh   ri   rj   rk   rl   rm   rG   rH   ©rG   rH   ©rG   ru   ©rG   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rW   r]   rd   rg   rr   rp   rz   ry   Úpropertyr   rP   rf   rY   rV   r?   r?   .   sö   € € € € € ðð ð
jð 
jð 
jð 
jð)ð )ð )ð )ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð	2ð 	2ð 	2ð 	2ðð ð ð ð
 ð7ð 7ð 7ñ „Xð7ðð ð ð ð ð rY   r?   c                  ó*   — e Zd ZdZdd
„Zdd„Zdd„ZdS )ÚChatCompletionStreamManageraF  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.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    Úapi_requestú)Callable[[], Stream[ChatCompletionChunk]]rC   rD   rE   rF   rG   rH   c               ó>   — d | _         || _        || _        || _        d S r\   )Ú$_ChatCompletionStreamManager__streamÚ)_ChatCompletionStreamManager__api_requestÚ-_ChatCompletionStreamManager__response_formatÚ)_ChatCompletionStreamManager__input_tools©rU   r–   rC   rE   s       rV   rW   z$ChatCompletionStreamManager.__init__ˆ   s+   € ð GKˆŒØ(ˆÔØ!0ˆÔØ(ˆÔÐÐrY   ú%ChatCompletionStream[ResponseFormatT]c                óz   — |                       ¦   «         }t          || j        | j        ¬¦  «        | _        | j        S ©N)rA   rC   rE   )rš   r?   r›   rœ   r™   ©rU   rA   s     rV   rg   z%ChatCompletionStreamManager.__enter__”   sB   € Ø×'Ò'Ñ)Ô)ˆ
å,Ø!Ø Ô2ØÔ*ð
ñ 
ô 
ˆŒð Œ}ÐrY   rh   ri   rj   rk   rl   rm   c                óJ   — | j         �| j                              ¦   «          d S d S r\   )r™   rp   rq   s       rV   rr   z$ChatCompletionStreamManager.__exit__Ÿ   s.   € ð Œ=Ð$ØŒM×ÒÑ!Ô!Ð!Ð!Ð!ð %Ð$rY   N)r–   r—   rC   rD   rE   rF   rG   rH   )rG   rž   r‹   )r�   r�   r‘   r’   rW   rg   rr   rf   rY   rV   r•   r•   z   sZ   € € € € € ðð ð
)ð 
)ð 
)ð 
)ð	ð 	ð 	ð 	ð"ð "ð "ð "ð "ð "rY   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 )(ÚAsyncChatCompletionStreamr@   rA   ú AsyncStream[ChatCompletionChunk]rC   rD   rE   rF   rG   rH   c               óŠ   — || _         |j        | _        |                      ¦   «         | _        t          ||¬¦  «        | _        d S rJ   rL   rT   s       rV   rW   z"AsyncChatCompletionStream.__init__²   rX   rY   rZ   c              ƒ  óD   K  — | j                              ¦   «         ƒ d {V —†S r\   )rQ   Ú	__anext__r^   s    rV   r¨   z#AsyncChatCompletionStream.__anext__¾   s,   è è € Ø”^×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/rY   ú9AsyncIterator[ChatCompletionStreamEvent[ResponseFormatT]]c               ó4   K  — | j         2 3 d {V —†}|W V — Œ6 d S r\   ra   rb   s     rV   Ú	__aiter__z#AsyncChatCompletionStream.__aiter__Á   sF   è è € Øœ.ð 	ð 	ð 	ð 	ð 	ð 	ð 	�$ØˆJˆJˆJˆJˆJð )˜.˜.s   Šr   c              ƒ  ó
   K  — | S r\   rf   r^   s    rV   Ú
__aenter__z$AsyncChatCompletionStream.__aenter__Å   s   è è € ØˆrY   rh   ri   rj   rk   rl   rm   c              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S r\   ro   rq   s       rV   Ú	__aexit__z#AsyncChatCompletionStream.__aexit__È   s.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐrY   c              ƒ  óH   K  — | j                              ¦   «         ƒ d{V —† dS rt   )rO   Úacloser^   s    rV   rp   zAsyncChatCompletionStream.closeÐ   s4   è è € ð Œn×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%rY   ru   c              ƒ  ól   K  — |                       ¦   «         ƒ d{V —† | j                             ¦   «         S )rw   Nrx   r^   s    rV   rz   z.AsyncChatCompletionStream.get_final_completionØ   s>   è è € ð �oŠoÑÔÐÐÐÐÐÐÐØŒ{×/Ò/Ñ1Ô1Ð1rY   c              ƒ  ó4   K  — t          | ¦  «        ƒ d{V —† | S )r|   N)r)   r^   s    rV   ry   z$AsyncChatCompletionStream.until_doneã   s+   è è € å$ TÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØˆrY   r   c                ó   — | j         j        S r\   r~   r^   s    rV   r   z5AsyncChatCompletionStream.current_completion_snapshotè   r€   rY   c               ó’   K  — | j         2 3 d {V —†}t          |¦  «        sŒ| j                             |¦  «        }|D ]}|W V — ŒŒ<6 d S r\   r‚   r…   s       rV   rP   z$AsyncChatCompletionStream.__stream__ì   s…   è è € Ø#Ô/ð 	ð 	ð 	ð 	ð 	ð 	ð 	�)Ý7¸	ÑBÔBð ØØ!œ[×5Ò5°iÑ@Ô@ˆNØ'ð ð �Ø�����ðð	  0Ð/Ð/s   ŠAN)rA   r¥   rC   rD   rE   rF   rG   rH   r‰   )rG   r©   rŠ   r‹   rŒ   r�   rŽ   )r�   r�   r‘   r’   rW   r¨   r«   r­   r¯   rp   rz   ry   r“   r   rP   rf   rY   rV   r¤   r¤   ©   sö   € € € € € ðð ð
jð 
jð 
jð 
jð0ð 0ð 0ð 0ðð ð ð ðð ð ð ðð ð ð ð&ð &ð &ð &ð	2ð 	2ð 	2ð 	2ðð ð ð ð
 ð7ð 7ð 7ñ „Xð7ðð ð ð ð ð rY   r¤   c                  ó*   — e Zd ZdZdd
„Zdd„Zdd„ZdS )Ú AsyncChatCompletionStreamManageraQ  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.chat.completions.stream(...) as stream:
        for event in stream:
            ...
    ```
    r–   ú+Awaitable[AsyncStream[ChatCompletionChunk]]rC   rD   rE   rF   rG   rH   c               ó>   — d | _         || _        || _        || _        d S r\   )Ú)_AsyncChatCompletionStreamManager__streamÚ._AsyncChatCompletionStreamManager__api_requestÚ2_AsyncChatCompletionStreamManager__response_formatÚ._AsyncChatCompletionStreamManager__input_toolsr�   s       rV   rW   z)AsyncChatCompletionStreamManager.__init__  s+   € ð LPˆŒØ(ˆÔØ!0ˆÔØ(ˆÔÐÐrY   ú*AsyncChatCompletionStream[ResponseFormatT]c              ƒ  óp   K  — | j         ƒ d {V —†}t          || j        | j        ¬¦  «        | _        | j        S r    )r»   r¤   r¼   r½   rº   r¡   s     rV   r­   z+AsyncChatCompletionStreamManager.__aenter__  sO   è è € ØÔ-Ð-Ð-Ð-Ð-Ð-Ð-ˆ
å1Ø!Ø Ô2ØÔ*ð
ñ 
ô 
ˆŒð Œ}ÐrY   rh   ri   rj   rk   rl   rm   c              ƒ  óZ   K  — | j         �!| j                              ¦   «         ƒ d {V —† d S d S r\   )rº   rp   rq   s       rV   r¯   z*AsyncChatCompletionStreamManager.__aexit__  sD   è è € ð Œ=Ð$Ø”-×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð %Ð$rY   N)r–   r¸   rC   rD   rE   rF   rG   rH   )rG   r¾   r‹   )r�   r�   r‘   r’   rW   r­   r¯   rf   rY   rV   r·   r·   õ   sZ   € € € € € ðð ð
)ð 
)ð 
)ð 
)ð	ð 	ð 	ð 	ð(ð (ð (ð (ð (ð (rY   r·   c                  ób   — e Zd ZdZeedœdd	„Zdd„Zedd„¦   «         Zdd„Z	dd„Z
d d„Zd!d„ZdS )"rR   aS  Helper class for manually accumulating `ChatCompletionChunk`s into a final `ChatCompletion` object.

    This is useful in cases where you can't always use the `.stream()` method, e.g.

    ```py
    from openai.lib.streaming.chat import ChatCompletionStreamState

    state = ChatCompletionStreamState()

    stream = client.chat.completions.create(..., stream=True)
    for chunk in response:
        state.handle_chunk(chunk)

        # can also access the accumulated `ChatCompletion` mid-stream
        state.current_completion_snapshot

    print(state.get_final_completion())
    ```
    )rE   rC   rE   rF   rC   rD   rG   rH   c               ó¸   — d | _         g | _        t          |¦  «        rd„ |D ¦   «         ng | _        || _        t          j        |¦  «        r|nt          | _        d S )Nc                ó   — g | ]}|‘ŒS rf   rf   )Ú.0Útools     rV   ú
<listcomp>z6ChatCompletionStreamState.__init__.<locals>.<listcomp>B  s   € Ð:Ð:Ð: d˜TÐ:Ð:Ð:rY   )	Ú7_ChatCompletionStreamState__current_completion_snapshotÚ/_ChatCompletionStreamState__choice_event_statesr'   Ú_input_toolsÚ_response_formatÚinspectÚisclassr&   Ú_rich_response_format)rU   rE   rC   s      rV   rW   z"ChatCompletionStreamState.__init__9  sk   € ð SWˆÔ*Ø=?ˆÔ"å>FÀ{Ñ>SÔ>SÐ[Ð:Ð:¨kÐ:Ñ:Ô:Ð:ÐY[ˆÔØ /ˆÔÝELÄ_ÐUdÑEeÔEeÐ2o°/°/ÕkoˆÔ"Ð"Ð"rY   ru   c                óD   — t          | j        | j        | j        ¬¦  «        S )zÉParse the final completion object.

        Note this does not provide any guarantees that the stream has actually finished, you must
        only call this method when the stream is finished.
        )Úchat_completionrC   rE   )r1   r   rÍ   rÉ   r^   s    rV   rz   z.ChatCompletionStreamState.get_final_completionF  s-   € õ %Ø Ô<Ø Ô6ØÔ)ð
ñ 
ô 
ð 	
rY   r   c                ó"   — | j         €J ‚| j         S r\   )rÇ   r^   s    rV   r   z5ChatCompletionStreamState.current_completion_snapshotR  s   € àÔ1Ð=Ð=Ð=ØÔ1Ð1rY   Úchunkr6   ú4Iterable[ChatCompletionStreamEvent[ResponseFormatT]]c                ón   — |                       |¦  «        | _        |                      || j        ¬¦  «        S )zTAccumulate a new chunk into the snapshot and returns an iterable of events to yield.)rÑ   Úcompletion_snapshot)Ú_accumulate_chunkrÇ   Ú_build_events)rU   rÑ   s     rV   r„   z&ChatCompletionStreamState.handle_chunkW  s>   € à-1×-CÒ-CÀEÑ-JÔ-JˆÔ*à×!Ò!ØØ $Ô Bð "ñ 
ô 
ð 	
rY   ÚchoiceÚChoiceChunkÚChoiceEventStatec                óª   — 	 | j         |j                 S # t          $ r4 t          | j        ¬¦  «        }| j                              |¦  «         |cY S w xY w)N)rE   )rÈ   ÚindexÚ
IndexErrorrÙ   rÉ   Úappend)rU   r×   Úchoice_states      rV   Ú_get_choice_statez+ChatCompletionStreamState._get_choice_state`  sh   € ð	 ØÔ-¨f¬lÔ;Ð;øÝð 	 ð 	 ð 	 Ý+¸Ô8IÐJÑJÔJˆLØÔ&×-Ò-¨lÑ;Ô;Ð;ØÐÐÐð	 øøøs   ‚ ”;AÁAc                ó@	  — | j         }|€t          |¦  «        S |j        D �]d}	 |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        rq|j        j        set?          | j         ¦  «        rQ|j        j         !                    ¦   «         r3tE          tG          |j        j        d¦  «        d¬¦  «        |j        _$        |j        j        pg D ]Ç}	|j        j        pg |	j                 }
|
j        dk    r‹tK          | j        |
j        j&        ¬¦  «        }|rh| '                    di ¦  «         '                    d¦  «        r?|
j        j(        r3tE          tG          |
j        j(        d¦  «        d¬¦  «        |
j        _        Œ±t$          rt'          |
¦  «         ŒÈ|j)        �Ó|j)        €2tU          tV          |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        ¦  «         �Œf|j-        |_-        |j.        |_.        |S )Nzdict[object, object]Tc                ó"   — i | ]\  }}|d ddii“ŒS )ÚfunctionÚparsed_argumentsTrf   )rÄ   ÚidxÚ_s      rV   ú
<dictcomp>z?ChatCompletionStreamState._accumulate_chunk.<locals>.<dictcomp>„  s:   € ð ;.ð ;.ð ;.á4:°C¸ð 14°jÐCUÐW[ÐB\Ð5]ð;.ð ;.ð ;.rY   )ÚparsedÚ
tool_calls)Úexclude©Útype_Úvaluerâ   Údelta©Úexclude_unsetré   ÚmessagerK   Úlength)Ú
completionÚcontent_filterzutf-8)Úpartial_mode)rE   Ú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É   r9   r:   r÷   rø   r'   rÍ   Úlstripr   Úbytesrç   r2   rõ   ÚgetÚ	argumentsÚlogprobsr+   r;   ÚextendÚusageÚsystem_fingerprint)rU   rÑ   rÔ   r×   Úchoice_snapshotÚprevious_tool_callsÚ
tool_indexÚ	prev_toolÚnew_toolÚtool_call_chunkÚtool_call_snapshotÚ
input_tools               rV   rÕ   z+ChatCompletionStreamState._accumulate_chunkh  s!  € Ø"Ô@ÐàÐ&Ý7¸Ñ>Ô>Ð>à”mð x	Yñ x	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ð
ð
 $Ô+Ô3×:Ò:Ñ<Ô<ð
õ 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Ô   ú0list[ChatCompletionStreamEvent[ResponseFormatT]]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  rC   )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Ê   )
rU   rÑ   rÔ   r‡   r×   rÞ   r  rè   Útool_call_deltaÚ	tool_calls
             rV   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ð -ñ ô ñô ð ñ ð ÐrY   N)rE   rF   rC   rD   rG   rH   r�   rŽ   )rÑ   r6   rG   rÒ   )r×   rØ   rG   rÙ   ©rÑ   r6   rG   r   )rÑ   r6   rÔ   r   rG   r  )r�   r�   r‘   r’   r&   rW   rz   r“   r   r„   rß   rÕ   rÖ   rf   rY   rV   rR   rR   $  sÛ   € € € € € ðð ð. FJØNRð	pð pð pð pð pð pð

ð 

ð 

ð 

ð ð2ð 2ð 2ñ „Xð2ð
ð 
ð 
ð 
ð ð  ð  ð  ðC#ð C#ð C#ð C#ðJYð Yð Yð Yð Yð YrY   rR   c                  ó.   — e Zd Zdd„Zdd„Zdd„Zdd„ZdS )rÙ   rE   ú"list[ChatCompletionToolUnionParam]rG   rH   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)rU   rE   s     rV   rW   zChoiceEventState.__init__J  sD   € Ø'ˆÔà"ˆÔØ"ˆÔØ&+ˆÔ#Ø&+ˆÔ#Ý*-©%¬%ˆÔØ59ˆÔ&Ð&Ð&rY   r  rØ   r  r   rC   rD   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  rC   )r‡   r  r	  )	rþ   r  Ú_content_done_eventsr"  r!  Ú_add_tool_done_eventrí   rè   rÛ   )rU   r  r  rC   r‡   r  s         rV   r  z ChoiceEventState.get_done_eventsT  s.  € ð LNˆàÔ(ð 	Ø×!Ò!Ø×)Ò)¸/Ð[jÐ)ÑkÔkñô ð ð
 Ô.Ð:ØÔ2¸$Ô:OÐOÐOà×)Ò)Ø#1Ø$3Ø#Ô=ð *ñ ô ð ð &Ô+Ô6Ð<¸"ð 	=ð 	=ˆIØÔ-°´Ò@Ð@Ø×%Ò%Ø×-Ò-¸oÐ_nÐ-ÑoÔoñô ð ð Ô1Ð=Ø×-Ò-Ø'5Ø(7Ø#'Ô#Að .ñ ô ð ð .7¬_ˆDÔ*Ð*àÐrY   c               ó  — g }|j         j        r†| j        sd| _        t          ||j         ¬¦  «        }||j         _        |                     t          t          d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)rC   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   rø   r  r   r  r  r   r  r   )rU   r  rC   r‡   rç   s        rV   r$  z%ChoiceEventState._content_done_events}  sÅ  € ð LNˆàÔ"Ô*ð 	°4Ô3Eð 	Ø!%ˆDÔå(Ø /Ø'Ô/ðñ ô ˆFð .4ˆOÔ#Ô*à×!Ò!Ýõ ØAÝ�SÕ"2Ñ3Ô3ñô ð (Ø+Ô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ñô ð ð ÐrY   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â   )rE   râ   z"tool_calls.function.arguments.done)rý   rÛ   rõ   r  rã   )r!  Úaddrð   rè   rý   r3   rÉ   râ   rã   rÝ   r+   r   rõ   r  r   r   )rU   r‡   r  r	  r  rã   s         rV   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ðñ ô ñ	ô 	ð 	ð 	ð 	õ ð 	-ÝÐ+Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-rY   N)rE   r  rG   rH   )r  rØ   r  r   rC   rD   rG   r  )r  r   rC   rD   rG   r  )r‡   r  r  r   r	  r'  rG   rH   )r�   r�   r‘   rW   r  r$  r%  rf   rY   rV   rÙ   rÙ   I  sf   € € € € € ð:ð :ð :ð :ð'ð 'ð 'ð 'ðR>ð >ð >ð >ð@$-ð $-ð $-ð $-ð $-ð $-rY   rÙ   rÑ   r6   rG   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       rV   rù   rù   ä  sÎ   € Ø�=Š=‰?Œ?€DÝ�> 4¨	¤?Ñ3Ô3€Gà”-ð 
ð 
ˆð!
Ø×Ò¨d¸W¸IÐÑFÔFð!
à�v”|×+Ò+Ñ-Ô-ð!
ð !
ˆ�”ÑÐõ
 Ý$ÝÝ.à$ dðàðð Ð+ðð ð	
ñ 	
ô 	
ñ
ô 
ð 
rY   r†   Úboolc                ó   — | j         dk    S )Nzchat.completion.chunk)r+  )r†   s    rV   rƒ   rƒ   û  s   € ð ÔÐ6Ò6Ð6rY   r  )r†   r6   rG   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   Ú
_streamingr4   r5   Ú
types.chatr6   r7   r8   Ú_exceptionsr9   r:   Útypes.chat.chat_completionr;   Ú types.chat.chat_completion_chunkr<   rØ   Ú#types.chat.completion_create_paramsr=   ÚResponseFormatParamr?   r•   r¤   r·   rR   rÙ   rù   rƒ   rf   rY   rV   ú<module>rB     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ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bØ 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ðIð Ið Ið Ið I˜7 ?Ô3ñ Iô Ið IðX,"ð ,"ð ,"ð ,"ð ," '¨/Ô":ñ ,"ô ,"ð ,"ð^Ið Ið Ið Ið I ¨Ô 8ñ Iô Ið IðX,(ð ,(ð ,(ð ,(ð ,( w¨Ô'?ñ ,(ô ,(ð ,(ð^bð bð bð bð b ¨Ô 8ñ bô bð bðJ	X-ð X-ð X-ð X-ð X-ñ X-ô X-ð X-ðvð ð ð ð.7ð 7ð 7ð 7ð 7ð 7rY   