
    Ng                         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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)sinceremovalalternative_importc                  T   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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)modevaluesr   returnr   c                   |                     d          p't          j        d          pt          j        d          |d<   |                     d          pt          j        d          |d<   |                     d          pt          j        dd	          |d<   t          |d
dd	          |d
<   |                     d          p't          j        d          pt          j        d          |d<   t          |ddd	          |d<   |                     d          pt          j        d          |d<   |                     d          pt          j        d          |d<   t	          |d         d          |d<   	 ddl}n# t          $ r t          d          w xY wt                      r|d         }|r|d         rd|vr1|dxx         dz  cc<   t          j	        d| d|d          d            |d!         rct          j	        d"           |d!         |d         vr:t          j	        d#| d|d          d            |dxx         d$|d!         z   z  cc<   d|d!<   |S )%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)clsr&   r?   r+   s       g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/azure_openai.pyvalidate_environmentz*AzureOpenAIEmbeddings.validate_environment@   sa    JJ'(( +y/00+y)** 	 
 %+JJ/@$A$A %
RYF
 F
 ! (.zz2F'G'G (
29 ,L
 L
 L
#$ %9%'8'%
 %
 %
 ! JJ,-- 0y))0y.// 	$%
 "6	"
 "
 "
~ $*::.>#?#? $
29#D
 D
  $*::.>#?#? $
29#D
 D
   #6,#7>>|	MMMM 	 	 	?  	
 >> !	0 %%67O 06*=#> 0O33,---:---MM +M M 177H0IM M M   ,' 0M0   l+6:K3LLL < )8	< <
  &&78< < <   0111+f\.BB111 ,0F<(s   9E> >Fafterr   c                d   ddl }t                      r| j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        d} |j        di |j        | _        | j        r
| j        |d<    |j        di |j        | _        n|j        | _        | S )z"Validate that the base url is set.r   N)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   r1   r+   request_timeoutrK   rL   rM   rN   AzureOpenAI
embeddingsclientr   AsyncAzureOpenAIasync_client	Embedding)selfr?   client_paramss      rD   post_init_validatorz)AzureOpenAIEmbeddings.post_init_validator   s     	>> 	+#6"&"5$(O."&"5+/+G $ 8 0/#/#'#7!%!3#/ M -&,==}==HDK1 6 78 !8 7 H H- H H SD *DK    strc                    dS )Nzazure-openai-chatrO   )rW   s    rD   	_llm_typezAzureOpenAIEmbeddings._llm_type   s    ""rZ   )r&   r   r'   r   )r'   r   )r'   r[   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r!   r#   r   classmethodrE   rY   propertyr]   rO   rZ   rD   r   r      s         )('+N++++ !&d:L M M MJMMMM
 (-uT'K'K'KNKKKKU'+N++++ ?CBBBB
 PT!SSSS ).d-(P(P(PPPPPS"""""_(###Q Q Q [ $#Qf _'"""   #"@ # # # X# # #rZ   r   )ra   
__future__r   r<   rA   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   rO   rZ   rD   <module>rm      s9   & & " " " " " " 				  B B B B B B B B B B B B B B B B 6 6 6 6 6 6 5 5 5 5 5 5 + + + + + + + + " " " " " " B B B B B B 9 9 9 9 9 9 
?  
a# a# a# a# a#, a# a# 
a# a# a#rZ   