
    ;i`?                       S SK Jr  S SKrS SKrS SKJrJrJr  S SKJ	r	J
r
JrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  \	(       a  S SKrS S
KJrJr  S SKJ r J!r!J"r"  \" S\SS\
4   S9r#\RH                  " \%5      r&\RN                  S S j5       r(S!S jr)S"S jr*      S#S jr+S$S jr,S%S jr-S&S jr.S'S jr/          S(S jr0        S)S jr1 " S S\SS9r2SS.S*S jjr3g)+    )annotationsN)AsyncIteratorMappingSequence)TYPE_CHECKINGAnyCallableOptionalTypeVarUnion)TypeAdapter)Self	TypedDict)client)run_helpers)InputTokenDetailsUsageMetadata)	AnthropicAsyncAnthropic)
CompletionMessageMessageStreamEventCr   r   )boundc                 :     SSK Jn Jn  X4$ ! [         a     g f = f)Nr   NotGivenOmit)anthropic._typesr   r   ImportErrorr   s     m/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/langsmith/wrappers/_anthropic.py_get_not_givenr"      s%    3 s   
 
c                  ^  [        5       =n(       aC  U R                  5        VV^s0 s H%  u  nm[        U4S jU 5       5      (       a  M"  UT_M'     n nnSU ;   a0  SU S   S./U R                  S/ 5      -   U S'   U R                  S5        U R                  5        VVs0 s H  u  p#Uc  M
  X#_M     snn$ s  snnf ! [         a"  n[        R                  SU 35         S nANS nAff = fs  snnf )Nc              3  <   >#    U  H  n[        TU5      v   M     g 7fN)
isinstance).0tvs     r!   	<genexpr>#_strip_not_given.<locals>.<genexpr>/   s     ?Y:a++Ys   zError stripping NotGiven: system)rolecontentmessages)r"   itemsany	Exceptionloggererrorgetpop)d	not_givenkr)   es      ` r!   _strip_not_givenr;   )   s    7&((9( GGI%DAq?Y?? 1%   1}"*q{CDquuH
 
* 	
hWWY8YTQ!DADY88
  71!5667 9s:   %B= !B7B7B=  	C,-C,7B= =
C)C$$C)c                V   [        U 5      nUR                  S5      nU(       a  [        U[        5      (       a  U/n1 SknUR	                  5        VVs0 s H  u  pEXC;   d  M  XE_M     nnnSSUR                  SS 5      UR                  SS 5      UR                  SS 5      UUS.$ s  snnf )	Nstop>   top_ktop_pstreamthinkingmcp_serversservice_tier	anthropicchatmodeltemperature
max_tokens)ls_providerls_model_typels_model_namels_temperaturels_max_tokensls_stopls_invocation_params)r;   r5   r&   strr0   )kwargsstrippedr=   allowed_invocation_keysr9   r)   invocation_paramss          r!   _infer_ls_paramsrU   <   s    'H<<D
4%%v "))Q-I)  
 #!gt4",,}d;!lD9 1 	s   B%"B%c                f    SSK Jn  Uc5  U R
                  S:X  a  U R                  $ [        SU R
                   S35      eU R
                  S:X  aQ  [        U5      nUR                  U R                  R                  5       5      nUR                  R                  U5        U$ U R
                  S:X  an  UR                  U R                     nUR
                  S	:X  aC  U R                  R
                  S
:X  a)  U=R                   U R                  R                   -  sl        U$ U R
                  S:X  a[  U R                  R"                  Ul        U R                  R$                  Ul        U R&                  R(                  UR&                  l        U$ ! [         a    [        R	                  S5        Us $ f = f)Nr   )ContentBlockzError importing ContentBlockmessage_startzUnexpected event order, got z before "message_start"content_block_startcontent_block_deltatext
text_deltamessage_delta)anthropic.typesrW   r    r3   debugtypemessageRuntimeErrorr   validate_pythoncontent_block
model_dumpr.   appendindexdeltar[   stop_reasonstop_sequenceusageoutput_tokens)eventcurrent_snapshotrW   adaptercontent_block_instancer.   s         r!   _accumulate_eventrq   ^   sz    0
 ::(== *5::,6MN
 	
 zz***<8!(!8!8**,"
 	  ''"	
  
,	,"**5;;7<<6!ekk&6&6,&FLLEKK,,,L  
	&',{{'>'>$).)B)B&/4{{/H/H,=   34 s   F !F0/F0c                ,   S nU  H  n [        X!S9nM     Uc  SU 0$ UR	                  5       n[        UR                  S0 5      5      US'   UR                  SS 5        SU0$ ! [         a(  n[        R                  SU 35        SU 0s S nAs  $ S nAff = f)N)rm   rn   z/Error accumulating event in Anthropic Wrapper: outputrk   usage_metadatar`   ra   )rq   rb   r3   r_   re   _create_usage_metadatar6   )
all_chunksfull_messagechunkr:   r7   s        r!   _reduce_chat_chunksry      s    L	*,5XL  *%%!A0w1CDAEE&$q>  	*LLJ1#NOj))	*s   	A!!
B+BBBc                F   U R                  S5      =(       d    SnU R                  S5      =(       d    SnX-   nSU R                  SS5      U R                  SS5      -   0n[        UUU[        S0 UR                  5        VVs0 s H  u  pVUc  M
  XV_M     snnD6S9$ s  snnf )	Ninput_tokensr   rl   
cache_readcache_creation_input_tokenscache_read_input_tokens)r{   rl   total_tokensinput_token_details )r5   r   r   r0   )anthropic_token_usager{   rl   r   r   r9   r)   s          r!   ru   ru      s    (,,^<AL)--o>C!M/L+//0MqQ

#
#$=q
AB! !#!- 
 3 9 9 ;M ;qtqt ;M
	 
 Ns   	BBc                    / nU  H%  nUR                   nUc  M  UR                  U5        M'     SR                  U5      nU (       a  U S   R                  5       nSU0/US'   U$ SSU0/0nU$ )N r[   choices)
completionrf   joinre   )rv   all_contentrx   r.   r7   s        r!   _reduce_completionsr      s    K""w'  ggk"GrN%%')*) H &'*+,H    c                    U R                  5       nUR                  SS 5      nU(       a  [        U5      OS US'   UR                  SS 5        SU0$ ! [         a&  n[        R                  SU 35        SU 0s S nA$ S nAff = f)Nrk   rt   r`   ra   z"Error processing chat completion: rs   )re   r6   ru   BaseExceptionr3   r_   )outputsrdictr   r:   s       r!   _process_chat_completionr      s    #""$ %		'4 8 % ##89 	
 			&$5!! #9!=>'""#s   AA 
BA<6B<BTracingExtrac                   ^ ^^^ [         R                  " T 5      UU UU4S j5       n[         R                  " T 5      UU UU4S j5       n[        R                  " T 5      (       a  U$ U$ )Nc            
        > UR                  S5      n[        R                  " STSU(       a  TOS [        [        [
        S.TD6nU" T5      " U 0 UD6nU$ Nr@   llm)namerun_type	reduce_fnprocess_inputsprocess_outputs_invocation_params_fnr   r5   r   	traceabler;   r   rU   	argsrQ   r@   	decoratorresultr   original_creater   tracing_extras	        r!   create_get_wrapper.<locals>.create   sa    H%)) 
#)it+4"2
 
	 ?+T<V<r   c            
        >#    UR                  S5      n[        R                  " STSU(       a  TOS [        [        [
        S.TD6nU" T5      " U 0 UD6I S h  vN nU$  N7fr   r   r   s	        r!   acreate_get_wrapper.<locals>.acreate   sm     H%)) 
#)it+4"2
 
	 !14B6BB Cs   AA!AA!)	functoolswrapsr   is_async)r   r   r   r   r   r   s   ````  r!   _get_wrapperr      sZ     ___% & ___% & "**?;;7GGr   c           	     r  ^ ^^^	^
 SSK nS[        T 5      R                  5       ;   n[        R                  " SU[
        S[        [        S.UD6m	[        R                  " SUS[        [        [        S.UD6m
U(       a   " U	U
4S jS5      m " UU 4S	 jS
5      nU$  " U	U
4S jS5      m " UU 4S jS5      nU$ )z;Create a wrapper for Anthropic's streaming context manager.r   Nasyncr   )r   r   r   r   r   )r   r   r   r   r   c                     > \ rS rSr    SS jr\U4S j5       r\SS j5       r\SS j5       rSS jr	SU 4S jjr
SS jrSS	 jrSS
 jrSS jrSS jrSS jr\SS j5       rSrg)6_get_stream_wrapper.<locals>.AsyncMessageStreamWrapperi
  c                    Xl         X l        g r%   _wrapped_kwargsselfwrappedrQ   s      r!   __init__?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__init__      
 !(%r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc                   >#    TR                   R                    S h  vN nU7v   M   N
 [        R                  " 5       nTR                   R	                  5       I S h  vN  n[        U5      Ul        g 7fr%   r   text_streamr   get_current_run_treeget_final_messager   r   )_rx   run_treefinal_messager   s       r!   _text_streamX_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream.<locals>._text_stream  sZ     '+}}'@'@ $e#$'@*??AH*.--*I*I*K$K$KM'?'NH$s+   A6,*,A6,3A6A" A6r   r   r   r   configured_traceable_texts   ` r!   r   B_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream  s+    *O +O $3dll33r   c                .    U R                   R                  $ r%   r   responser   s    r!   r   ?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.response      }}---r   c                .    U R                   R                  $ r%   r   
request_idr   s    r!   r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.request_id#      }}///r   c                ^   #    U R                  5       nUR                  5       I S h  vN $  N7fr%   )	__aiter__	__anext__)r   aiters     r!   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__anext__'  s$     ("__....s   $-+-c               p   >^ #    TU 4S j5       nU" S0 T R                   D6  S h  vN nU7v   M   N
 g 7f)Nc                 8   > TR                   R                  5       $ r%   )r   r   r   r   s    r!   traced_iterU_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__.<locals>.traced_iter,  s    ==2244r   r   r   )r   r   rx   configured_traceables   `  r!   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__+  s=     %5 &5 $/#>#>  %K #>s   6424646c                V   #    U R                   R                  5       I S h  vN   U $  N7fr%   )r   
__aenter__r   s    r!   r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aenter__3  s%     mm..000 1s   )')c                R   #    U R                   R                  " U6 I S h  vN   g  N7fr%   )r   	__aexit__r   excs     r!   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aexit__7       mm--s333   '%'c                T   #    U R                   R                  5       I S h  vN   g  N7fr%   r   closer   s    r!   r   <_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.close:  s     mm))+++   (&(c                R   #    U R                   R                  5       I S h  vN $  N7fr%   r   r   r   s    r!   r   H_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_message=  s     !]]<<>>>>   '%'c                R   #    U R                   R                  5       I S h  vN $  N7fr%   r   get_final_textr   s    r!   r   E_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_text@  s     !]]99;;;;r   c                T   #    U R                   R                  5       I S h  vN   g  N7fr%   r   
until_doner   s    r!   r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.until_doneC  s     mm..000r   c                .    U R                   R                  $ r%   r   current_message_snapshotr   s    r!   r   O_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.current_message_snapshotF      }}===r   r   r   N)r   z4anthropic.lib.streaming._messages.AsyncMessageStreamreturnNone)r  zhttpx.Responser  z
str | Noner  r   )r  z!AsyncIterator[MessageStreamEvent]r  r   r  r  r  r   r  rP   )__name__
__module____qualname____firstlineno__r   propertyr   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   s   r!   AsyncMessageStreamWrapperr   
  s    &M& 	& 	4 	4 . . 0 0/ 4,?<1 > >r   r  c                  0   > \ rS rSrS rU U4S jrS rSrg)>_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapperiJ  c                    Xl         g r%   r   r   rQ   s     r!   r   G_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__init__K      %r   c                   >#    T" S0 U R                   D6U l        U R                  R                  5       I S h  vN nT" U40 U R                   D6$  N7fNr   )r   _managerr   )r   r@   r  original_streams     r!   r   I_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aenter__N  sG      / ?$,, ?#}}77990H4<<HH :s   5AAAc                R   #    U R                   R                  " U6 I S h  vN   g  N7fr%   )r  r   r   s     r!   r   H_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aexit__S  r   r   r   r  N)r
  r  r  r  r   r   r   r  )r  r  s   r!   !AsyncMessagesStreamManagerWrapperr  J  s    &I
