
    Cj!                     L    S SK r S SKrS SKrS SKJr  S SKJrJr   " S S5      rg)    N)verbose_logger)should_use_helicone_mockcreate_mock_helicone_clientc                   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claudegeminiz	command-rzcommand-r-pluszcommand-lightzcommand-mediumzcommand-medium-betazcommand-xlarge-nightlyzcommand-nightlyc                 z   [        5       U l        U R                  (       a   [        5         [        R                  " S5        SU l        [        R                  " S5      U l        [        R                  " S5      =(       d    SU l	        U R                  R                  S5      (       a  U R                  S S U l	        g g )Nz8[HELICONE MOCK] Helicone logger initialized in mock modezhttps://api.openai.com/v1HELICONE_API_KEYHELICONE_API_BASEzhttps://api.hconeai.com/)r   is_mock_moder   r   infoprovider_urlosgetenvkeyapi_baseendswith)selfs    o/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/integrations/helicone.py__init__HeliconeLogger.__init__   s    46')J 899/0		"56S:S==!!#&& MM#2.DM '    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_sequencer1   )	anthropicr   r    append)r   r6   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     SU;   a  UR                  S5        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_litellm_parent_otel_span)get
startswithpop)rC   rD   proxy_headers
header_keys       r   add_metadata_from_header'HeliconeLogger.add_metadata_from_header[   s     !O45=OH 5r:>>y"MSQS 	 (J$$[11'4'8'8'D$ ( &1LL34r   c                    ^  U" ST 35        UR                  S0 5      nUR                  SS5      n	UR                  SS 5        UR                  S0 5      =(       d    0 n
U R                  X5      n
U	S:H  =(       d    TR                  S5      n[        U4S	 jU R                   5       5      (       d  U(       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(       d  U R                  TX#S9nUSS0SS.nU R                  nU R                   S3nST;   a  U(       d  U R                   S3nSnO0U(       a  U R                   S3nSnOST;   a  U R                   S3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%                  UUUS"9nUR&                  S:X  a#  U R(                  (       a	  U" S#5        g U" S$5        g U" S%UR&                   35        U" S&UR*                   35        g ! [,         a!    U" S'[.        R0                  " 5        35         g f = f)(Nz5Helicone Logging - Enters logging function for model rC   custom_llm_provider litellm_call_idrD   	vertex_aiz
vertex_ai/c              3   .   >#    U  H
  nUT;   v   M     g 7f)N ).0accepted_modelr6   s     r   	<genexpr>-HeliconeLogger.log_success.<locals>.<genexpr>   s      *B #e+*Bs   zgpt-3.5-turbo)r6   r;   r
   )r6   r;   r<   zopenai-versionz
2020-10-01   )jsonrH   statusz/oai/v1/logz/anthropic/v1/logz%https://api.anthropic.com/v1/messagesz/custom/v1/logz$https://aiplatform.googleapis.com/v1r   z0https://generativelanguage.googleapis.com/v1betazBearer zapplication/json)AuthorizationzContent-Typei  zHelicone-Auth)urlr^   meta)secondsmilliseconds)	startTimeendTime)providerRequestproviderResponsetiming)rH   r^   z7[HELICONE MOCK] Helicone Logging - Successfully mocked!zHelicone Logging - Success!zBHelicone Logging - Error Request was not successful. Status Code: zHelicone Logging - Error zHelicone Logging Error - )rK   rP   rL   anyhelicone_model_list
isinstancelitellmEmbeddingResponseModelResponser^   rA   r   r   r   int	timestampupdatemodule_level_clientpoststatus_coder   r.   	Exception	traceback
format_exc)r   r6   r;   r<   
start_timeend_timeprint_verbosekwargsrC   rS   rD   is_vertex_aiprovider_requestrh   r   ra   rH   start_time_secondsstart_time_millisecondsend_time_secondsend_time_millisecondsrb   dataresponses    `                      r   log_successHeliconeLogger.log_success|   sV   d	GwO $ZZ(8"=N"0"4"45JB"OJJ($/%))*b9?RH44^NH /+= AQAQBL  *.*B*B      %  */HE,(A(ABBjg33G G  ,0025 #22(  3  
 %,l;   ,,L]]O;/C5 '89F~6EU"~6Q#*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WSW7XH##s*$$!Q ""?@XYaYmYmXno  9(--IJ 	5i6J6J6L5MNO	s   JK K '*K (K=<K=)r   r   r   r   N)__name__
__module____qualname____firstlineno__rk   r   rA   staticmethoddictrP   r   __static_attributes__rX   r   r   r   r      sE    /-#^   $  @hr   r   )	r   rw   rm   litellm._loggingr   )litellm.integrations.helicone_mock_clientr   r   r   rX   r   r   <module>r      s$    
   +V Vr   