Ë
    ÂXÕi‡T  ã                  ó8  — 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mZ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-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)ÚInputTokenDetailsÚOutputTokenDetailsÚUsageMetadata)Ú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      úf/root/rosshost/parking-map/parking-api/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_givenr2   4   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)r2   Úhasattrr5   r*   )r-   r4   s     r#   Ú_process_inputsr7   C   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«      |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Ú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)r2   Úgetr(   Ústrr'   )Ú
model_typeÚproviderÚprepopulated_invocation_paramsrO   ÚkwargsÚstrippedr9   Úallowed_invocation_keysr/   r0   Úinvocation_paramss              r#   Ú_infer_invocation_paramsre   U   só   € ô   Ó'€Hà�<‰<˜Ó€DÙ”
˜4¤Ô%ØˆvˆòÐð4 "Ÿ™Ó)÷Ù��A¨QÐ2IÒ-Iˆˆ1‰ðÐñ ñ Ø15ÐÐ-Ñ.ð  Ø#Ø!Ÿ™ gÓ.Ø"Ÿ,™, }Ó5Ø!Ÿ™ lÓ3ò -Ø�<‰<Ð/Ó0ò-à�<‰<Ð+Ó,Øð!
Ø,ð!
àð!
ñð ùós   Á	CÁC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Údeltarj   rk   Úfunction_call)ÚnameÚ	argumentsrn   ro   Ú
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ùó   ‚%”%c              3  óN   K  — | ]  }|j                   sŒ|j                   –— Œ y ­wrs   )Útyperu   s     r#   rx   z"_reduce_choices.<locals>.<genexpr>·   s   è ø€ ÒI¨À!Ç&Ã&˜aŸf�fÑIùry   )Úindexrt   r{   Úfunctionr}   r   r|   c              3  óN   K  — | ]  }t        |d d«      r|j                  –— Œ y­w)Úfinish_reasonN)Úgetattrr   ru   s     r#   rx   z"_reduce_choices.<locals>.<genexpr>Ç   s(   è ø€ ò àÜ˜1˜o¨tÔ4ð —•ñùs   ‚#%)r|   r   Úmessage)ÚlistÚreversedr6   r€   rl   rj   r   rk   r\   rm   rp   r|   r   ÚrangeÚmaxÚkeysr'   Únextr}   )ÚchoicesÚreversed_choicesr�   rw   rp   Ú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Øó FˆÜ�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ò F˜	Ø" 9§?¡?Ñ3×:Ñ:¸9ÕEòFð!Fñ$ Ü/4´S¸¿¹Ó9JÓ5KÈaÑ5OÓ/PÖ Q¨!¢Ò 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�   rg   rh   ri   ÚusageÚusage_metadata)
r   r‚   rˆ   r|   r   Ú
model_dumpÚvaluesr‘   ÚpopÚ_create_usage_metadata)Ú
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ö
Ø)0ŒO˜GÕ$ò
ˆˆ)Šð ˜)¨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   rh   r“   Útextrˆ   )rˆ   r    r   Újoinr–   )rš   Úall_contentr�   rk   r-   s        r#   Ú_reduce_completionsr£   ç   s”   € Ø€KØò (ˆØ—-‘- Ñ"×'Ñ'ˆØÑØ×Ñ˜wÕ'ð(ð �g‰g�kÓ"€GÙØ�r‰N×%Ñ%Ó'ˆØ Ð)Ð*ˆˆ)‰ð €Hð ˜& 'Ð*Ð+Ð,ˆà€Hó    c                ó,  — |dv r|nd }|r|› d�nd}| j                  d«      xs | j                  d«      xs d}| j                  d«      xs | j                  d«      xs d}| j                  d	«      xs ||z   }d
| j                  d«      xs | j                  d«      xs i j                  d«      |› d�| j                  d«      xs | j                  d«      xs i j                  d«      i}d
| j                  d«      xs | j                  d«      xs i j                  d«      |› d�| j                  d«      xs | j                  d«      xs i j                  d«      i}|r<||j                  |› d�«      xs dz
  ||<   ||j                  |› d�«      xs dz
  ||<   t        |||t        di |j                  «       D �	�
