
    hf                     0    d dl Z d dlZd dlZ G d d      Zy)    Nc                   D    e Zd Zg dZd Zd Zedededefd       Zd Z	y	)
HeliconeLogger)	gptclaudez	command-rzcommand-r-pluszcommand-lightzcommand-mediumzcommand-medium-betazcommand-xlarge-nightlyzcommand-nightlyc                     d| _         t        j                  d      | _        t        j                  d      xs d| _        | j                  j                  d      r| j                  d d | _        y y )Nzhttps://api.openai.com/v1HELICONE_API_KEYHELICONE_API_BASEzhttps://api.hconeai.com/)provider_urlosgetenvkeyapi_baseendswith)selfs    Y/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/integrations/helicone.py__init__zHeliconeLogger.__init__   s[    799/0		"56S:S==!!#& MM#2.DM '    c           
         ddl m}m} | }|D ]4  }d|v r"|d   dk(  r|| |d    z  }|| |d    z  })|| |d    z  }6 || z  }|d   d   }|d   }g }	d|v r5|d   r0|d   D ]'  }
|	j                  d	|
d
   |
d   d   |
d   d   d       ) nd|v r|d   r	d|d   dg}	|d
   dd||	|d   d |d   d   |d   d   dd}|S )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_mappingzHeliconeLogger.claude_mapping   sh   5 >G 6?f,wy/A.BCCFGI,>+?@@F\N79+=*>??   	YK 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                     | |S | j                  d      |S |i }| j                  di       j                  di       xs i }|D ](  }|j                  d      s|j                  |      ||<   * |S )aP  
        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)r:   r;   proxy_headers
header_keys       r   add_metadata_from_headerz'HeliconeLogger.add_metadata_from_headerN   s     !O45=OH 5r:>>y"MSQS 	 (J$$[1'4'8'8'D$ ( r   c                    	  |d        |j                  di       }|j                  dd        |j                  di       xs i }	| j                  ||	      }	t        fd| j                  D              rnd|d}
t	        |t
        j                        st	        |t
        j                        r|j                         }dv r| j                  ||	      }|d
didd}| j                  }| j                   d}dv r| j                   d}d}d| j                   dd}t        |j                               }t        |j                         |z
  dz        }t        |j                               }t        |j                         |z
  dz        }dd| j                   i}|j                  |	       ||
|d|||d||ddd}t
        j                   j#                  |||      }|j$                  dk(  r	 |d       y  |d|j$                           |d|j&                          y # t(        $ r   |dt+        j,                                 Y y w xY w)Nz5Helicone Logging - Enters logging function for model r:   litellm_call_idr;   c              3   &   K   | ]  }|v  
 y w)N ).0accepted_modelr.   s     r   	<genexpr>z-HeliconeLogger.log_success.<locals>.<genexpr>x   s      & #e+s   zgpt-3.5-turbo)r.   r3   r   )r.   r3   r4   zopenai-versionz
2020-10-01   )jsonr?   statusz/oai/v1/logz/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 - )rA   rE   anyhelicone_model_list
isinstancelitellmEmbeddingResponseModelResponserN   r9   r   r   r   int	timestampupdatemodule_level_clientpoststatus_coder&   	Exception	traceback
format_exc)r   r.   r3   r4   
start_timeend_timeprint_verbosekwargsr:   r;   provider_requestrX   r   rQ   r?   start_time_secondsstart_time_millisecondsend_time_secondsend_time_millisecondsrR   dataresponses    `                    r   log_successzHeliconeLogger.log_successj   s   Q	GwO $ZZ(8"=NJJ($/%))*b9?RH44^XNH  *.*B*B  
 %  */HE,(A(ABjg33G  ,0025 #22(  3  
 %,l;   ,,L]]O;/C5 '89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WSW7XH##s*;<XYaYmYmXno  9(--IJ 	5i6J6J6L5MNO	s   HH1 *H1 1&IIN)
__name__
__module____qualname__r[   r   r9   staticmethoddictrE   rt   rI   r   r   r   r   	   sD    
/-#^   $  6Ur   r   )r   rg   r]   r   rI   r   r   <module>rz      s    
  v vr   