
    g                     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                 F    d| _         t        j                  d      | _        y )Nzhttps://api.openai.com/v1HELICONE_API_KEY)provider_urlosgetenvkey)selfs    R/var/www/openai/venv/lib/python3.12/site-packages/litellm/integrations/helicone.py__init__zHeliconeLogger.__init__   s    799/0    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)r5   r6   proxy_headers
header_keys       r   add_metadata_from_headerz'HeliconeLogger.add_metadata_from_headerK   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                  }d}dv r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 r5   litellm_call_idr6   c              3   &   K   | ]  }|v  
 y w)N ).0accepted_modelr)   s     r   	<genexpr>z-HeliconeLogger.log_success.<locals>.<genexpr>u   s      *B #e+*Bs   zgpt-3.5-turbo)r)   r.   r   )r)   r.   r/   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)urlrI   meta)secondsmilliseconds)	startTimeendTime)providerRequestproviderResponsetiming)r:   rI   zHelicone Logging - Success!zBHelicone Logging - Error Request was not successful. Status Code: zHelicone Logging - Error zHelicone Logging Error - )r<   r@   anyhelicone_model_list
isinstancelitellmEmbeddingResponseModelResponserI   r4   r	   r   int	timestampupdatemodule_level_clientpoststatus_coder!   	Exception	traceback
format_exc)r   r)   r.   r/   
start_timeend_timeprint_verbosekwargsr5   r6   provider_requestrS   r	   rL   r:   start_time_secondsstart_time_millisecondsend_time_secondsend_time_millisecondsrM   dataresponses    `                    r   log_successzHeliconeLogger.log_successg   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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WSW7XH##s*;<XYaYmYmXno  9(--IJ 	5i6J6J6L5MNO	s   G(H ,*H &I ?I N)
__name__
__module____qualname__rV   r   r4   staticmethoddictr@   ro   rD   r   r   r   r   	   sD    
1
-#^   $  6Ur   r   )r
   rb   rX   r   rD   r   r   <module>ru      s    
  s sr   