4r   r   c                     > \ rS rSr    SS jr\SS j5       r\SS j5       r\U4S j5       rSS jr	U 4S jr
SS jrSS	 jrSS
 jrSS jrSS jrSS jr\SS j5       rSrg)1_get_stream_wrapper.<locals>.MessageStreamWrapperiY  c                    Xl         X l        g r%   r   r   s      r!   r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.__init__Z  r   r   c                .    U R                   R                  $ r%   r   r   s    r!   r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.responseb  r   r   c                .    U R                   R                  $ r%   r   r   s    r!   r   <_get_stream_wrapper.<locals>.MessageStreamWrapper.request_idf  r   r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc               ;     >#    TR                   R                   S h  vN   [        R                  " 5       nTR                   R	                  5       n[        U5      Ul        g  ND7fr%   r   )r   r   r   r   s      r!   r   S_get_stream_wrapper.<locals>.MessageStreamWrapper.text_stream.<locals>._text_streaml  sK     #}}8888*??AH$(MM$C$C$EM'?'NH$ 9s   A$A"AA$r   r   r   s   ` r!   r   =_get_stream_wrapper.<locals>.MessageStreamWrapper.text_streamj  s+    *O +O $3dll33r   c                >    U R                  5       R                  5       $ r%   )__iter____next__r   s    r!   r/  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__next__u  s    }}//11r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc                 8   > TR                   R                  5       $ r%   )r   r.  r   s    r!   r   O_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__.<locals>.traced_itery  s    ==1133r   r   r   )r   r   r   s   ` r!   r.  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__x  s)    %4 &4 #2T\\22r   c                :    U R                   R                  5         U $ r%   )r   	__enter__r   s    r!   r6  ;_get_stream_wrapper.<locals>.MessageStreamWrapper.__enter__  s    '')r   c                6    U R                   R                  " U6   g r%   )r   __exit__r   s     r!   r9  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__exit__      &&,r   c                8    U R                   R                  5         g r%   r   r   s    r!   r   7_get_stream_wrapper.<locals>.MessageStreamWrapper.close  s    ##%r   c                6    U R                   R                  5       $ r%   r   r   s    r!   r   C_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_message  s    }}6688r   c                6    U R                   R                  5       $ r%   r   r   s    r!   r   @_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_text  s    }}3355r   c                6    U R                   R                  5       $ r%   r   r   s    r!   r   <_get_stream_wrapper.<locals>.MessageStreamWrapper.until_done  s    }}//11r   c                .    U R                   R                  $ r%   r   r   s    r!   r   J_get_stream_wrapper.<locals>.MessageStreamWrapper.current_message_snapshot  r   r   r  N)r   z/anthropic.lib.streaming._messages.MessageStreamr  r  )r  r   r  r  r  r  r  r	  )r
  r  r  r  r   r  r   r   r   r/  r.  r6  r9  r   r   r   r   r   r  r  s   r!   MessageStreamWrapperr"  Y  s    &H& 	& . . 0 0 4 423-&962 > >r   rF  c                  0   > \ rS rSrS rU U4S jrS rSrg)9_get_stream_wrapper.<locals>.MessagesStreamManagerWrapperi  c                    Xl         g r%   r   r  s     r!   r   B_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__init__  r  r   c                   > T" S0 U R                   D6U l        T" U R                  R                  5       40 U R                   D6$ r  )r   r  r6  )r   rF  r  s    r!   r6  C_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__enter__  s7     / ?$,, ?+DMM,C,C,EVVVr   c                6    U R                   R                  " U6   g r%   )r  r9  r   s     r!   r9  B_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__exit__  r;  r   r  N)r
  r  r  r  r   r6  r9  r  )rF  r  s   r!   MessagesStreamManagerWrapperrH    s    &W-r   rO  r   )	rD   rP   lowerr   r   ry   r;   rU   r   )r  r   r   rD   r   r   rO  r  rF  r   r   s   `      @@@@r!   _get_stream_wrapperrQ     s     #o.4466H&00 %'.  !, 5 5 !'0.! ! >	> >	>@
	4 
	4 10;	> ;	>z		- 		- ,+r   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg	)
r   i  zOptional[Mapping[str, Any]]metadatazOptional[list[str]]tagszOptional[ls_client.Client]r   r   N)r
  r  r  r  __annotations__r  r   r   r!   r   r     s    ))
&&r   F)total)r   c                  U=(       d    0 n[        U R                  R                  S[        U5      U R                  l        [	        U R                  R
                  SU5      U R                  l        [        U R                  R                  S[        U5      U R                  l        [        U S5      (       a  [        U R                  S5      (       an  [        U R                  R                  S5      (       aI  [        U R                  R                  R                  S[        U5      U R                  R                  l        U $ )a]  Patch the Anthropic client to make it traceable.

Args:
    client (Union[Anthropic, AsyncAnthropic]): The client to patch.
    tracing_extra (Optional[TracingExtra], optional): Extra tracing information.
        Defaults to None.

Returns:
    Union[Anthropic, AsyncAnthropic]: The patched client.

Example:

    .. code-block:: python

        import anthropic
        from langsmith import wrappers

        client = wrappers.wrap_anthropic(anthropic.Anthropic())

        # Use Anthropic client same as you normally would:
        system = "You are a helpful assistant."
        messages = [
            {
                "role": "user",
                "content": "What physics breakthroughs do you predict will happen by 2300?",
            }
        ]
        completion = client.messages.create(
            model="claude-3-5-sonnet-latest",
            messages=messages,
            max_tokens=1000,
            system=system,
        )
        print(completion.content)

        # You can also use the streaming context manager:
        with client.messages.stream(
            model="claude-3-5-sonnet-latest",
            messages=messages,
            max_tokens=1000,
            system=system,
        ) as stream:
            for text in stream.text_stream:
                print(text, end="", flush=True)
            message = stream.get_final_message()

ChatAnthropicr   betar/   r   )
r   r/   r   ry   rQ  r@   completionsr   hasattrrY  )r   r   s     r!   wrap_anthropicr\    s    ` "'RM)	FOO 1FOO
 !-!!	!F 	FKK,,FKK(((33&2KK  ''	'
# Mr   )r  zOptional[tuple[type, ...]])r7   dictr  r]  )rQ   r]  )rm   r   rn   Message | Noner  r^  )rv   r   r  r]  )r   r]  r  r   )rv   zlist[Completion]r  r]  )r   r   )
r   r	   r   rP   r   r	   r   r   r  r	   )r  r	   r   rP   r   r   r  r	   )r   r   r   zOptional[TracingExtra]r  r   )4
__future__r   r   loggingcollections.abcr   r   r   typingr   r   r	   r
   r   r   pydanticr   typing_extensionsr   r   	langsmithr   	ls_clientr   langsmith.schemasr   r   httpxrD   r   r   r^   r   r   r   r   	getLoggerr
  r3   	lru_cacher"   r;   rU   rq   ry   ru   r   r   r   rQ  r   r\  r   r   r!   <module>rk     sH   "   < <  ! - ) ! >3GGCu[*:C?@A			8	$  9&D# #4B##L $ # %H%H
%H %H  	%H
 %HPs,s,
s,  s, 	s,l'9E ' JN N Nr   