o
    ic                  
   @  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mZ d d
lmZ d dlmZ zd dlmZ W n ey_ 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)harmony_model_profile)meta_model_profile)OpenAIJsonSchemaTransformerOpenAIModelProfile)qwen_model_profile)Provider)AsyncOpenAIu   Please install the `openai` package to use the Cerebras 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 )(CerebrasProviderzProvider for Cerebras API.returnstrc                 C     dS )Ncerebras selfr   r   d/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/providers/cerebras.pyname      zCerebrasProvider.namec                 C  r   )Nzhttps://api.cerebras.ai/v1r   r   r   r   r   base_url!   r   zCerebrasProvider.base_urlr   c                 C  s   | j S N)_clientr   r   r   r   client%   s   zCerebrasProvider.client
model_nameModelProfile | Nonec                 C  sR   t ttd}d }| D ]\}}| }||r||}qd}tt|d|S )N)llamaqwenzgpt-oss)frequency_penalty
logit_biaspresence_penaltyparallel_tool_callsservice_tier)json_schema_transformer!openai_unsupported_model_settings)	r   r   r   itemslower
startswithr
   r	   update)r   r   prefix_to_profileprofileprefixprofile_funcunsupported_model_settingsr   r   r   model_profile)   s   
zCerebrasProvider.model_profileNonec                 C     d S r   r   r   r   r   r   __init__@      zCerebrasProvider.__init__api_keyc                C  r3   r   r   )r   r6   r   r   r   r4   C   r5   http_clienthttpx.AsyncClientc                C  r3   r   r   )r   r6   r7   r   r   r   r4   F   r5   N)openai_clientr9   AsyncOpenAI | Nonec                C  r3   r   r   )r   r9   r   r   r   r4   I   r5   )r6   r9   r7   
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CEREBRAS_API_KEYz|Set the `CEREBRAS_API_KEY` environment variable or pass it via `CerebrasProvider(api_key=...)` to use the Cerebras provider.)r   r6   r7   r   )provider)osgetenvr   r   r   r   r   )r   r6   r9   r7   r   r   r   r4   L   s   

)r   r   )r   r   )r   r   r   r   )r   r2   )r6   r   r   r2   )r6   r   r7   r8   r   r2   )r9   r:   r   r2   )r6   r;   r9   r:   r7   r<   r   r2   )__name__
__module____qualname____doc__propertyr   r   r   r1   r   r4   r   r   r   r   r      s*    
r   )
__future__r   _annotationsr?   typingr   httpxpydantic_air   pydantic_ai.exceptionsr   pydantic_ai.modelsr   pydantic_ai.profiles.harmonyr   pydantic_ai.profiles.metar   pydantic_ai.profiles.openair	   r
   pydantic_ai.profiles.qwenr   pydantic_ai.providersr   openair   ImportError_import_errorr   r   r   r   r   <module>   s.    