Ë
    ³ŒjYO  ã                  ó.  — d dl mZ d dlZd dl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 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ e	rd dlmZmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#  ededde
f   ¬«      Z$ ejJ                  e&«      Z'ejP                  d'd„«       Z)d(d„Z*d(d„Z+	 	 	 	 	 	 	 	 	 	 d)d„Z,d*d„Z-d+d„Z.d,d„Z/d-d„Z0d.d„Z1	 	 	 d/	 	 	 	 	 	 	 	 	 	 	 	 	 d0d„Z2	 	 d1	 	 	 	 	 	 	 	 	 	 	 d2d„Z3d3d„Z4 G d„ d ed!¬"«      Z5dd#dd$œ	 	 	 	 	 	 	 	 	 d4d%„Z6d5d&„Z7y)6é    )ÚannotationsN)Údefaultdict)ÚMapping)ÚTYPE_CHECKINGÚAnyÚCallableÚOptionalÚTypeVarÚUnion)Ú	TypedDict)Úclient)Úrun_helpers)Úapply_default_ls_agent_type)Ú_create_usage_metadata)ÚAsyncOpenAIÚOpenAI)ÚChatCompletionChunkÚChoiceÚChoiceDeltaToolCall)Ú
Completion)ÚResponseStreamEventÚCr   r   )Úboundc                 ó¤   — g } 	 ddl m}m} | j                  |«       | j                  |«       t        | «      S # t        $ r Y t        | «      S w xY w)z4Get NotGiven/Omit sentinel types used by OpenAI SDK.r   )ÚNotGivenÚOmit)Úopenai._typesr   r   ÚappendÚImportErrorÚtuple)Útypesr   r   s      úd/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/wrappers/_openai.pyÚ_get_omit_typesr#   *   sS   € ð  €Eðß0à�‰�XÔØ�‰�TÔô �‹<Ðøô ò Øä�‹<Ððús   „*9 ¹	AÁAc                ó  — 	 t        «       }|s| S | j                  «       D ��ci c]'  \  }}t        ||«      s|j                  d«      r|�||“Œ) c}}S c c}}w # t        $ r$}t
        j                  d|› �«       | cY d }~S d }~ww xY w)NÚextra_zError stripping NotGiven: )r#   ÚitemsÚ
isinstanceÚ
startswithÚ	ExceptionÚloggerÚerror)ÚdÚ
omit_typesÚkÚvÚes        r"   Ú_strip_not_givenr1   9   s�   € ðÜ$Ó&ˆ
ÙØˆHð Ÿ™œ	ô
á!‘��1Ü˜q *Ô-°!·,±,¸xÔ2HÈQÈYð ˆq‰DØ!ò
ð 	
ùó 
øô
 ò Ü�‰Ð1°!°Ð5Ô6Ø�ûðús3   ‚A �A £,AÁA ÁA Á	BÁ"BÁ;BÂBc                ó”   — t        | «      } d| v r(| d   }t        |d«      r	 i | ¥d|j                  «       i¥S | S # t        $ r Y | S w xY w)zCStrip `NotGiven` values and serialize `text_format` to JSON schema.Útext_formatÚmodel_json_schema)r1   Úhasattrr4   r)   )r,   r3   s     r"   Ú_process_inputsr6   H   su   € ä˜Ó€Að ˜ÑØ˜Ñ&ˆÜ�;Ð 3Ô4ððØðà! ;×#@Ñ#@Ó#Bñð ð €Høô ò ØØ€Hðús   ¢: º	AÁAc           	     óæ  — t        |«      }|j                  d«      }|rt        |t        «      r|g}h d£}|j	                  «       D ��	ci c]  \  }}	||v sŒ||	“Œ }
}}	|rd|
d<   |j                  d«      }t        |t
        «      si }i |¥|| |j                  d«      |j                  d«      |j                  d«      xs$ |j                  d	«      xs |j                  d
