ó
    ýÞ jû$  ã                  óŠ   • S r SSKJr  SSKJrJr  SSKJr  SSKrSSK	J
r
Jr  SSKJrJrJr  SSKJr  SS	KJr   " S
 S\5      rg)z Azure OpenAI embeddings wrapper.é    )Úannotations)Ú	AwaitableÚCallable)ÚcastN)Úfrom_envÚsecret_from_env)ÚFieldÚ	SecretStrÚmodel_validator)ÚSelf)ÚOpenAIEmbeddingsc                  óR  • \ rS rSr% Sr\" \" SSS9S9rS\S'    \" SS	S
9r	S\S'    \" S\
" SS/SS9S9rS\S'    \" \" SSS9SS9rS\S'    \" \
" SSS9S9rS\S'    SrS\S'    SrS\S'    \" \" SSS9S9rS\S'   S rS!\S"'   S#rS$\S%'    \" S&S'9S+S( j5       r\S,S) j5       rS*rg)-ÚAzureOpenAIEmbeddingsé   u¶
  AzureOpenAI embedding model integration.

Setup:
    To access AzureOpenAI embedding models you'll need to create an Azure account,
    get an API key, and install the `langchain-openai` integration package.

    You'll need to have an Azure OpenAI instance deployed.
    You can deploy a version on Azure Portal following this
    [guide](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/create-resource?pivots=web-portal).

    Once you have your instance running, make sure you have the name of your
    instance and key. You can find the key in the Azure Portal,
    under the â€œKeys and Endpointâ€� section of your instance.

    ```bash
    pip install -U langchain_openai

    # Set up your environment variables (or pass them directly to the model)
    export AZURE_OPENAI_API_KEY="your-api-key"
    export AZURE_OPENAI_ENDPOINT="https://<your-endpoint>.openai.azure.com/"
    export AZURE_OPENAI_API_VERSION="2024-02-01"
    ```

Key init args â€” completion params:
    model:
        Name of `AzureOpenAI` model to use.
    dimensions:
        Number of dimensions for the embeddings. Can be specified only if the
        underlying model supports it.

See full list of supported init args and their descriptions in the params section.

Instantiate:
    ```python
    from langchain_openai import AzureOpenAIEmbeddings

    embeddings = AzureOpenAIEmbeddings(
        model="text-embedding-3-large"
        # dimensions: int | None = None, # Can specify dimensions with new text-embedding-3 models
        # azure_endpoint="https://<your-endpoint>.openai.azure.com/", If not provided, will read env variable AZURE_OPENAI_ENDPOINT
        # api_key=... # Can provide an API key directly. If missing read env variable AZURE_OPENAI_API_KEY
        # openai_api_version=..., # If not provided, will read env variable AZURE_OPENAI_API_VERSION
    )
    ```

Embed single text:
    ```python
    input_text = "The meaning of life is 42"
    vector = embed.embed_query(input_text)
    print(vector[:3])
    ```
    ```python
    [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
    ```

Embed multiple texts:
    ```python
    input_texts = ["Document 1...", "Document 2..."]
    vectors = embed.embed_documents(input_texts)
    print(len(vectors))
    # The first 3 coordinates for the first vector
    print(vectors[0][:3])
    ```
    ```python
    2
    [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
    ```

Async:
    ```python
    vector = await embed.aembed_query(input_text)
    print(vector[:3])

    # multiple:
    # await embed.aembed_documents(input_texts)
    ```
    ```python
    [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188]
    ```
