
    Ki                          S SK r 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  S SKJr   " S S\ R&                  5      r " S	 S
\5      rg! \ a	    \" S5      ef = f)    N)AsyncMessageszMPlease install the Anthropic SDK to use this feature: 'pip install anthropic')AnyDictOptional)call_llm_and_track_usage_asyncget_model_paramsmerge_system_promptwith_privacy_mode)Clientc                   @   ^  \ rS rSr% Sr\\S'   S\4U 4S jjrSrU =r	$ )AsyncAnthropic   za
An async wrapper around the Anthropic SDK that automatically sends LLM usage events to PostHog.

_ph_clientposthog_clientc                 R   > [         TU ]  " S0 UD6  Xl        [        U 5      U l        g)z
Args:
    posthog_client: PostHog client for tracking usage
    **kwargs: Additional arguments passed to the Anthropic client
N )super__init__r   AsyncWrappedMessagesmessages)selfr   kwargs	__class__s      f/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/posthog/ai/anthropic/anthropic_async.pyr   AsyncAnthropic.__init__   s&     	"6"(,T2    )r   r   )
__name__
__module____qualname____firstlineno____doc__PostHogClient__annotations__r   __static_attributes____classcell__r   s   @r   r   r      s!     3} 3 3r   r   c                     ^  \ rS rSr% \\S'        SS\\   S\\   S\\\\	4      S\
S\\\\	4      S\	4U 4S	 jjjr     SS\\   S\\   S\\\\	4      S\
S\\\\	4      S\	4S
 jjrS\\   S\\   S\\\\	4      S\
S\\\\	4      S\	4U 4S jjrS\\   S\\   S\\\\	4      S\
S\\\\	4      S\\\	4   S\\\4   S\S\4S jrSrU =r$ )r   (   _clientposthog_distinct_idposthog_trace_idposthog_propertiesposthog_privacy_modeposthog_groupsr   c                 Z  >#    Uc  [        [        R                  " 5       5      nUR                  SS5      (       a  U R                  " UUUUU40 UD6I Sh  vN $ [        UU R                  R                  SUUUUU R                  R                  [        TU ](  4	0 UD6I Sh  vN $  NP N7f)a  
Create a message using Anthropic's API while tracking usage in PostHog.

Args:
    posthog_distinct_id: Optional ID to associate with the usage event
    posthog_trace_id: Optional trace UUID for linking events
    posthog_properties: Optional dictionary of extra properties to include in the event
    posthog_privacy_mode: Whether to redact sensitive information in tracking
    posthog_groups: Optional group analytics properties
    **kwargs: Arguments passed to Anthropic's messages.create
NstreamF	anthropic)struuiduuid4get_create_streamingr   r)   r   base_urlr   create)r   r*   r+   r,   r-   r.   r   r   s          r   r8   AsyncWrappedMessages.create+   s     ( #"4::<0::h&&//# "$    4LL## LL!!GN
 
 
 	

s%   AB+B'AB+"B)#B+)B+c                    #    Uc  [        [        R                  " 5       5      nU R                  " UUUUU40 UD6I S h  vN $  N7f)N)r2   r3   r4   r6   )r   r*   r+   r,   r-   r.   r   s          r   r0   AsyncWrappedMessages.streamY   sT      #"4::<0++ 
 
 
 	
 
s   <AAAc                    >^ ^^^^^^^^	^
^#    [         R                   " 5       m
SSS.m/ m[        TT ]  " S0 TD6I S h  vN m	UUUUUUUU	U U
U4S jnU" 5       $  N7f)Nr   )input_tokensoutput_tokensc                   >#     T  S h  vN n [        U S5      (       a:  U R                  (       a)  S Vs0 s H  nU[        U R                  US5      _M     snm[        U S5      (       a,  U R                  (       a  TR	                  U R                  5        U 7v   M   Ns  snf 
 [
        R
                  " 5       nUT-
  nSR                  T5      nTR                  TTT
T	TTTUU5	      I S h  vN    g ! [
        R
                  " 5       nUT-
  nSR                  T5      nTR                  TTT
T	TTTUU5	      I S h  vN    f = f7f)Nusage)r=   r>   cache_read_input_tokenscache_creation_input_tokensr   content )hasattrr@   getattrrC   appendtimejoin_capture_streaming_event)eventkend_timelatencyoutputaccumulated_contentr   r*   r.   r-   r,   r+   responser   
start_timeusage_statss        r   	generator9AsyncWrappedMessages._create_streaming.<locals>.generator|   sK    !#+  %ug..5;;&'& wu{{Aq99&' ui00U]]+225==AK ' $,$  99;"Z/!4533'$&("
 
 
	  99;"Z/!4533'$&("
 
 
sb   EC5 B&BB&'C5 "B!AC5 B&!C5 'AE.C1/E5AE=E >EEr   )rH   r   r8   )r   r*   r+   r,   r-   r.   r   rT   rP   rQ   rR   rS   r   s   ``````` @@@@r   r6   &AsyncWrappedMessages._create_streamingn   sS      YY[
781&M 1&11$	 $	L {Q 2s   0AAArS   rN   rO   c
                   #    Uc  [        [        R                  " 5       5      nSUR                  S5      [	        U5      [        U R                  R                  U[        US5      5      [        U R                  R                  UU	SS./5      SUR                  SS5      UR                  SS5      UR                  S	S5      UR                  S
S5      UU[        U R                  R                  5      S.U=(       d    0 En
Uc  SU
S'   [        U R                  R                  S5      (       a0  U R                  R                  R                  U=(       d    USU
US9  g g 7f)Nr1   model	assistant)rC   role   r=   r   r>   rA   rB   )z$ai_providerz	$ai_modelz$ai_model_parametersz	$ai_inputz$ai_output_choicesz$ai_http_statusz$ai_input_tokensz$ai_output_tokensz$ai_cache_read_input_tokensz$ai_cache_creation_input_tokensz$ai_latencyz$ai_trace_idz$ai_base_urlFz$process_person_profilecapturez$ai_generation)distinct_idrK   
propertiesgroups)r2   r3   r4   r5   r   r
   r)   r   r	   r7   rE   r\   )r   r*   r+   r,   r-   r.   r   rS   rN   rO   event_propertiess              r   rJ   -AsyncWrappedMessages._capture_streaming_event   sS     #"4::<0 (G,$4V$<*''$#FK8
 #4''$#[9:#
  # + B!,!!D+6??)1, 0;-q0 #, 5 563
4 "'R5
: &:?674<<**I66LL##++/C3C&+%	 ,  7s   EEr   )NNNFN)r   r   r   r    r   r#   r   r2   r   r   boolr8   r0   r6   intfloatrJ   r$   r%   r&   s   @r   r   r   (   s    .2*.7;%*37,
%c],
 #3-,
 %T#s(^4	,

 #,
 !c3h0,
 ,
 ,
` .2*.7;%*37
%c]
 #3-
 %T#s(^4	

 #
 !c3h0
 
*4%c]4 #3-4 %T#s(^4	4
 #4 !c3h04 4l5%c]5 #3-5 %T#s(^4	5
 #5 !c3h05 S#X5 #s(^5 5 5 5r   r   )r1   anthropic.resourcesr   ImportErrorModuleNotFoundErrorrH   r3   typingr   r   r   posthog.ai.utilsr   r   r	   r
   posthog.clientr   r"   r   r   r   r   r   <module>rk      so   1   & &  33Y-- 3$q= qI  
W s   
A A 