o
    ØÝ+ir  ã                   @  sH   d dl mZ d dlZd dlmZmZ d dlmZ dd	d
„Z	ddd„Z
dS )é    )ÚannotationsN)ÚAnyÚcast)ÚcontentÚ
annotationútypes.AnnotationÚreturnúdict[str, Any]c                   sê  | d dkr
| d S | d dkrld| v r`i ‰ |   d¡ }r"|ˆ d< d|   di ¡v r4|   di ¡d ˆ d< d	| v r>| d	 ˆ d	< d
ˆ d< |   d¡ˆ d< |   di ¡ ¡ D ]\}}|ˆ vr]|ˆ |< qQˆ S d|   di ¡v r¥ddi‰ dD ]}|   |¡ }r{|ˆ |< qn|   d	¡ }r‡|ˆ d< |   di ¡ ¡ D ]\}}|ˆ |< q‡ fdd„tˆ ƒD ƒ‰ ˆ S d|   di ¡v rÔddi‰ dD ]}|   |¡ }rÀ|ˆ |< q³|   di ¡ ¡ D ]\}}|ˆ |< qÉˆ S d|   di ¡v r$i ‰ |   d¡ }rê|ˆ d< d|   di ¡v rü|   di ¡d ˆ d< d	| v r| d	 ˆ d< |   di ¡ ¡ D ]\}}|ˆ vr|ˆ |< qdˆ d< ˆ S d|   di ¡v rcddi‰ dD ]}|   |¡ }rA|ˆ |< q3|   d	¡ }rO|ˆ d< |   di ¡ ¡ D ]	\}}|ˆ |< qWˆ S ttttf | ƒS ttttf | ƒS )zJConvert LangChain annotation format to Anthropic's native citation format.ÚtypeÚnon_standard_annotationÚvalueÚcitationÚurlÚ
cited_textÚencrypted_indexÚextrasÚtitleÚweb_search_result_locationÚstart_char_indexÚchar_location)r   Údocument_titlec                   s   i | ]}|ˆ | “qS © r   )Ú.0Úk©Úoutr   úX/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/langchain_anthropic/_compat.pyÚ
<dictcomp>,   s    z/_convert_annotation_from_v1.<locals>.<dictcomp>Úsearch_result_indexÚsearch_result_location)r   r   Ústart_block_indexÚdocument_indexÚcontent_block_locationÚstart_page_numberÚpage_location)ÚgetÚitemsÚsortedr   ÚdictÚstrr   )r   r   Úkeyr   Úfieldr   r   r   r   Ú_convert_annotation_from_v1	   s„   €€
€


€€r,   r   úlist[types.ContentBlock]Ú
tool_callsúlist[types.ToolCall]Úmodel_providerú
str | Noneúlist[dict[str, Any]]c           
   
   C  sx  g }| D ]´}|d dkr>|dkr/d|v r/ddi}dd„ |d D ƒ|d< d|v r.|d |d< n	|  dd¡dd	œ}| |¡ q|d d
kr[| d|  dd¡|  di ¡|  dd¡dœ¡ q|d dkršt|d tƒr€zt |d ppd¡}W n tjy   i }Y nw |  d¡p†i }| d|  dd¡||  dd¡dœ¡ q|d dkrÉ|dkrÉi }d|v r°|d |d< d|d< |  di ¡  d¡ }rÃ||d< | |¡ q|d dkrU|dkrUi }d|v rá|d |d< |  di ¡|d< |  di ¡  d¡ }rýi |d< ||d< n	 |  d¡dkrd|d< n3|  d¡dkr6d|  di ¡v r$|d d |d< d|  di ¡v r5|d d |d< n|  dd¡|d< |  d¡dkrKd|d< nd|d< | |¡ q|d d kr›|dkr›i }d!|v rn|d! |d"< |  di ¡  d#d¡}	|	d$kr†|  d%¡d&k|d'< d(|v r‘|d( |d)< |	|d< | |¡ q|d d*kr´d+|v r´|dkr´| |d+ ¡ q| |¡ q|S ),Nr
   ÚtextÚ	anthropicr   c                 S  s   g | ]}t |ƒ‘qS r   )r,   )r   Úar   r   r   Ú
<listcomp>j   s    ÿz1_convert_from_v1_to_anthropic.<locals>.<listcomp>Ú	citationsÚ )r3   r
   Ú	tool_callÚtool_useÚnameÚargsÚid)r
   r;   Úinputr=   Útool_call_chunkz{}Ú	reasoningÚthinkingr   Ú	signatureÚserver_tool_callr>   Úpartial_jsonÚcode_interpreterÚcode_executionÚ
remote_mcpÚ	tool_nameÚserver_nameÚmcp_tool_useÚserver_tool_useÚserver_tool_resultÚoutputr   Ú
block_typeÚmcp_tool_resultÚstatusÚerrorÚis_errorÚtool_call_idÚtool_use_idÚnon_standardr   )r%   ÚappendÚ
isinstancer)   ÚjsonÚloadsÚJSONDecodeError)
r   r.   r0   Únew_contentÚblockÚ	new_blockÚinput_rB   rD   Úserver_tool_result_typer   r   r   Ú_convert_from_v1_to_anthropic`   s¦   

ÿ€


üÿ	ÿ

üÿ	

€





r`   )r   r   r   r	   )r   r-   r.   r/   r0   r1   r   r2   )Ú
__future__r   rX   Útypingr   r   Úlangchain_core.messagesr   Útypesr,   r`   r   r   r   r   Ú<module>   s    
W