
    yjH                        d dl mZ d dlZd dlmZmZ ddlmZ  G d de          Z G d d	          Z	 G d
 d          Z
 G d d          ZdS )    )annotationsN)AnyProtocol   )CompletionResultc                      e Zd Zd
dZddZd	S )HistoryAdapterresultr   returndict[str, Any]c                    d S N )selfr
   s     @/DATA/AppData/hermes/projects/honcho/src/llm/history_adapters.pyformat_assistant_tool_messagez,HistoryAdapter.format_assistant_tool_message
   s	         tool_resultslist[dict[str, Any]]c                    d S r   r   r   r   s     r   format_tool_resultsz"HistoryAdapter.format_tool_results   s	      #sr   Nr
   r   r   r   r   r   r   r   __name__
__module____qualname__r   r   r   r   r   r	   r	   	   s<           
# # # # # #r   r	   c                      e Zd Zd
dZddZd	S )AnthropicHistoryAdapterr
   r   r   r   c                4   g }|j         r|                    |j                    t          |j        t                    r$|j        r|                    d|j        d           |j        D ]+}|                    d|j        |j        |j	        d           ,d|dS )Ntext)typer"   tool_use)r#   idnameinput	assistantrolecontent)
thinking_blocksextend
isinstancer+   strappend
tool_callsr%   r&   r'   )r   r
   content_blocks	tool_calls       r   r   z5AnthropicHistoryAdapter.format_assistant_tool_message   s     02! 	:!!&"8999fnc** 	Lv~ 	L!!66>"J"JKKK* 	 	I!!&#,%N&_	     $???r   r   r   c                "    dd |D             dgS )Nuserc           	     v    g | ]6}d |d         t          |d                   |                    dd          d7S )tool_resulttool_idr
   is_errorF)r#   tool_use_idr+   r9   )r/   get.0trs     r   
<listcomp>z?AnthropicHistoryAdapter.format_tool_results.<locals>.<listcomp>1   s[         !.'))}#&r(|#4#4$&FF:u$=$=	   r   r)   r   r   s     r   r   z+AnthropicHistoryAdapter.format_tool_results*   s9       +   
 	
r   Nr   r   r   r   r   r   r    r       s@        @ @ @ @(
 
 
 
 
 
r   r    c                      e Zd Zd
dZddZd	S )GeminiHistoryAdapterr
   r   r   r   c                   g }t          |j        t                    r#|j        r|                    d|j        i           |j        D ]9}d|j        |j        di}|j        
|j        |d<   |                    |           :d|dS )Nr"   function_call)r&   argsthought_signaturemodelr*   parts)r.   r+   r/   r0   r1   r&   r'   rE   )r   r
   rH   r3   parts        r   r   z2GeminiHistoryAdapter.format_assistant_tool_message?   s     ')fnc** 	3v~ 	3LL&&.1222* 		 		I%N%O" "$D *6,5,G()LL%000r   r   r   c                "    dd |D             dgS )Nr5   c           	     R    g | ]$}d |d         dt          |d                   idi%S )function_response	tool_namer
   )r&   responser/   r<   s     r   r?   z<GeminiHistoryAdapter.format_tool_results.<locals>.<listcomp>Y   sT         ,$&{O)13r(|3D3D(E. .  r   rG   r   r   s     r   r   z(GeminiHistoryAdapter.format_tool_resultsR   s9       +   
 	
r   Nr   r   r   r   r   r   rA   rA   >   s<        1 1 1 1&
 
 
 
 
 
r   rA   c                      e Zd Zd
dZddZd	S )OpenAIHistoryAdapterr
   r   r   r   c                    dt          |j        t                    r|j        nd d |j        D             d}|j        r
|j        |d<   |S )Nr(   c                b    g | ],}|j         d |j        t          j        |j                  dd-S )function)r&   	arguments)r%   r#   rT   )r%   r&   jsondumpsr'   )r=   r3   s     r   r?   zFOpenAIHistoryAdapter.format_assistant_tool_message.<locals>.<listcomp>n   sW     
 
 
  $,& )%)Z	%@%@! ! 
 
 
r   )r*   r+   r1   reasoning_details)r.   r+   r/   r1   rX   )r   r
   messages      r   r   z2OpenAIHistoryAdapter.format_assistant_tool_messageg   so    
  )3FNC)H)HRv~~d
 
 "(!2
 
 
#
 #
 # 	D+1+CG'(r   r   r   c                    d |D             S )Nc                L    g | ]!}d |d         t          |d                   d"S )toolr8   r
   )r*   tool_call_idr+   rO   r<   s     r   r?   z<OpenAIHistoryAdapter.format_tool_results.<locals>.<listcomp>   sJ     
 
 
 	  "9r(|,, 
 
 
r   r   r   s     r   r   z(OpenAIHistoryAdapter.format_tool_results~   s%    
 
 #
 
 
 	
r   Nr   r   r   r   r   r   rQ   rQ   f   s<           .
 
 
 
 
 
r   rQ   )
__future__r   rV   typingr   r   backendr   r	   r    rA   rQ   r   r   r   <module>ra      s    " " " " " "                  % % % % % %	# 	# 	# 	# 	#X 	# 	# 	#&
 &
 &
 &
 &
 &
 &
 &
R%
 %
 %
 %
 %
 %
 %
 %
P#
 #
 #
 #
 #
 #
 #
 #
 #
 #
r   