«      |i |¥|
¥dœ¥S c c}	}w )NÚstop>   ÚnÚseedÚuserÚtop_pÚlogprobsÚ	reasoningÚ	verbosityÚ
logit_biasÚ
modalitiesÚ
predictionÚ
truncationÚservice_tierÚtop_logprobsÚstream_optionsÚresponse_formatÚpresence_penaltyÚprompt_cache_keyÚreasoning_effortÚfrequency_penaltyÚweb_search_optionsÚparallel_tool_callsTÚuse_responses_apiÚmetadataÚmodelÚtemperatureÚ
max_tokensÚmax_completion_tokensÚmax_output_tokens)Úls_providerÚls_model_typeÚls_model_nameÚls_temperatureÚls_max_tokensÚls_stopÚls_invocation_params)r1   Úgetr'   Ústrr&   r   )Ú
model_typeÚproviderÚprepopulated_invocation_paramsrN   ÚkwargsÚstrippedr8   Úallowed_invocation_keysr.   r/   Úinvocation_paramsÚrequest_metadatas               r"   Ú_infer_invocation_paramsrf   Z   s   € ô   Ó'€Hà�<‰<˜Ó€DÙ”
˜4¤Ô%ØˆvˆòÐð4 "Ÿ™Ô)ôÙ)‘��A¨QÐ2IÒ-Iˆˆ1‰Ð)ð ñ ñ Ø15ÐÐ-Ñ.à—|‘| JÓ/ÐÜÐ&¬Ô0ØÐðØ
ðàØ#Ø!Ÿ™ gÓ.Ø"Ÿ,™, }Ó5Ø!Ÿ™ lÓ3ò -Ø�<‰<Ð/Ó0ò-à�<‰<Ð+Ó,Øð!
Ø,ð!
àð!
òð ùós   Á	C-ÁC-c                óž   — t        | «      }t        |j                  d«      xs i «      }t        |t        j                  «       «       ||d<   |S )a$  Return textra with ls_agent_type defaulted at the wrapper-config layer.

    A user-supplied value (including None) is preserved unchanged; None flows
    through as an explicit opt-out that overrides any propagated parent tag via
    traceable's metadata_.update(wrapper_metadata) step.
    rO   )Údictr\   r   r   Úget_current_run_tree)ÚtextraÚresultrO   s      r"   Ú$_traceable_kwargs_with_ls_agent_typerl   ž   sG   € ô �&‹\€FÜ�F—J‘J˜zÓ*Ò0¨bÓ1€HÜ ¬+×*JÑ*JÓ*LÔMØ!€Fˆ:ÑØ€Mó    c                óœ  — t        t        | «      «      }dddœ}|D ]A  }t        |d«      sŒt        |j                  dd «      sŒ(|j                  j
                  |d<    n t        t         «      }| D �]5  }t        |d«      sŒt        |j                  dd «      r!|dxx   |j                  j                  z  cc<   t        |j                  dd «      r|j                  d«      sdddœ|d<   t        |j                  j                  d	d «      }|r|d   d	xx   |z  cc<   t        |j                  j                  d
d «      }|r|d   d
xx   |z  cc<   t        |j                  dd «      sŒ÷|j                  j                  }|€�Œ|D ]   }||j                     j                  |«       Œ" �Œ8 |rôt        t        |j                  «       «      dz   «      D �	cg c]  }	d ‘Œ c}	|d<   |j!                  «       D ]«  \  }
}|
t#        d„ |D «       d «      t#        d„ |D «       d «      dddœdœ|d   |
<   |D ]o  }t        |dd «      sŒt        |j$                  d	d «      }|r|d   |
   d   d	xx   |z  cc<   t        |j$                  d
d «      }|sŒZ|d   |
   d   d
