Ë
    tPêjš!  ã                   óX   — d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZm	Z	  G d„ d«      Z
y)é    N)ÚFinal)Úverbose_logger)Úcreate_mock_helicone_clientÚshould_use_helicone_mockc                   ó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ÚclaudeÚgeminiz	command-rzcommand-r-pluszcommand-lightzcommand-mediumzcommand-medium-betazcommand-xlarge-nightlyzcommand-nightlyc                 ó6  — t        «       | _        | j                  rt        «        t        j                  d«       d| _        t        j                  d«      | _        t        j                  d«      xs d| _	        | j                  j                  d«      | _	        y )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Úremovesuffix)Úselfs    úb/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/helicone.pyÚ__init__zHeliconeLogger.__init__   sq   € ä4Ó6ˆÔØ×ÒÜ'Ô)Ü×ÑÐ ZÔ[à7ˆÔÜ—9‘9Ð/Ó0ˆŒÜŸ	™	Ð"5Ó6ÒSÐ:SˆŒØŸ™×2Ñ2°3Ó7ˆ�ó    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 ri|d   rd|d   D ][  }
|
j                  d	«      }|
j                  d
«      }|s|sŒ*|r
|d   |d   fn	|d   |d   f\  }}|	j	                  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ÚfunctionÚcustomÚnameÚ	argumentsÚinputÚtool_useÚid)Útyper+   r'   r)   Útext)r,   r-   Ú	assistantÚfinish_reasonÚusageÚprompt_tokensÚcompletion_tokens)Úinput_tokensÚoutput_tokens)r+   r,   r   Úmodelr!   Ústop_reasonÚstop_sequencer0   )Ú	anthropicr   r   ÚgetÚappend)r   r5   ÚmessagesÚresponse_objr   r   Úpromptr#   Úchoicer!   Ú	tool_callr%   r&   r'   Ú
tool_inputÚclaude_response_objs                   r   Úclaude_mappingzHeliconeLogger.claude_mapping*   s¸  € ß5à �>ˆØò 	@ˆGØ˜Ñ Ø˜6‘? fÒ,Ø  ¨w°yÑ/AÐ.BÐCÑC‘Fà  ¨G°IÑ,>Ð+?Ð@Ñ@‘Fà˜\˜N¨7°9Ñ+=Ð*>Ð?Ñ?‘ð	@ð 	�Y�KÑ ˆà$ YÑ/°Ñ2ˆØ˜Ñ#ˆàˆØ˜7Ñ" w¨|Ò'<Ø$ \Ñ2ò �	Ø$Ÿ=™=¨Ó4�Ø"Ÿ™ xÓ0�Ù©ØáAI�X˜fÑ% x°Ñ'<Ñ=ÐPVÐW]ÑP^Ð`fÐgnÑ`oÐOpñ !��jð —‘à *Ø'¨™oØ $Ø!+ñ	õñð  ˜'Ñ! g¨iÒ&8Ø &°¸	Ñ0BÑCÐDˆGð ˜tÑ$ØØØØØ! /Ñ2Ø!à ,¨WÑ 5°oÑ FØ!-¨gÑ!6Ð7JÑ!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                  |«      ||<   Œ* d|v r|j                  d«       |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_Úlitellm_parent_otel_span)r9   Ú
startswithÚpop)rC   rD   Úproxy_headersÚ
header_keys       r   Úadd_metadata_from_headerz'HeliconeLogger.add_metadata_from_header`   s©   € ð Ð!ØˆOà×ÑÐ4Ó5Ð=ØˆOàÐØˆHà-×1Ñ1Ð2HÈ"ÓM×QÑQÐR[Ð]_Ó`ÒfÐdfˆà'ò 	EˆJØ×$Ñ$ [Õ1Ø'4×'8Ñ'8¸Ó'D�˜Ò$ð	Eð &¨Ñ1Ø�L‰LÐ3Ô4àˆr   c                 ó˜  ‡— 	  |d‰› �«       |j                  di «      }|j                  dd«      }	|j                  dd «       |j                  di «      xs i }
| j                  ||
«      }
|	dk(  xs ‰j                  d«      }t        ˆfd	„| j                  D «       «      s|r‰nd
Š‰|dœ}t        |t        j                  «      st        |t        j                  «      r|j                  «       }d‰v r|s| j                  ‰||¬«      }|ddiddœ}| j                  }| j                  › d�}d‰v r|s| j                  › d�}d}n)|r| j                  › d�}d}n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| j(                  r	 |d#«       y  |d$«       y  |d%|j&                  › �«        |d&|j*                  › �«       y # t,        $ r   |d't/        j0                  «       › �«       Y y w xY w)(Nz5Helicone Logging - Enters logging function for model rC   Úcustom_llm_providerÚ Úlitellm_call_idrD   Ú	vertex_aiz
vertex_ai/c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0Úaccepted_modelr5   s     €r   ú	<genexpr>z-HeliconeLogger.log_success.<locals>.<genexpr>Ž   s   øè ø€ Ò^°>�~¨Ô.Ñ^ùs   ƒzgpt-3.5-turbo)r5   r;   r
   )r5   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 - )r9   rO   rK   ÚanyÚhelicone_model_listÚ
