
    ^h                     0    S SK r S SKrS SKr " S S5      rg)    Nc                   N    \ rS rSr/ SQrS rS r\S\S\S\4S j5       r	S	 r
S
rg)HeliconeLogger	   )	gptclaudez	command-rzcommand-r-pluszcommand-lightzcommand-mediumzcommand-medium-betazcommand-xlarge-nightlyzcommand-nightlyc                 H    SU l         [        R                  " S5      U l        g )Nzhttps://api.openai.com/v1HELICONE_API_KEY)provider_urlosgetenvkey)selfs    W/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/helicone.py__init__HeliconeLogger.__init__   s    799/0    c           
         SSK JnJn  U nU H7  nSU;   a#  US   S:X  a  Xe US    3-  nM  Xd US    3-  nM,  Xe US    3-  nM9     Xd -  nUS   S   nUS   n/ n	SU;   a<  US   (       a2  US    H(  n
U	R                  S	U
S
   U
S   S   U
S   S   S.5        M*     OSU;   a  US   (       a	  SUS   S./n	US
   SSUU	US   S US   S   US   S   S.S.nU$ )Nr   )	AI_PROMPTHUMAN_PROMPTroleusercontentchoicesmessage
tool_callstool_useidfunctionname	arguments)typer   r   inputtext)r!   r#   	assistantfinish_reasonusageprompt_tokenscompletion_tokens)input_tokensoutput_tokens)r   r!   r   modelr   stop_reasonstop_sequencer&   )	anthropicr   r   append)r   r+   messagesresponse_objr   r   promptr   choicer   	tool_callclaude_response_objs               r   claude_mappingHeliconeLogger.claude_mapping   s`   5 >G 6?f,wy/A.BCCFGI,>+?@@FN79+=*>??   	K i(+#7"w|'<$\2	 *'o )* 5f =!*:!6{!C	 3 '!gi&8 &	0BCDG t$!/2! ,W 5o F!-g!67J!K
 #"r   litellm_paramsmetadatareturnc                     U c  U$ U R                  S5      c  U$ Uc  0 nU R                  S0 5      R                  S0 5      =(       d    0 nU H.  nUR                  S5      (       d  M  UR                  U5      X'   M0     U$ )a(  
Adds metadata from proxy request headers to Helicone logging if keys start with "helicone_"
and overwrites litellm_params.metadata if already included.

For example if you want to add custom property to your request, send
`headers: { ..., helicone-property-something: 1234 }` via proxy request.
proxy_server_requestheaders	helicone_)get
startswith)r8   r9   proxy_headers
header_keys       r   add_metadata_from_header'HeliconeLogger.add_metadata_from_headerK   s     !O45=OH 5r:>>y"MSQS 	 (J$$[11'4'8'8'D$ ( r   c                   ^  U" ST 35        UR                  S0 5      nUR                  SS 5        UR                  S0 5      =(       d    0 n	U R                  X5      n	[        U4S jU R                   5       5      (       a  TOSmTUS.n
[	        U[
        R                  5      (       d  [	        U[
        R                  5      (       a  UR                  5       nST;   a  U R                  TX#S	9nUS
S0SS.nU R                  nSnST;   a  SnSnSU R                   3SS.n[        UR                  5       5      n[        UR                  5       U-
  S-  5      n[        UR                  5       5      n[        UR                  5       U-
  S-  5      nSSU R                   30nUR                  U	5        UU
US.UUUS.UUS.S.S.n[
        R                  R!                  XUS9nUR"                  S:X  a	  U" S5        g U" SUR"                   35        U" SUR$                   35        g ! [&         a!    U" S[(        R*                  " 5        35         g f = f)Nz5Helicone Logging - Enters logging function for model r8   litellm_call_idr9   c              3   .   >#    U  H
  nUT;   v   M     g 7f)N ).0accepted_modelr+   s     r   	<genexpr>-HeliconeLogger.log_success.<locals>.<genexpr>u   s      *B #e+*Bs   zgpt-3.5-turbo)r+   r0   r   )r+   r0   r1   zopenai-versionz
2020-10-01   )jsonr=   statusz"https://api.hconeai.com/oai/v1/logz(https://api.hconeai.com/anthropic/v1/logz%https://api.anthropic.com/v1/messageszBearer zapplication/json)AuthorizationzContent-Typei  zHelicone-Auth)urlrN   meta)secondsmilliseconds)	startTimeendTime)providerRequestproviderResponsetiming)r=   rN   zHelicone Logging - Success!zBHelicone Logging - Error Request was not successful. Status Code: zHelicone Logging - Error zHelicone Logging Error - )r?   rC   anyhelicone_model_list
isinstancelitellmEmbeddingResponseModelResponserN   r6   r
   r   int	timestampupdatemodule_level_clientpoststatus_coder#   	Exception	traceback
format_exc)r   r+   r0   r1   
start_timeend_timeprint_verbosekwargsr8   r9   provider_requestrX   r
   rQ   r=   start_time_secondsstart_time_millisecondsend_time_secondsend_time_millisecondsrR   dataresponses    `                    r   log_successHeliconeLogger.log_successg   s   Q	GwO $ZZ(8"=NJJ($/%))*b9?RH44^NH  *.*B*B   
 %  */HE,(A(ABBjg33G G  ,0025 #22(  3  
 %,l;   ,,L6C5 @F#*488*!5 2G "%Z%9%9%;!<&)%%'*<<D'#  #8#5#5#78$'##%(88D@%! $wtxxj%9:DKK! (, $
 %5 $6(?"
 $4(= 	D$ 2277SW7XH##s*;<XYaYmYmXno  9(--IJ 	5i6J6J6L5MNO	s   G9H( =*H( ((II)r   r
   N)__name__
__module____qualname____firstlineno__r[   r   r6   staticmethoddictrC   rt   __static_attributes__rH   r   r   r   r   	   sD    
1
-#^   $  6Ur   r   )r   rg   r]   r   rH   r   r   <module>r}      s    
  s sr   