ci c]  \  }	}
|
€Œ	|	|
“Œ c}
}	¤Žt	        di |j                  «       D �	�
ci c]  \  }	}
|
€Œ	|	|
“Œ c}
}	¤Ž¬«      S c c}
}	w c c}
}	w )N)ÚpriorityÚflexrŽ   rh   Úprompt_tokensÚinput_tokensr   Úcompletion_tokensÚoutput_tokensÚtotal_tokensÚaudioÚprompt_tokens_detailsÚinput_tokens_detailsÚaudio_tokensÚ
cache_readÚcached_tokensÚcompletion_tokens_detailsÚoutput_tokens_detailsr?   Úreasoning_tokens)r©   r«   r¬   Úinput_token_detailsÚoutput_token_details© )r\   r   r   r'   r   )r�   rE   Úrecognized_service_tierÚservice_tier_prefixr©   r«   r¬   r¶   r·   r/   r0   s              r#   r™   r™   ÷   s”  € ð %Ð(<Ñ<‰À$ð ñ *AÐ"Ð
# 1Ñ%Àbð ð
 	×Ñ˜OÓ,ÒX°×0CÑ0CÀNÓ0SÒXÐWXð ð 	×ÑÐ/Ó0ò 	Ø×Ñ˜Ó/ò	àð ð
 #×&Ñ& ~Ó6ÒV¸,ÈÑ:V€LàØ×ÑÐ 7Ó8ò Ø×"Ñ"Ð#9Ó:òàß
‰#ˆnÓ
ØÐ
˜zÐ*Ø×ÑÐ 7Ó8ò Ø×"Ñ"Ð#9Ó:òàß
‰#ˆoÓ
ð!Ðð 	Ø×ÑÐ ;Ó<ò Ø×"Ñ"Ð#:Ó;òàß
‰#ˆnÓ
ØÐ
˜yÐ)Ø×ÑÐ ;Ó<ò Ø×"Ñ"Ð#:Ó;òàß
‰#Ð Ó
!ð"Ðñ ð 8DØ×#Ñ#Ð':Ð&;¸:Ð$FÓGÒLÈ1ñ8
ÐÐ3Ñ4ð 9FØ ×$Ñ$Ð(;Ð'<¸IÐ%FÓGÒLÈ1ñ9
ÐÐ4Ñ5ô Ø!Ø#Ø!Ü-ñ 
Ø 3× 9Ñ 9Ó ;×M™˜˜1¸q¹}ˆq�!‰tÓMñ
ô 0ñ 
Ø 4× :Ñ :Ó <×N™˜˜1ÀÁˆq�!‰tÓNñ
ô
ð 
ùó
 Nùó Os   Ç 
H
ÇH
Ç/
HÇ:H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”   rE   r•   z"Error processing chat completion: Úoutput)r6   Úcallabler¼   r*   r–   r˜   r™   r\   ÚBaseExceptionr+   Údebug)ÚoutputsÚrdictr�   r1   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œ‰¤Ž}  |‰«      | i |¤ŽS ©NÚllmÚstreamT©rn   Úrun_typeÚ	reduce_fnÚprocess_inputsÚ_invocation_params_fnÚprocess_outputsr¸   ©r   Ú	traceabler\   r7   ©	Úargsra   Ú	decoratorÚinvocation_params_fnrn   Úoriginal_createrÎ   rË   Útextras	      €€€€€€r#   Úcreatez_get_wrapper.<locals>.create^  s_   ø€ ä×)Ñ)ð 
ØØØ#)§:¡:¨hÓ#7¸4Ñ#?‘iÀTÜ*Ø"6Ø+ñ
ð ñ
ˆ	ð *‰y˜Ó)¨4Ð:°6Ñ:Ð:r¤   c            
   Ÿ  ó¦   •K  — t        j                  d‰d|j                  d«      du r‰nd t        ‰‰dœ‰¤Ž}  |‰«      | i |¤Žƒ d {  –—† S 7 Œ­wrÆ   rÏ   rÑ   s	      €€€€€€r#   Úacreatez_get_wrapper.<locals>.acreatel  si   øè ø€ ä×)Ñ)ð 
ØØØ#)§:¡:¨hÓ#7¸4Ñ#?‘iÀTÜ*Ø"6Ø+ñ
ð ñ
ˆ	ð 0‘Y˜Ó/°Ð@¸Ñ@×@Ð@Ð@ús   ƒAAÁ
AÁA©Ú	functoolsÚwrapsr   Úis_async)	rÕ   rn   rË   Útracing_extrarÔ   rÎ   r×   rÙ   rÖ   s	   ``` ``  @r#   Ú_get_wrapperrß   T  sn   ý€ ð Ò ˜b€Fä‡_�_�_Ó%÷;ð ;ó &ð;ô ‡_�_�_Ó%÷
Að 
Aó &ð
Aô "×*Ñ*¨?Ô;ˆ7ÐGÀÐGr¤   c                óÎ   ‡ ‡‡‡‡— |xs i Št        j                  ‰ «      ˆˆˆ ˆˆfd„«       }t        j                  ‰ «      ˆˆˆ ˆˆfd„«       }t        j                  ‰ «      r|S |S )Nc            
     ó`   •— t        j                  d‰dd t        ‰‰dœ‰¤Ž}  |‰«      | i |¤ŽS ©NrÇ   rÉ   r¸   ©r   rÐ   r7   ©rÒ   ra   rÓ   rÔ   rn   Úoriginal_parserÎ   rÖ   s      €€€€€r#   r¼   z!_get_parse_wrapper.<locals>.parse…  sM   ø€ ä×)Ñ)ð 