isinstanceÚlitellmÚEmbeddingResponseÚModelResponser[   rB   r   r   r   ÚintÚ	timestampÚupdateÚmodule_level_clientÚpostÚstatus_coder   r-   Ú	ExceptionÚ	tracebackÚ
format_exc)r   r5   r;   r<   Ú
start_timeÚend_timeÚprint_verboseÚkwargsrC   rQ   rD   Úis_vertex_aiÚprovider_requestre   r   r^   rH   Ústart_time_secondsÚstart_time_millisecondsÚend_time_secondsÚend_time_millisecondsr_   ÚdataÚresponses    `                      r   Úlog_successzHeliconeLogger.log_success   s'  ø€ ðQ	PÙÐQÐRWÐQXÐYÔZØ$*§J¡JÐ/?ÀÓ$DˆNØ)7×);Ñ);Ð<QÐSUÓ)VÐØ�J‰JÐ(¨$Ô/Ø%×)Ñ)¨*°bÓ9Ò?¸RˆHØ×4Ñ4°^ÀXÓNˆHð #6¸Ñ"DÒ"fÈ×HXÑHXÐYeÓHfˆLô Ó^ÀT×E]ÑE]Ô^Ô^Ñbnñ à$ð ð
 16À8Ñ&LÐÜ˜,¬×(AÑ(AÔBÄjÐQ]Ô_f×_tÑ_tÔFuØ+×0Ñ0Ó2�à˜5Ñ ©Ø#×2Ñ2¸ÈÐ`lÐ2Óm�ð %Ø,¨lÐ;Øñ'Ðð  ×,Ñ,ˆLØ—]‘]�O ;Ð/ˆCØ˜5Ñ ©ØŸ™˜Ð'8Ð9�ØF‘ÙØŸ™˜ ~Ð6�ØE‘Ø˜UÑ"ØŸ™˜ ~Ð6�ØQ�à#*¨4¯8©8¨*Ð!5Ø 2ñˆGô ),¨J×,@Ñ,@Ó,BÓ(CÐÜ-0°*×2FÑ2FÓ2HÐK]Ñ2]ÐaeÑ1eÓ-fÐ#Ü&)¨(×*<Ñ*<Ó*>Ó&?ÐÜ+.°×0BÑ0BÓ0DÐGWÑ0WÐ[_Ñ/_Ó+`Ð!Ø*¨g°d·h±h°ZÐ,@ÐAˆDØ�K‰K˜Ô!ð (Ø,Ø ñ$ð
 %5ð $6Ø(?ñ"ð
 $4Ø(=ñ ñ	ñˆDô$ &×9Ñ9×>Ñ>¸sÈGÐZ^Ð>Ó_ˆHØ×#Ñ# sÒ*Ø×$Ò$Ù!Ð"[Õ\á!Ð"?Õ@áØXÐYa×YmÑYmÐXnÐoôñ Ð 9¸(¿-¹-¸ÐIÕJøÜò 	PÙÐ5´i×6JÑ6JÓ6LÐ5MÐNÖOð	Pús   ƒI(J  É,J  É5*J  Ê &K	ËK	N)
Ú__name__Ú
__module__Ú__qualname__rh   r   rB   ÚstaticmethodÚdictrO   r‚   rV   r   r   r   r      sE   „ òÐò
8ò4#ðl ð°ð Àð È$ò ó ðó<SPr   r   )r   rt   Útypingr   rj   Úlitellm._loggingr   Ú)litellm.integrations.helicone_mock_clientr   r   r   rV   r   r   ú<module>r‹      s)   ðó 
Û Ý ã Ý +÷÷CPò CPr   