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mZ d d	lmZ zd dlmZ W n eyS Z zed
edZ[ww G dd dee ZdS )    )annotationsN)overload)AsyncOpenAI)ModelProfile)	UserError)cached_async_http_client)OpenAIJsonSchemaTransformerOpenAIModelProfile)Provideru   Please install the `openai` package to use the Heroku 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 dZ
dS ))HerokuProviderzProvider for Heroku API.returnstrc                 C  s   dS )Nheroku selfr   r   b/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/providers/heroku.pyname   s   zHerokuProvider.namec                 C  s   t | jjS N)r   clientbase_urlr   r   r   r   r      s   zHerokuProvider.base_urlr   c                 C  s   | j S r   )_clientr   r   r   r   r   #   s   zHerokuProvider.client
model_nameModelProfile | Nonec                 C  s
   t tdS )N)json_schema_transformer)r	   r   )r   r   r   r   r   model_profile'   s   
zHerokuProvider.model_profileNonec                 C     d S r   r   r   r   r   r   __init__+      zHerokuProvider.__init__api_keyc                C  r   r   r   )r   r    r   r   r   r   .   r   http_clienthttpx.AsyncClientc                C  r   r   r   )r   r    r!   r   r   r   r   1   r   N)openai_clientr#   AsyncOpenAI | Nonec                C  r   r   r   )r   r#   r   r   r   r   4   r   )r   r    r#   r!   r   
str | Nonehttpx.AsyncClient | Nonec                C  s   |d ur|d u sJ d|d u sJ d|| _ d S |ptd}|s&td|p-tdd}|dd }|d urCt|||d	| _ d S td
d}t|||d	| _ d S )Nz5Cannot provide both `openai_client` and `http_client`z1Cannot provide both `openai_client` and `api_key`HEROKU_INFERENCE_KEYz{Set the `HEROKU_INFERENCE_KEY` environment variable or pass it via `HerokuProvider(api_key=...)`to use the Heroku provider.HEROKU_INFERENCE_URLzhttps://us.inference.heroku.com/z/v1)r    r!   r   r   )provider)r   osgetenvr   rstripr   r   )r   r   r    r#   r!   r   r   r   r   7   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&   r   r   )__name__
__module____qualname____doc__propertyr   r   r   r   r   r   r   r   r   r   r      s,    
r   )
__future__r   _annotationsr+   typingr   httpxopenair   pydantic_air   pydantic_ai.exceptionsr   pydantic_ai.modelsr   pydantic_ai.profiles.openair   r	   pydantic_ai.providersr
   ImportError_import_errorr   r   r   r   r   <module>   s*    