o
    i                  
   @  s   d dl mZ d dlZd dlmZ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 zd dlm	Z	 W n ey[ Z zededZ[ww ed ZG dd dee	 ZdS )    )annotationsN)Literaloverload)AsyncOpenAI)ModelProfile)	UserError)cached_async_http_client)grok_model_profile)OpenAIJsonSchemaTransformerOpenAIModelProfile)Provideru   Please install the `openai` package to use the Grok provider, you can use the `openai` optional group — `pip install "pydantic-ai-slim[openai]"`)zgrok-4zgrok-4-0709zgrok-3zgrok-3-minizgrok-3-fastzgrok-3-mini-fastzgrok-2-vision-1212zgrok-2-image-1212c                   @  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 )(GrokProviderzProvider for Grok API.returnstrc                 C     dS )Ngrok selfr   r   `/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/providers/grok.pyname(      zGrokProvider.namec                 C  r   )Nzhttps://api.x.ai/v1r   r   r   r   r   base_url,   r   zGrokProvider.base_urlr   c                 C  s   | j S N)_clientr   r   r   r   client0   s   zGrokProvider.client
model_nameModelProfile | Nonec                 C  s   t |}ttdd|S )NF)json_schema_transformer&openai_supports_strict_tool_definition)r	   r   r
   update)r   r   profiler   r   r   model_profile4   s   zGrokProvider.model_profileNonec                 C     d S r   r   r   r   r   r   __init__>      zGrokProvider.__init__api_keyc                C  r$   r   r   )r   r'   r   r   r   r%   A   r&   http_clienthttpx.AsyncClientc                C  r$   r   r   )r   r'   r(   r   r   r   r%   D   r&   N)openai_clientr*   AsyncOpenAI | Nonec                C  r$   r   r   )r   r*   r   r   r   r%   G   r&   )r'   r*   r(   
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GROK_API_KEYzoSet the `GROK_API_KEY` environment variable or pass it via `GrokProvider(api_key=...)`to use the Grok provider.)r   r'   r(   r   )provider)osgetenvr   r   r   r   r   )r   r'   r*   r(   r   r   r   r%   J   s   

)r   r   )r   r   )r   r   r   r   )r   r#   )r'   r   r   r#   )r'   r   r(   r)   r   r#   )r*   r+   r   r#   )r'   r,   r*   r+   r(   r-   r   r#   )__name__
__module____qualname____doc__propertyr   r   r   r"   r   r%   r   r   r   r   r   %   s*    

r   )
__future__r   _annotationsr0   typingr   r   httpxopenair   pydantic_air   pydantic_ai.exceptionsr   pydantic_ai.modelsr   pydantic_ai.profiles.grokr	   pydantic_ai.profiles.openair
   r   pydantic_ai.providersr   ImportError_import_errorGrokModelNamer   r   r   r   r   <module>   s2    