
    5Qj                     :    d dl Z ddlmZ ddlmZ  G d de      Zy)    N   )LLMProvider)parse_json_responsec            	       J    e Zd ZdZddedz  dededdfdZded	ee   defd
Z	y)AnthropicProviderzNative Anthropic Messages API. Unlike the OpenAI wire format, the system
    prompt is its own top-level parameter and the messages list may only contain
    "user"/"assistant" roles - both handled here so callers never need to know that.
    api_keyNmodel
max_tokensreturnc                 V    t        j                  |      | _        || _        || _        y )N)r   )	anthropic	Anthropicclientr	   r
   )selfr   r	   r
   s       F/var/www/html/meridian/meridian-ai/app/providers/anthropic_provider.py__init__zAnthropicProvider.__init__   s"    ))':
$    system_promptmessagesc                     | j                   j                  j                  | j                  | j                  ||      }dj                  d |j                  D              }t        |      S )N)r	   r
   systemr    c              3   T   K   | ]   }|j                   d k(  s|j                   " yw)textN)typer   ).0blocks     r   	<genexpr>z2AnthropicProvider.complete_json.<locals>.<genexpr>   s      Xe5::QWCWuzzXs   (()r   r   creater	   r
   joincontentr   )r   r   r   responser   s        r   complete_jsonzAnthropicProvider.complete_json   s\    ;;''..** 	 / 
 wwXx/?/?XX"4((r   )i   )
__name__
__module____qualname____doc__strintr   listdictr#    r   r   r   r      sK    
%d
 %3 %C %SW %
)3 )$t* ) )r   r   )r   baser   
json_utilsr   r   r,   r   r   <module>r/      s      +) )r   