a
    bg                      @  s   d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
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 dd
lmZ eddddG dd deZdS )z Azure OpenAI embeddings wrapper.    )annotationsN)Any	AwaitableCallableDictOptionalUnion)
deprecated)get_from_dict_or_env)Fieldmodel_validator)Self)OpenAIEmbeddings)is_openai_v1z0.0.9z1.0z&langchain_openai.AzureOpenAIEmbeddings)ZsinceZremovalZalternative_importc                   @  s   e Zd ZU dZdZded< edddZded< edd	dZded
< dZ	ded< dZ
ded< dZded< edddZded< dZded< eddedddddZedddddd Zed!dd"d#ZdS )$AzureOpenAIEmbeddingsz`Azure OpenAI` Embeddings API.NzUnion[str, None]azure_endpointazure_deployment)defaultaliaszOptional[str]
deploymentapi_keyopenai_api_keyazure_ad_tokenzUnion[Callable[[], str], None]azure_ad_token_providerz)Union[Callable[[], Awaitable[str]], None]azure_ad_async_token_providerapi_versionopenai_api_versionTboolvalidate_base_urlbefore)moder   r   )valuesreturnc                 C  s  | dptdptd|d< | dp4td|d< | dpPtjddd	|d< t|d
ddd	|d
< | dptdptd|d< t|dddd	|d< | dptd|d< | dptd|d< t|d d|d< zddl}W n ty
   tdY n0 t r|d }|r|d rd|vrb|d  d7  < t	d| d|d  d  |d! rt	d" |d! |d vrt	d#| d|d  d  |d  d$|d!  7  < d|d!< |S )%z?Validate that api key and python package exists in environment.r   ZAZURE_OPENAI_API_KEYZOPENAI_API_KEYopenai_api_baseZOPENAI_API_BASEr   ZOPENAI_API_VERSIONz
2023-05-15)r   Zopenai_api_typeZOPENAI_API_TYPEZazureopenai_organizationZOPENAI_ORG_IDZOPENAI_ORGANIZATIONZopenai_proxyZOPENAI_PROXY r   ZAZURE_OPENAI_ENDPOINTr   ZAZURE_OPENAI_AD_TOKEN
chunk_sizei   r   NzTCould not import openai python package. Please install it with `pip install openai`.r   z/openaizAs of openai>=1.0.0, Azure endpoints should be specified via the `azure_endpoint` param not `openai_api_base` (or alias `base_url`). Updating `openai_api_base` from z to .r   zAs of openai>=1.0.0, if `deployment` (or alias `azure_deployment`) is specified then `openai_api_base` (or alias `base_url`) should not be. Instead use `deployment` (or alias `azure_deployment`) and `azure_endpoint`.zAs of openai>=1.0.0, if `openai_api_base` (or alias `base_url`) is specified it is expected to be of the form https://example-resource.azure.openai.com/openai/deployments/example-deployment. Updating z/deployments/)
getosgetenvr
   minopenaiImportErrorr   warningswarn)clsr!   r,   r#    r1   y/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/azure_openai.pyvalidate_environment@   s    








z*AzureOpenAIEmbeddings.validate_environmentafterr   )r"   c                 C  s   ddl }t r| j| j| j| j| j| j| j| j	| j
| j| j| j| jd}|jf i |j| _| jrl| j|d< |jf i |j| _n|j| _| S )z"Validate that the base url is set.r   N)r   r   r   r   r   r   Zorganizationbase_urltimeoutmax_retriesdefault_headersdefault_queryhttp_clientr   )r,   r   r   r   r   r   r   r   r$   r#   request_timeoutr7   r8   r9   r:   ZAzureOpenAIZ
embeddingsclientr   ZAsyncAzureOpenAIZasync_clientZ	Embedding)selfr,   Zclient_paramsr1   r1   r2   post_init_validator   s.    z)AzureOpenAIEmbeddings.post_init_validatorstrc                 C  s   dS )Nzazure-openai-chatr1   )r=   r1   r1   r2   	_llm_type   s    zAzureOpenAIEmbeddings._llm_type)__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r   r   r   classmethodr3   r>   propertyr@   r1   r1   r1   r2   r      s    
S r   )rD   
__future__r   r)   r.   typingr   r   r   r   r   r   Zlangchain_core._api.deprecationr	   Zlangchain_core.utilsr
   Zpydanticr   r   Ztyping_extensionsr   Z%langchain_community.embeddings.openair   Z langchain_community.utils.openair   r   r1   r1   r1   r2   <module>   s     