ÚAZURE_OPENAI_ENDPOINTN)Údefault)Údefault_factoryz
str | NoneÚazure_endpointÚazure_deployment)r   ÚaliasÚ
deploymentÚapi_keyÚAZURE_OPENAI_API_KEYÚOPENAI_API_KEY)r   r   zSecretStr | NoneÚopenai_api_keyÚOPENAI_API_VERSIONz
2023-05-15Úapi_version)r   r   Úopenai_api_versionÚAZURE_OPENAI_AD_TOKENÚazure_ad_tokenzCallable[[], str] | NoneÚazure_ad_token_providerz#Callable[[], Awaitable[str]] | NoneÚazure_ad_async_token_providerÚOPENAI_API_TYPEÚazureÚopenai_api_typeTÚboolÚvalidate_base_urli   ÚintÚ
chunk_sizeÚafter)Úmodec                óð  • U R                   nU(       au  U R                  (       ad  U R                  (       d5  SU;  a/  [        [        U R                   5      S-   U l         Sn[        U5      eU R                  (       a  Sn[        U5      eU R                  U R                  U R                  U R                  (       a  U R                  R                  5       OSU R                  (       a  U R                  R                  5       OSU R                  U R                  U R                   U R                  U R                  SS0U R                  =(       d    0 EU R                   S.nU R                  (       d"  U R                  (       d  U R"                  (       a  SUS'   U R$                  (       dh  U R"                  (       a"  U R                  (       d  U R                  (       a5  S	U R&                  0n[(        R*                  " S0 UDUD6R,                  U l        U R.                  (       dU  S	U R0                  0nU R"                  (       a  U R"                  US
'   [(        R2                  " S0 UDUD6R,                  U l        U $ )z?Validate that api key and python package exists in environment.z/openaiz…As of openai>=1.0.0, Azure endpoints should be specified via the `azure_endpoint` param not `openai_api_base` (or alias `base_url`). zØAs 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`.Nz
User-Agentz%langchain-partner-python-azure-openai)r   r   r   r   r    r!   ÚorganizationÚbase_urlÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryr   Úhttp_clientr!   © )Úopenai_api_baser'   r   r   ÚstrÚ
ValueErrorr   r   r   Úget_secret_valuer    r!   Úopenai_organizationÚrequest_timeoutr0   r1   r2   r"   Úclientr3   ÚopenaiÚAzureOpenAIÚ
embeddingsÚasync_clientÚhttp_async_clientÚAsyncAzureOpenAI)Úselfr5   ÚmsgÚclient_paramsÚsync_specificÚasync_specifics         Ú[/var/www/html/gaurav/venv/lib/python3.13/site-packages/langchain_openai/embeddings/azure.pyÚvalidate_environmentÚ*AzureOpenAIEmbeddings.validate_environment¢   s  € ð
 ×.Ñ.ˆÞ˜t×5×5à×&×&¨9¸OÓ+KÜ'+¬C°×1EÑ1EÓ'FÈÑ'R�Ô$ð.ð ô
 ! “oÐ%Ø��ð,ð ô ! “oÐ%à×2Ñ2Ø"×1Ñ1Ø $§¡à:>×:M×:M�×#Ñ#×4Ñ4Ô6ÐSWð ;?×:M×:M�×#Ñ#×4Ñ4Ô6ÐSWà'+×'CÑ'CØ ×4Ñ4Ø×,Ñ,Ø×+Ñ+Ø×+Ñ+àÐEð à×'Ñ'×-¨2ð ð "×/Ñ/ñ'
ˆð, ××Ø×+×+Ø×1×1à'+ˆM˜)Ñ$Ø�{�{Ø×2×2Ø×"×"Ø×+×+à#0°$×2BÑ2BÐ"CˆMÜ ×,Ò,ñ Øðàñ÷ ‰jð ŒKð × × Ø$1°4×3IÑ3IÐ#JˆNà×1×1à×6Ñ6ð Ð7Ñ8ô !'× 7Ò 7ñ !Øð!à ñ!÷ ‰jð Ôð ˆó    c                ó   • g)Nzazure-openai-chatr4   )rB   s    rG   Ú	_llm_typeÚAzureOpenAIEmbeddings._llm_typeî   s   € à"rJ   )r?   r;   r5   )Úreturnr   )rN   r6   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r	   r   r   Ú__annotations__r   r   r   r   r    r!   r"   r%   r'   r)   r   rH   ÚpropertyrL   Ú__static_attributes__r4   rJ   rG   r   r      sL  ‡ ñOñb "'Ù Ð!8À$ÑGñ"€N�Jó ðñ #¨4Ð7IÑJ€J�
ÓJðñ (-ØÙ'Ø#Ð%5Ð6Àñ
ñ(€NÐ$ó ð VÙ%*Ù Ð!5¸|ÑLØñ&Ð˜
ó ðñ
 (-Ù'Ð(?ÈÑNñ(€NÐ$ó ðð 9=ÐÐ5Ó<ðð
 JNÐ!Ð#FÓMðñ #(Ù Ð!2¸GÑDñ#€O�Zó ð #Ð�tÓ"Ø€J�ÓØ8á˜'Ñ"óIó #ðIðV ó#ó ó#rJ   r   )rS   Ú
__future__r   Úcollections.abcr   r   Útypingr   r<   Úlangchain_core.utilsr   r   Úpydanticr	   r
   r   Útyping_extensionsr   Ú langchain_openai.embeddings.baser   r   r4   rJ   rG   Ú<module>r^      s2   ðÙ &å "ç /Ý ã ß :ß 6Ñ 6Ý "å =ô`#Ð,õ `#rJ   