xx   |z  cc<   Œq Œ­ | rt        | d   dd«      ndt#        d„ |D «       d «      |dœS c c}	w )NÚ	assistantÚ ©ÚroleÚcontentÚdeltarr   rs   Úfunction_call)ÚnameÚ	argumentsrv   rw   Ú
tool_callsé   c              3  óN   K  — | ]  }|j                   sŒ|j                   –— Œ y ­w©N)Úid©Ú.0Úcs     r"   Ú	<genexpr>z"_reduce_choices.<locals>.<genexpr>Î   s   è ø€ ÐCÑ*: Q¸a¿d»d˜AŸD�DÑ*:ùó   ‚%”%c              3  óN   K  — | ]  }|j                   sŒ|j                   –— Œ y ­wr{   )Útyper}   s     r"   r€   z"_reduce_choices.<locals>.<genexpr>Ï   s   è ø€ ÐIÑ.>¨À!Ç&Ã&˜aŸf�fÑ.>ùr�   )Úindexr|   rƒ   Úfunctionr…   r   r„   c              3  óN   K  — | ]  }t        |d d«      r|j                  –— Œ y­w)Úfinish_reasonN)Úgetattrr‡   r}   s     r"   r€   z"_reduce_choices.<locals>.<genexpr>ß   s(   è ø€ ð á)�AÜ˜1˜o¨tÔ4ð —•Ù)ùs   ‚#%)r„   r‡   Úmessage)ÚlistÚreversedr5   rˆ   rt   rr   r   rs   r\   ru   rx   r„   r   ÚrangeÚmaxÚkeysr&   Únextr…   )ÚchoicesÚreversed_choicesr‰   r   rx   Úname_Ú
arguments_Útool_calls_listÚ	tool_callÚ_r„   Útool_call_chunksÚchunks                r"   Ú_reduce_choicesr™   ¬   sÇ  € ÜœH WÓ-Ó.ÐàØñ€Gó ˆÜ�1�gÕ¤7¨1¯7©7°F¸DÕ#AØŸg™gŸl™lˆG�F‰OÙð ô ?JÌ$Ó>O€JÜˆÜ�1�gÕÜ�q—w‘w 	¨4Ô0Ø˜	Ó" a§g¡g§o¡oÑ5Ó"Ü�q—w‘w °Ô6Ø—{‘{ ?Ô3Ø8:ÈÑ/L�G˜OÑ,Ü §¡× 5Ñ 5°v¸tÓD�ÙØ˜OÑ,¨VÓ4¸Ñ=Ó4Ü$ Q§W¡W×%:Ñ%:¸KÈÓN�
ÙØ˜OÑ,¨[Ó9¸ZÑGÓ9Ü�q—w‘w ¨dÕ3Ø"#§'¡'×"4Ñ"4�Ø"Ò.Û%4˜	Ø" 9§?¡?Ñ3×:Ñ:¸9ÕEò &5ð! ñ$ Ü/4´S¸¿¹Ó9JÓ5KÈaÑ5OÔ/PÓ QÑ/P¨!¢Ð/PÑ Qˆ�ÑØ'1×'7Ñ'7Ö'9Ñ#ˆEÐ#àÜÑCÑ*:ÓCÀTÓJÜÑIÑ.>ÓIÈ4ÓPØ%'°bÑ9ñ	,ˆG�LÑ! %Ñ(ó *�Ü˜5 *¨dÕ3Ü# E§N¡N°F¸DÓA�EÙØ Ñ-¨eÑ4°ZÑ@ÀÓHÈEÑQÓHÜ!(¨¯©¸ÀdÓ!K�JÚ!Ø Ñ-¨eÑ4°ZÑ@ÀÓMØ&ñÔMñ *ð (:ñ$ 5<”˜ ™ W¨aÔ0ÀÜñá)óð
 ó
ð ñð ùò% !Rs   Ç	K	c                óv  — t        t        «      }| D ]1  }|j                  D ]   }||j                     j	                  |«       Œ" Œ3 | r>| d   j                  «       }|j                  «       D �cg c]  }t        |«      ‘Œ c}|d<   n
dddddœigi}|j                  dd «      }|rt        |«      nd |d<   |S c c}w )	Néÿÿÿÿr�   r‰   ro   rp   rq   ÚusageÚusage_metadata)
r   rŠ   r�   r„   r   Ú
model_dumpÚvaluesr™   Úpopr   )Ú
all_chunksÚchoices_by_indexr˜   Úchoicer,   r�   Úoai_token_usages          r"   Ú_reduce_chatr¥   ê   sÎ   € Ü7BÄ4Ó7HÐÛˆØ—m”mˆFØ˜VŸ\™\Ñ*×1Ñ1°&Õ9ñ $ð ñ Ø�r‰N×%Ñ%Ó'ˆà4D×4KÑ4KÔ4Mó
Ù4M¨ŒO˜GÕ$Ð4Mñ
ˆˆ)Šð ˜)¨kÀbÑ%IÐJÐKÐLˆð —e‘e˜G TÓ*€Oá3BÔ˜Ô/Èð ÐÑð €Hùò
s   Á-B6c                óà   — g }| D ]/  }|j                   d   j                  }|€Œ|j                  |«       Œ1 dj                  |«      }| r| d   j	                  «       }d|ig|d<   |S dd|igi}|S )Nr   rp   r›   Útextr�   )r�   r§   r   Újoinrž   )r¡   Úall_contentr˜   rs   r,   s        r"   Ú_reduce_completionsrª   ÿ   s�   € Ø€KÛˆØ—-‘- Ñ"×'Ñ'ˆØÑØ×Ñ˜wÕ'ð ð �g‰g�kÓ"€GÙØ�r‰N×%Ñ%Ó'ˆØ Ð)Ð*ˆˆ)‰ð €Hð ˜& 'Ð*Ð+Ð,ˆà€Hrm   c                óv  — 	 t        | d«      r&t        | j                  «      r	 | j                  «       } | j	                  «       }|j                  dd «      }|rt        ||j                  d«      «      nd |d<   |S # t        $ r Y ŒQw xY w# t        $ r&}t        j                  d|› �«       d| icY d }~S d }~ww xY w)NÚparserœ   rD   r�   z"Error processing chat completion: Úoutput)r5   Úcallabler¬   r)   rž   r    r   r\   ÚBaseExceptionr*   Údebug)ÚoutputsÚrdictr¤   r0   s       r"   Ú_process_chat_completionr³     sÁ   € ð#ô
 �7˜GÔ$¬°'·-±-Ô)@ðØ!Ÿ-™-›/�ð ×"Ñ"Ó$ˆØŸ)™) G¨TÓ2ˆñ ô # ?°E·I±I¸nÓ4MÔNàð 	ÐÑð
 ˆøô ò Ùðûô ò #Ü�‰Ð9¸!¸Ð=Ô>Ø˜'Ð"Õ"ûð#ús@   ‚!B	 ¤A: ´AB	 Á:	BÂB	 ÂBÂB	 Â		B8ÂB3Â-B8Â3B8c                óÔ   ‡ ‡‡‡‡‡— |xs i Št        j                  ‰ «      ˆˆˆ ˆˆˆfd„«       }t        j                  ‰ «      ˆˆˆ ˆˆˆfd„«       }t        j                  ‰ «      r|S |S )Nc            
     óœ   •— t        j                  d‰d|j                  d«      du r‰nd t        ‰‰dœt	        ‰«      ¤Ž}  |‰«      | i |¤ŽS ©NÚllmÚstreamT©rv   Úrun_typeÚ	reduce_fnÚprocess_inputsÚ_invocation_params_fnÚprocess_outputs© ©r   Ú	traceabler\   r6   rl   ©	Úargsra   Ú	decoratorÚinvocation_params_fnrv   Úoriginal_creater¾   r»   rj   s	      €€€€€€r"   Úcreatez_get_wrapper.<locals>.create2  sd   ø€ ä×)Ñ)ð 
