
    $h4=                       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                 4     SSK Jn   U $ ! [         a     g f = f)Nr   NotGiven)anthropic._typesr   ImportErrorr   s    U/var/www/html/shao/venv/lib/python3.13/site-packages/langsmith/wrappers/_anthropic.py_get_not_givenr!      s!    - s   
 
c                    [        5       =nb5  U R                  5        VVs0 sH  u  p#[        X15      (       a  M  X#_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 )NzError stripping NotGiven: system)rolecontentmessages)r!   items
isinstance	Exceptionloggererrorgetpop)d	not_givenkves        r    _strip_not_givenr3   )   s    7'))I6"#'')L)$!:a3K)AL 1}"*q{CDquuH
 
* 	
hWWY8YTQ!DADY88 M 71!5667 9s9    B) B#B#B) CC#B) )
C3CCc                    [        U 5      nUR                  S5      nU(       a  [        U[        5      (       a  U/nSSUR                  SS 5      UR                  SS 5      UR                  SS 5      US.$ )Nstop	anthropicchatmodeltemperature
max_tokens)ls_providerls_model_typels_model_namels_temperaturels_max_tokensls_stop)r3   r,   r(   str)kwargsstrippedr5   s      r    _infer_ls_paramsrD   8   so    'H<<D
4%%v #!gt4",,}d;!lD9     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.typesrG   r   r*   debugtypemessageRuntimeErrorr   validate_pythoncontent_block
model_dumpr%   appendindexdeltarK   stop_reasonstop_sequenceusageoutput_tokens)eventcurrent_snapshotrG   adaptercontent_block_instancer%   s         r    _accumulate_eventra   I   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)r]   r^   z/Error accumulating event in Anthropic Wrapper: outputr[   usage_metadatarP   rQ   )ra   rR   r*   rO   rU   _create_usage_metadatar-   )
all_chunksfull_messagechunkr2   r.   s        r    _reduce_chat_chunksri   o   s    L	*,5XL  *%%!A0w1CDAEE&$q>  	*LLJ1#NOj))	*s   	A!!
B+BBBc                D   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   r\   
cache_readcache_creation_input_tokenscache_read_input_tokens)rk   r\   total_tokensinput_token_details )r,   r   r   r'   )anthropic_token_usagerk   r\   ro   rp   r0   r1   s          r    re   re      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 rK   choices)
completionrV   joinrU   )rf   all_contentrh   r%   r.   s        r    _reduce_completionsrz      s    K""w'  ggk"GrN%%')*) H &'*+,HrE   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)Nr[   rd   rP   rQ   z"Error processing chat completion: rc   )rU   r-   re   BaseExceptionr*   rO   )outputsrdictrr   r2   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$ Nstreamllm)namerun_type	reduce_fnprocess_inputsprocess_outputs_invocation_params_fnrq   r,   r   	traceabler3   r   rD   	argsrB   r   	decoratorresultr   original_creater   tracing_extras	        r    create_get_wrapper.<locals>.create   sa    H%)) 
#)it+4"2
 
	 ?+T<V<rE   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GrE   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>.AsyncMessageStreamWrapper   c                    Xl         X l        g N_wrapped_kwargsselfwrappedrB   s      r    __init__?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__init__       
 !(%rE   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}   )_rh   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rq   r   r   r   configured_traceable_texts   ` r    r   B_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream   s+    *O +O $3dll33rE   c                .    U R                   R                  $ r   r   responser   s    r    r   ?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.response
      }}---rE   c                .    U R                   R                  $ r   r   
request_idr   s    r    r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.request_id      }}///rE   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4rE   rq   r   )r   r   rh   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__  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__"       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_done.  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_snapshot1      }}===rE   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   rA   )__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 > >rE   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>.AsyncMessagesStreamManagerWrapperi5  c                    Xl         g r   r   r   rB   s     r    r   G_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__init__6      %rE   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Nrq   )r   _managerr   )r   r   r  original_streams     r    r   I_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aenter__9  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__>  r   r   r   r  N)r   r   r   r   r   r   r   r  )r  r  s   r    !AsyncMessagesStreamManagerWrapperr  5  s    &I
4rE   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>.MessageStreamWrapperiD  c                    Xl         X l        g r   r   r   s      r    r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.__init__E  r   rE   c                .    U R                   R                  $ r   r   r   s    r    r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.responseM  r   rE   c                .    U R                   R                  $ r   r   r   s    r    r   <_get_stream_wrapper.<locals>.MessageStreamWrapper.request_idQ  r   rE   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_streamW  sK     #}}8888*??AH$(MM$C$C$EM'?'NH$ 9s   A$A"AA$rq   r   r   s   ` r    r   =_get_stream_wrapper.<locals>.MessageStreamWrapper.text_streamU  s+    *O +O $3dll33rE   c                >    U R                  5       R                  5       $ r   )__iter____next__r   s    r    r!  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__next__`  s    }}//11rE   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_iterd  s    ==1133rE   rq   r   )r   r   r   s   ` r    r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__c  s)    %4 &4 #2T\\22rE   c                :    U R                   R                  5         U $ r   )r   	__enter__r   s    r    r(  ;_get_stream_wrapper.<locals>.MessageStreamWrapper.__enter__j  s    '')rE   c                6    U R                   R                  " U6   g r   )r   __exit__r   s     r    r+  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__exit__n      &&,rE   c                8    U R                   R                  5         g r   r   r   s    r    r   7_get_stream_wrapper.<locals>.MessageStreamWrapper.closeq  s    ##%rE   c                6    U R                   R                  5       $ r   r   r   s    r    r   C_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_messaget  s    }}6688rE   c                6    U R                   R                  5       $ r   r   r   s    r    r   @_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_textw  s    }}3355rE   c                6    U R                   R                  5       $ r   r   r   s    r    r   <_get_stream_wrapper.<locals>.MessageStreamWrapper.until_donez  s    }}//11rE   c                .    U R                   R                  $ r   r   r   s    r    r   J_get_stream_wrapper.<locals>.MessageStreamWrapper.current_message_snapshot}  r   rE   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   r(  r+  r   r   r   r   r   r  r  s   r    MessageStreamWrapperr  D  s    &H& 	& . . 0 0 4 423-&962 > >rE   r8  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	  rE   c                   > T" S0 U R                   D6U l        T" U R                  R                  5       40 U R                   D6$ r  )r   r  r(  )r   r8  r  s    r    r(  C_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__enter__  s7     / ?$,, ?+DMM,C,C,EVVVrE   c                6    U R                   R                  " U6   g r   )r  r+  r   s     r    r+  B_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__exit__  r-  rE   r  N)r   r   r   r   r   r(  r+  r  )r8  r  s   r    MessagesStreamManagerWrapperr:    s    &W-rE   rA  rq   )	r6   rA   lowerr   r   ri   r3   rD   r   )r  r   r   r6   r   r  rA  r  r8  r   r   s   `      @@@@r    _get_stream_wrapperrC     s     #o.4466H&00 %'.  !, 5 5 !'0.! ! >	> >	>@
	4 
	4 10;	> ;	>z		- 		- ,+rE   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   rq   N)r   r   r   r   __annotations__r  rq   rE   r    r   r     s    ))
&&rE   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   ri   rC  r   completionsrz   hasattrrK  )r   r   s     r    wrap_anthropicrN    s    ` "'RM)	FOO 1FOO
 !-!!	!F 	FKK,,FKK(((33&2KK  ''	'
# MrE   )r   zOptional[type])r.   dictr   rO  )rB   rO  )r]   r   r^   Message | Noner   rP  )rf   r   r   rO  )rr   rO  r   r   )rf   zlist[Completion]r   rO  )r}   r   )
r   r	   r   rA   r   r	   r   r   r   r	   )r  r	   r   rA   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   httpxr6   r   r   rN   r   r   r   r   	getLoggerr   r*   	lru_cacher!   r3   rD   ra   ri   re   rz   r   r   rC  r   rN  rq   rE   r    <module>r]     sG   "   < <  ! - ) ! >3GGCu[*:C?@A			8	$  9"# #4B##L $ # %H%H
%H %H  	%H
 %HPs,s,
s,  s, 	s,l'9E ' JN N NrE   