
    ^h                         S SK r S SKJrJr  S SKrS SKJrJr  S SKJr  S SK	J
r
Jr  S SKJrJr   " S S\5      r\" 5       r " S	 S
\5      rg)    N)AnyOptional)ChatCompletionRequestverbose_logger)CustomLogger)AnthropicMessagesRequestAnthropicResponse)AdapterCompletionStreamWrapperModelResponsec                   p   ^  \ rS rSrSU 4S jjrS\\   4S jrS\S\\	   4S jr
S\S\S-  4S	 jrS
rU =r$ )AnthropicAdapter   returnNc                 "   > [         TU ]  5         g )N)super__init__)self	__class__s    \/home/james-whalen/.local/lib/python3.13/site-packages/litellm/adapters/anthropic_adapter.pyr   AnthropicAdapter.__init__   s        c                 `    [        S0 UD6n[        R                  " 5       R                  US9nU$ )z5
- translate params, where needed
- pass rest, as is
)anthropic_message_request )r   litellm&AnthropicExperimentalPassThroughConfigtranslate_anthropic_to_openai)r   kwargsrequest_bodytranslated_bodys       r   !translate_completion_input_params2AnthropicAdapter.translate_completion_input_params   s;     09&9!HHJhh&2 i 
 r   responsec                 F    [         R                  " 5       R                  US9$ )Nr#   )r   r   &translate_openai_response_to_anthropic)r   r#   s     r   "translate_completion_output_params3AnthropicAdapter.translate_completion_output_params    s)     ==?ff g 
 	
r   completion_streamc                     [        US9$ )N)r)   )AnthropicStreamWrapper)r   r)   s     r   ,translate_completion_output_params_streaming=AnthropicAdapter.translate_completion_output_params_streaming(   s     &8IJJr   r   )r   N)__name__
__module____qualname____firstlineno__r   r   r   r!   r   r	   r'   r   r
   r,   __static_attributes____classcell__)r   s   @r   r   r      sY    	'	(
%
	#	$
K!$K	'$	.K Kr   r   c                   r    \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S'   Sr\\   \S	'   S
 rS rSrg)r+   1   z
- first chunk return 'message_start'
- content block must be started and stopped
- finish_reason must map exactly to anthropic reason, else anthropic client won't be able to parse it.
Fsent_first_chunksent_content_block_startsent_content_block_finishsent_last_messageNholding_chunkc                 4    U R                   SL a  SU l         SSSS/ SS S SS	S
.S.S.$ U R                  SL a  SU l        SSSSS.S.$ U R                   H  nUS:X  d  Uc  [        e[        R
                  " 5       R                  US9nUS   S:X  a#  U R                  SL a  X l        SU l        SSS.s  $ U R                  b  U R                  nX l        Us  $ Us  $    U R                  b  U R                  nS U l        U$ U R                  SL a  SU l	        SS0$ [        e! [         a#    U R                  SL a  SU l	        SS0s $ [        e[         aC  n[        R                  " SR                  U[        R                  " 5       5      5         S nAg S nAff = f)NFTmessage_start&msg_1nZdL29xx5MUA1yADyHTEsnR8uuvGzszyYmessage	assistantclaude-3-5-sonnet-20240620      input_tokensoutput_tokensidtyperolecontentmodelstop_reasonstop_sequenceusagerH   r>   content_block_startr   text rH   rQ   rH   indexcontent_blockNoner%   rH   message_deltacontent_block_stoprH   rU   message_stopzAnthropic Adapter - {}
{})r6   r7   r)   	Exceptionr   r   0translate_streaming_openai_response_to_anthropicr8   r:   r9   StopIterationr   errorformat	traceback
format_exc)r   chunkprocessed_chunkreturn_chunkes        r   __next__AnthropicStreamWrapper.__next__>   s   ?	$$-(,%+F ) +#%!='+)-24q!I	   ,,504-1.4b%A  //F?em#O")"P"P"R  #D  #D" #D # $F+>66%?)8&59D2 4!"  ''3#'#5#5L)8&''**- 0. !!-#11%)"##%%.)-&// 	 %%.)-&// 	  ,33Ay7K7K7MN 	sG   &D D A+D 4"D D #D ?D D $FF9FFc                   #     U R                   SL a  SU l         SSSS/ SS S SS	S
.S.S.$ U R                  SL a  SU l        SSSSS.S.$ U R                    S h  vN nUS:X  d  Uc  [        e[        R
                  " 5       R                  US9nUS   S:X  a#  U R                  SL a  X l        SU l        SSS.s  $ U R                  b  U R                  nX l        Us  $ Us  $  N
 U R                  b  U R                  nS U l        U$ U R                  SL a  SU l	        SS0$ [        e! [         a#    U R                  SL a  SU l	        SS0s $ [        ef = f7f)NFTr<   r=   r>   r?   r@   rA   rB   rC   rF   rO   rP   r   rQ   rR   rS   rT   rW   r%   rH   rX   rY   rZ   r[   )r6   r7   r)   r\   r   r   r]   r8   r:   r9   r^   StopAsyncIteration)r   rc   rd   re   s       r   	__anext__ AnthropicStreamWrapper.__anext__   s    9	%$$-(,%+F ) +#%!='+)-24q!I	   ,,504-1.4b%A 
  $55 +eF?em#O")"P"P"R  #D  #D" #D # $F+>66%?)8&59D2 4!"  ''3#'#5#5L)8&''**++5, !!-#11%)"##%%.)-&// 	%%%.)-&//$$		%s   E&D( ED( 	E
D( C%C#C%AD( ;E<"D( ED( "E#C%%"D( ED( !E"D( ($EEEE)r:   r8   r7   r6   r9   )r.   r/   r0   r1   __doc__r6   bool__annotations__r7   r8   r9   r:   r   r   rg   rk   r2   r   r   r   r+   r+   1   sO     #d"%*d*&+t+#t##'M8C='@D:%r   r+   )ra   typingr   r   r   r   r   "litellm.integrations.custom_loggerr   litellm.types.llms.anthropicr   r	   litellm.types.utilsr
   r   r   anthropic_adapterr+   r   r   r   <module>ru      sE        9 ; T MK| KB %& I%; I%r   