ØØØ#)§:¡:¨hÓ#7¸4Ñ#?‘iÀTÜ*Ø"6Ø+ñ
ô 3°6Ó:ñ
ˆ	ð *‰y˜Ó)¨4Ð:°6Ñ:Ð:rm   c            
   Ÿ  ó¸   •K  — t        j                  d‰d|j                  d«      du r‰nd t        ‰‰dœt	        ‰«      ¤Ž}  |‰«      | i |¤Žƒ d {  –—† S 7 Œ­wr¶   rÀ   rÂ   s	      €€€€€€r"   Úacreatez_get_wrapper.<locals>.acreate@  sn   øè ø€ ä×)Ñ)ð 
ØØØ#)§:¡:¨hÓ#7¸4Ñ#?‘iÀTÜ*Ø"6Ø+ñ
ô 3°6Ó:ñ
ˆ	ð 0‘Y˜Ó/°Ð@¸Ñ@×@Ð@Ð@ús   ƒAAÁAÁA©Ú	functoolsÚwrapsr   Úis_async)	rÆ   rv   r»   Útracing_extrarÅ   r¾   rÇ   rÉ   rj   s	   ``` ``  @r"   Ú_get_wrapperrÏ   (  sn   ý€ ð Ò ˜b€Fä‡_�_�_Ó%÷;ð ;ó &ð;ô ‡_�_�_Ó%÷
Að 
Aó &ð
Aô "×*Ñ*¨?Ô;ˆ7ÐGÀÐGrm   c                óÎ   ‡ ‡‡‡‡— |xs i Št        j                  ‰ «      ˆˆˆ ˆˆfd„«       }t        j                  ‰ «      ˆˆˆ ˆˆfd„«       }t        j                  ‰ «      r|S |S )Nc            
     ór   •— t        j                  d‰dd t        ‰‰dœt        ‰«      ¤Ž}  |‰«      | i |¤ŽS ©Nr·   r¹   r¿   ©r   rÁ   r6   rl   ©rÃ   ra   rÄ   rÅ   rv   Úoriginal_parser¾   rj   s      €€€€€r"   r¬   z!_get_parse_wrapper.<locals>.parseY  sR   ø€ ä×)Ñ)ð 
ØØØÜ*Ø"6Ø+ñ
ô 3°6Ó:ñ
ˆ	ð )‰y˜Ó(¨$Ð9°&Ñ9Ð9rm   c            
   Ÿ  óŽ   •K  — t        j                  d‰dd t        ‰‰dœt        ‰«      ¤Ž}  |‰«      | i |¤Žƒ d {  –—† S 7 Œ­wrÒ   rÓ   rÔ   s      €€€€€r"   Úaparsez"_get_parse_wrapper.<locals>.aparsef  s\   øè ø€ ä×)Ñ)ð 
ØØØÜ*Ø"6Ø+ñ
ô 3°6Ó:ñ
ˆ	ð /‘Y˜~Ó.°Ð?¸Ñ?×?Ð?Ð?ús   ƒ;A¾A¿ArÊ   )rÕ   rv   r¾   rÎ   rÅ   r¬   r×   rj   s   ``` `  @r"   Ú_get_parse_wrapperrØ   P  sc   ü€ ð Ò ˜b€Fä‡_�_�^Ó$÷
:ó %ð
:ô ‡_�_�^Ó$÷
@ó %ð
@ô !×)Ñ)¨.Ô9ˆ6ÐD¸uÐDrm   c                ó`   — | D ](  }|j                   dk(  sŒt        |j                  «      c S  i S )Nzresponse.completed)rƒ   Ú_process_responses_api_outputÚresponse)ÚeventsÚevents     r"   Ú_reduce_response_eventsrÞ   v  s/   € ÛˆØ�:‰:Ð-Ó-Ü0°·±Ó@Ò@ð ð €Irm   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚTracingExtrazOptional[Mapping[str, Any]]rO   zOptional[list[str]]ÚtagszOptional[ls_client.Client]r   N)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r¿   rm   r"   rà   rà   }  s   … Ø)Ó)Ø
ÓØ&Ô&rm   rà   F)ÚtotalÚ
ChatOpenAI)rÎ   Ú	chat_nameÚcompletions_namec               ó¨  — |xs i }t        |j                  d«      xs i «      }|j                  di «      }|j                  «       D ��ci c]  \  }}|dk7  sŒ||“Œ }}}|r||d<   d}		 ddlm}
m} t        | |«      st        | |
«      rd}	d}d}t        | j                  j                  j                  |t        |t        j                  t         d	|	|d
«      t"        ¬«      | j                  j                  _        t        | j                  j                  |t$        |t        j                  t         d|	|d
«      ¬«      | j                  _        t'        | d«      rÚt'        | j(                  d	«      rÄt'        | j(                  j                  d«      r¤t'        | j(                  j                  j                  d«      rzt+        | j(                  j                  j                  j,                  |t"        |t        j                  t         d	|	|d
«      ¬«      | j(                  j                  j                  _        t'        | d	«      rœt'        | j                  d«      r†t'        | j                  j                  d«      rft+        | j                  j                  j,                  |t"        |t        j                  t         d	|	|d
«      ¬«      | j                  j                  _        t'        | d«      rÕt'        | j.                  d«      rWt        | j.                  j                  |t0        t2        |t        j                  t         d	|	|d«      ¬«      | j.                  _        t'        | j.                  d«      rRt+        | j.                  j,                  |t2        |t        j                  t         d	|	|d«      ¬«      | j.                  _        | S c c}}w # t        $ r Y �Œ@w xY w)ay  Patch the OpenAI client to make it traceable.

    Supports:
        - Chat and Responses API's
        - Sync and async OpenAI clients
        - `create` and `parse` methods
        - With and without streaming
        - `with_raw_response` API for accessing HTTP headers

    Args:
        client: The client to patch.
        tracing_extra: Extra tracing information.
        chat_name: The run name for the chat completions endpoint.
        completions_name: The run name for the completions endpoint.

    Returns:
        The patched client.

    Example:
        ```python
        import openai
        from langsmith import wrappers

        # Use OpenAI client same as you normally would.
        client = wrappers.wrap_openai(openai.OpenAI())

        # Chat API:
        messages = [
            {"role": "system", "content": "You are a helpful assistant."},
            {
                "role": "user",
                "content": "What physics breakthroughs do you predict will happen by 2300?",
            },
        ]
        completion = client.chat.completions.create(
            model="gpt-4o-mini", messages=messages
        )
        print(completion.choices[0].message.content)

        # Responses API:
        response = client.responses.create(
            model="gpt-4o-mini",
            messages=messages,
        )
        print(response.output_text)

        # With raw response to access headers:
        raw_response = client.chat.completions.with_raw_response.create(
            model="gpt-4o-mini", messages=messages
        )
        print(raw_response.headers)  # Access HTTP headers
        completion = raw_response.parse()  # Get parsed response
        ```

    !!! warning "Behavior changed in `langsmith` 0.3.16"

        Support for Responses API added.

    !!! warning "Behavior changed in `langsmith` 0.3.x"

        Support for `with_raw_response` API added.
    rO   r[   Úopenair   )ÚAsyncAzureOpenAIÚAzureOpenAIÚazureÚAzureChatOpenAIrí   ÚchatF)rÎ   rÅ   r¾   r·   )rÎ   rÅ   ÚbetaÚcompletionsr¬   Ú	responsesrÇ   T)r¾   rÎ   rÅ   )rh   r\   r    r&   rë   rì   rí   r'   r   rÏ   rð   rò   rÇ   r¥   rË   Úpartialrf   r³   rª   r5   rñ   rØ   r¬   ró   rÞ   rÚ   )r   rÎ   rè   ré   rO   r`   r.   r/   Útracing_extra_restrU   rì   rí   s               r"   Úwrap_openairö   ƒ  sY  € ðJ "Ò' R€Mô �M×%Ñ% jÓ1Ò7°RÓ8€HØ%-§\¡\Ð2HÈ"Ó%MÐ"ð '×,Ñ,Ô.ô(Ù.‘��A°!°z³/ˆˆ1‰Ð.ð ñ (ñ Ø)1Ð˜:Ñ&à€Kðß8ä�f˜kÔ*¬j¸ÐAQÔ.RØ!ˆKØ)ˆIØ,Ðô
 &2Ø�‰×Ñ×&Ñ&ØÜØ(Ü&×.Ñ.Ü$ØØØ*Øó
ô 1ô&€F‡K�K×ÑÔ"ô !-Ø×Ñ×!Ñ!ØÜØ(Ü&×.Ñ.Ü$ØØØ*Øó
ô!€F×ÑÔô  	�˜ÔÜ�F—K‘K Ô(Ü�F—K‘K×$Ñ$ mÔ4Ü�F—K‘K×$Ñ$×0Ñ0°'Ô:ä-?Ø�K‰K×Ñ×(Ñ(×.Ñ.ØÜ$Ø,Ü!*×!2Ñ!2Ü(ØØØ.Øó"ô.
ˆ�‰×Ñ×$Ñ$Ô*ô  	�˜ÔÜ�F—K‘K Ô/Ü�F—K‘K×+Ñ+¨WÔ5ä(:Ø�K‰K×#Ñ#×)Ñ)ØÜ$Ø,Ü!*×!2Ñ!2Ü(ØØØ.Øó"ô)
ˆ�‰×ÑÔ%ô ˆv�{Ô#Ü�6×#Ñ# XÔ.Ü&2Ø× Ñ ×'Ñ'ØÜ'Ü =Ø0Ü%.×%6Ñ%6Ü,ØØØ2Øó&ô'ˆF×ÑÔ#ô �6×#Ñ# WÔ-Ü%7Ø× Ñ ×&Ñ&ØÜ-Ø0Ü%.×%6Ñ%6Ü,ØØØ2Øó&ô&ˆF×ÑÔ"ð €Mùóq(øô ò Úðús   Á
N>ÁN>Á*&O Ï	OÏOc                óB  — | rz	 t        | d«      r&t        | j                  «      r	 | j                  «       } | j	                  dd¬«      }|j                  dd «      x}rt        ||j                  d«      «      |d<   |S i S # t        $ r Y ŒTw xY w# t        $ r d| icY S w xY w)	Nr¬   TÚjson)Úexclude_noneÚmoderœ   rD   r�   r­   )r5   r®   r¬   r)   rž   r    r   r\   )rÛ   r­   rœ   s      r"   rÚ   rÚ   J  s¸   € Ùð	(ä�x Ô)¬h°x·~±~Ô.FðØ'Ÿ~™~Ó/�Hð ×(Ñ(°dÀÐ(ÓHˆFØŸ
™
 7¨DÓ1Ð1ˆuÐ1Ü+AØ˜6Ÿ:™: nÓ5ó,�Ð'Ñ(ð ˆMð €Iøô !ò Ùðûô ò 	(Ø˜hÐ'Ò'ð	(ús4   „!B ¦A? ¶AB Á?	BÂB Â
BÂB ÂBÂB)Úreturnztuple[type, ...])r,   rh   rû   rh   )
r^   r]   r_   r]   r`   rh   rN   Úboolra   rh   )rj   rh   rû   rh   )r�   zlist[Choice]rû   rh   )r¡   zlist[ChatCompletionChunk]rû   rh   )r¡   zlist[Completion]rû   rh   )r±   r   )NNN)rÆ   r   rv   r]   r»   r   rÎ   úOptional[TracingExtra]rÅ   úOptional[Callable]r¾   rþ   rû   r   )NN)rÕ   r   rv   r]   r¾   r   rÎ   rý   rÅ   rþ   rû   r   )rÜ   zlist[ResponseStreamEvent]rû   rh   )
r   r   rÎ   rý   rè   r]   ré   r]   rû   r   )rÛ   r   rû   rh   )8Ú
__future__r   rË   ÚloggingÚcollectionsr   Úcollections.abcr   Útypingr   r   r   r	   r
   r   Útyping_extensionsr   Ú	langsmithr   Ú	ls_clientr   Ú"langsmith._internal._ls_agent_typer   Úlangsmith._internal._usager   rë   r   r   Ú'openai.types.chat.chat_completion_chunkr   r   r   Úopenai.types.completionr   Úopenai.types.responsesr   r   Ú	getLoggerrâ   r*   Ú	lru_cacher#   r1   r6   rf   rl   r™   r¥   rª   r³   rÏ   rØ   rÞ   rà   rö   rÚ   r¿   rm   r"   Ú<module>r     sô  ðÝ "ã Û Ý #Ý #÷÷ õ (å )Ý !Ý Jõ
 >áß*÷ñ õ
 3Ý:ñ ˆC�u˜X }°cÐ9Ñ:Ô;€Ø	ˆ×	Ñ	˜8Ó	$€ð ×Ñòó ðóóð$AØðAàðAð %)ðAð ð	Að
 óAóHó;ó|ó*ó #ð: -1Ø/3Ø*.ð%HØð%Hà
ð%Hð ð%Hð *ð	%Hð
 -ð%Hð (ð%Hð ó%HðX -1Ø/3ð#EØð#Eà
ð#Eð ð#Eð *ð	#Eð
 -ð#Eð ó#EóLô'�9 Eõ 'ð -1Ø!Ø$ñDØðDð *ðDð ð	Dð
 ðDð óDôNrm   