o
    i%                  
   @  s  d dl mZ d dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ zd dl m!Z! W n e"yw Z# ze"de#dZ#[#ww G dd dee! Z$dS )    )annotationsN)overload)ModelProfile)	UserError)cached_async_http_client)deepseek_model_profile)google_model_profile)harmony_model_profile)meta_model_profile)mistral_model_profile)moonshotai_model_profile)OpenAIJsonSchemaTransformerOpenAIModelProfile)qwen_model_profile)Provider)AsyncOpenAIu   Please install the `openai` package to use the Nebius provider, you can use the `openai` optional group — `pip install "pydantic-ai-slim[openai]"`c                   @  s   e Zd ZdZed ddZed ddZed!d	d
Zd"ddZe	d#ddZ
e	d$ddZ
e	d%ddZ
e	ddd&ddZ
ddddd'ddZ
dS )(NebiusProviderz"Provider for Nebius AI Studio API.returnstrc                 C     dS )Nnebius selfr   r   b/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/providers/nebius.pyname!      zNebiusProvider.namec                 C  r   )Nz https://api.studio.nebius.com/v1r   r   r   r   r   base_url%   r   zNebiusProvider.base_urlr   c                 C  s   | j S N)_clientr   r   r   r   client)   s   zNebiusProvider.client
model_nameModelProfile | Nonec                 C  sv   t ttttttd}d }z| }|dd\}}W n t	y(   t
d|w ||v r3|| |}ttd|S )N)z
meta-llamazdeepseek-aiqwengoogleopenai	mistralai
moonshotai/   z4Model name must be in 'provider/model' format, got: )json_schema_transformer)r
   r   r   r   r	   r   r   lowersplit
ValueErrorr   r   r   update)r   r!   provider_to_profileprofileproviderr   r   r   model_profile-   s$   
zNebiusProvider.model_profileNonec                 C     d S r   r   r   r   r   r   __init__F      zNebiusProvider.__init__api_keyc                C  r4   r   r   )r   r7   r   r   r   r5   I   r6   http_clienthttpx.AsyncClientc                C  r4   r   r   )r   r7   r8   r   r   r   r5   L   r6   N)openai_clientr:   AsyncOpenAI | Nonec                C  r4   r   r   )r   r:   r   r   r   r5   O   r6   )r7   r:   r8   
str | Nonehttpx.AsyncClient | Nonec                C  sr   |pt d}|s|d u rtd|d ur|| _d S |d ur)t| j||d| _d S tdd}t| j||d| _d S )NNEBIUS_API_KEYzSet the `NEBIUS_API_KEY` environment variable or pass it via `NebiusProvider(api_key=...)` to use the Nebius AI Studio provider.)r   r7   r8   r   )r1   )osgetenvr   r   r   r   r   )r   r7   r:   r8   r   r   r   r5   R   s   

)r   r   )r   r   )r!   r   r   r"   )r   r3   )r7   r   r   r3   )r7   r   r8   r9   r   r3   )r:   r;   r   r3   )r7   r<   r:   r;   r8   r=   r   r3   )__name__
__module____qualname____doc__propertyr   r   r    r2   r   r5   r   r   r   r   r      s*    
r   )%
__future__r   _annotationsr?   typingr   httpxpydantic_air   pydantic_ai.exceptionsr   pydantic_ai.modelsr   pydantic_ai.profiles.deepseekr   pydantic_ai.profiles.googler   pydantic_ai.profiles.harmonyr	   pydantic_ai.profiles.metar
   pydantic_ai.profiles.mistralr   pydantic_ai.profiles.moonshotair   pydantic_ai.profiles.openair   r   pydantic_ai.profiles.qwenr   pydantic_ai.providersr   r%   r   ImportError_import_errorr   r   r   r   r   <module>   s6    