ØØØÜ*Ø"6Ø+ñ
ð ñ
ˆ	ð )‰y˜Ó(¨$Ð9°&Ñ9Ð9r¤   c            
   Ÿ  ó|   •K  — t        j                  d‰dd t        ‰‰dœ‰¤Ž}  |‰«      | i |¤Žƒ d {  –—† S 7 Œ­wrâ   rã   rä   s      €€€€€r#   Úaparsez"_get_parse_wrapper.<locals>.aparse’  sW   øè ø€ ä×)Ñ)ð 
ØØØÜ*Ø"6Ø+ñ
ð ñ
ˆ	ð /‘Y˜~Ó.°Ð?¸Ñ?×?Ð?Ð?ús   ƒ2<µ:¶<rÚ   )rå   rn   rÎ   rÞ   rÔ   r¼   rç   rÖ   s   ``` `  @r#   Ú_get_parse_wrapperrè   |  sc   ü€ ð Ò ˜b€Fä‡_�_�^Ó$÷
:ó %ð
:ô ‡_�_�^Ó$÷
@ó %ð
@ô !×)Ñ)¨.Ô9ˆ6ÐD¸uÐDr¤   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î   ¢  s6   € Øò AˆØ�:‰:Ð-Ó-Ü0°·±Ó@Ò@ðAð €Ir¤   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚTracingExtrazOptional[Mapping[str, Any]]ÚmetadatazOptional[list[str]]ÚtagszOptional[ls_client.Client]r   N)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r¸   r¤   r#   rð   rð   ©  s   … Ø)Ó)Ø
ÓØ&Ô&r¤   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.
    rñ   r[   Úopenair   )ÚAsyncAzureOpenAIÚAzureOpenAIÚazureÚAzureChatOpenAIrþ   ÚchatF)rÞ   rÔ   rÎ   rÇ   )rÞ   rÔ   ÚbetaÚcompletionsr¼   Ú	responsesr×   T)rÎ   rÞ   rÔ   )Údictr\   r˜   r'   rü   rý   rþ   r(   r    rß   r  r  r×   rž   rÛ   Úpartialre   rÃ   r£   r6   r  rè   r¼   r  rî   rê   )r   rÞ   rù   rú   rñ   r`   r/   r0   Útracing_extra_restrU   rý   rþ   s               r#   Úwrap_openair  ¯  sW  € ð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”   rE   r•   r½   )r6   r¾   r¼   r*   r–   r˜   r™   r\   )rë   r½   r”   s      r#   rê   rê   v  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-   r  r  r  )
r^   r]   r_   r]   r`   r  rO   Úboolra   r  )rˆ   zlist[Choice]r  r  )rš   zlist[ChatCompletionChunk]r  r  )rš   zlist[Completion]r  r  rs   )r�   r  rE   zOptional[str]r  r   )rÁ   r   )NNN)rÕ   r   rn   r]   rË   r   rÞ   úOptional[TracingExtra]rÔ   úOptional[Callable]rÎ   r  r  r   )NN)rå   r   rn   r]   rÎ   r   rÞ   r  rÔ   r  r  r   )rì   zlist[ResponseStreamEvent]r  r  )
r   r   rÞ   r  rù   r]   rú   r]   r  r   )rë   r   r  r  )8Ú
__future__r   rÛ   ÚloggingÚcollectionsr   Úcollections.abcr   Útypingr   r   r   r	   r
   r   Útyping_extensionsr   Ú	langsmithr   Ú	ls_clientr   Úlangsmith.schemasr   r   r   rü   r   r   Ú'openai.types.chat.chat_completion_chunkr   r   r   Úopenai.types.completionr   Úopenai.types.responsesr   r   Ú	getLoggerró   r+   Ú	lru_cacher$   r2   r7   re   r‘   rž   r£   r™   rÃ   rß   rè   rî   rð   r  rê   r¸   r¤   r#   ú<module>r     s  ðÝ "ã Û Ý #Ý #÷÷ õ (å )Ý !ß RÑ Ráß*÷ñ õ
 3Ý:ñ ˆC�u˜X }°cÐ9Ñ:Ô;€Ø	ˆ×	Ñ	˜8Ó	$€ð ×Ñòó ðóóð$<Øð<àð<ð %)ð<ð ð	<ð
 ó<ó~;ó|ó*ð" :>ðAØðAØ)6ð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r¤   