
    7|h                         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       G d de             Zy)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)sinceremovalalternative_importc                     e Zd ZU dZdZded<   	  edd      Zded<   	  edd	      Zded
<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	  edd      Zded<   	 dZded<    ed      edd              Z ed      dd       Zedd       Zy)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)modec                R   |j                  d      xs, t        j                  d      xs t        j                  d      |d<   |j                  d      xs t        j                  d      |d<   |j                  d      xs t        j                  dd	      |d<   t        |d
dd	      |d
<   |j                  d      xs, t        j                  d      xs t        j                  d      |d<   t        |ddd	      |d<   |j                  d      xs t        j                  d      |d<   |j                  d      xs t        j                  d      |d<   t	        |d   d      |d<   	 ddl}t               r|d   }|r|d   rd|vr,|dxx   dz  cc<   t        j                  d| d|d    d        |d!   rVt        j                  d"       |d!   |d   vr2t        j                  d#| d|d    d        |dxx   d$|d!   z   z  cc<   d|d!<   |S # t        $ r t        d      w xY w)%z?Validate that api key and python package exists in environment.r   AZURE_OPENAI_API_KEYOPENAI_API_KEYopenai_api_baseOPENAI_API_BASEr!   OPENAI_API_VERSIONz
2023-05-15)r   openai_api_typeOPENAI_API_TYPEazureopenai_organizationOPENAI_ORG_IDOPENAI_ORGANIZATIONopenai_proxyOPENAI_PROXY r   AZURE_OPENAI_ENDPOINTr   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)clsvaluesr=   r)   s       j/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/azure_openai.pyvalidate_environmentz*AzureOpenAIEmbeddings.validate_environment@   s    JJ'( +yy/0+yy)* 	 
 %+JJ/@$A %
RYYF
 ! (.zz2F'G (
299 ,L
#$ %9%'8'%
 ! JJ,- 0yy)0yy./ 	$%
 "6	"
~ $*::.>#? $
299#D
  $*::.>#? $
299#D
   #6,#7>|	 > %%67O6*=#>O3,-:-MMR ++47H0I/J!M ,'MM0 l+6:K3LL ( )8'8%&789< 01+f\.BB1 ,0F<(O  	? 	s   *H H&afterc                :   ddl }t               r| j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  i | j                  xs i ddi| j                  | j                  d} |j                  di |j                   | _        | j$                  r| j$                  |d<    |j&                  di |j                   | _        | S |j*                  | _        | S )z"Validate that the base url is set.r   Nz
User-Agentz"langchain-comm-python-azure-openai)r    r   r   r   r   r   organizationbase_urltimeoutmax_retriesdefault_headersdefault_queryhttp_clientr    )r=   r   r!   r   r   r   r   r   r/   r)   request_timeoutrJ   rK   rL   rM   AzureOpenAI
embeddingsclientr   AsyncAzureOpenAIasync_client	Embedding)selfr=   client_paramss      rC   post_init_validatorz)AzureOpenAIEmbeddings.post_init_validator   s    	>#66"&"5"5$(OO.."&"5"5+/+G+G $ 8 8 00//#//$++1r$ "F$ "&!3!3#//!M$ -&,,=}=HHDK1166 78 !8 7 7 H- H S SD  !**DK    c                     y)Nzazure-openai-chatrN   )rV   s    rC   	_llm_typezAzureOpenAIEmbeddings._llm_type   s    "rY   )rB   r   returnr   )r\   r   )r\   str)__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r!   r#   r   classmethodrD   rX   propertyr[   rN   rY   rC   r   r      s     )'+N$+ !&d:L MJM
 (-T'KN$KU'+N$+ ?C;B
 PT!#LS ).d-(PPS"t"(#Q  $Qf '"! #!F # #rY   r   )ra   
__future__r   r:   r?   typingr   r   r   r   r   r	   langchain_core._api.deprecationr
   langchain_core.utilsr   pydanticr   r   typing_extensionsr   %langchain_community.embeddings.openair    langchain_community.utils.openair   r   rN   rY   rC   <module>rm      sV    & " 	  B B 6 5 + " B 9 
?
d#, d#
d#rY   