
    Mi                         S SK Jr  S SKJrJr  S SKrS SKJrJ	r	  S SK
Jr  S SKJrJr  S SKJr  \(       a  S SKJr   " S	 S
\5      r\ " S S\5      5       rg)    )	dataclass)TYPE_CHECKINGListN)Field	SecretStr)Element)BaseEmbeddingEncoderEmbeddingConfig)requires_dependenciesOpenAIEmbeddingsc                   V    \ rS rSr% \\S'   \" SS9r\\S'   \	" S/SS9SS	 j5       r
S
rg)OpenAIEmbeddingConfig   api_keyztext-embedding-ada-002)default
model_namelangchain_openaiopenai)extrasc                 d    SSK Jn  U" U R                  R                  5       U R                  S9nU$ )z;Creates a langchain OpenAI python client to embed elements.r   r   )openai_api_keymodel)r   r   r   get_secret_valuer   )selfr   openai_clients      s/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/unstructured/embed/openai.py
get_client OpenAIEmbeddingConfig.get_client   s0     	6(<<88://
      N)returnr   )__name__
__module____qualname____firstlineno__r   __annotations__r   r   strr   r   __static_attributes__r!   r    r   r   r      s6    $<=J=./A Br    r   c                   ~    \ rS rSr% \\S'   S\\   4S jrS r	S r
S rS rS	\\   S\\   4S
 jrS\\   4S jrSrg)OpenAIEmbeddingEncoder!   configr"   c                      U R                  SS9$ )NQ)query)embed_queryr   s    r   get_exemplary_embedding.OpenAIEmbeddingEncoder.get_exemplary_embedding%   s    c**r    c                     g Nr!   r2   s    r   
initialize!OpenAIEmbeddingEncoder.initialize(   s    r    c                 N    U R                  5       n[        R                  " U5      $ r6   )r3   npshaper   exemplary_embeddings     r   num_of_dimensions(OpenAIEmbeddingEncoder.num_of_dimensions+   s!    "::<xx+,,r    c                     U R                  5       n[        R                  " [        R                  R	                  U5      S5      $ )Ng      ?)r3   r:   iscloselinalgnormr<   s     r   is_unit_vector%OpenAIEmbeddingEncoder.is_unit_vector/   s0    "::<zz"))..)<=sCCr    c                 j    U R                   R                  5       nUR                  [        U5      5      $ r6   )r-   r   r1   r(   )r   r0   clients      r   r1   "OpenAIEmbeddingEncoder.embed_query3   s)    '')!!#e*--r    elementsc                     U R                   R                  5       nUR                  U Vs/ s H  n[        U5      PM     sn5      nU R	                  X5      nU$ s  snf r6   )r-   r   embed_documentsr(   _add_embeddings_to_elements)r   rI   rG   e
embeddingselements_with_embeddingss         r   rK   &OpenAIEmbeddingEncoder.embed_documents7   sT    '')++X,FXSVX,FG
#'#C#CH#Y '' -Gs   Ac                     [        U5      [        U5      :X  d   e/ n[        U5       H  u  pEX$   Ul        UR                  U5        M!     U$ r6   )len	enumeraterN   append)r   rI   rN   elements_w_embeddingielements         r   rL   2OpenAIEmbeddingEncoder._add_embeddings_to_elements=   sN    8}J///!#H-JA!+G ''0 . r    r!   N)r#   r$   r%   r&   r   r'   r   floatr3   r7   r>   rD   r1   r   rK   rL   r)   r!   r    r   r+   r+   !   sX    !!+e +-D.(W ($w- (4= r    r+   )dataclassesr   typingr   r   numpyr:   pydanticr   r   unstructured.documents.elementsr   unstructured.embed.interfacesr	   r
   unstructured.utilsr   langchain_openai.embeddingsr   r   r+   r!   r    r   <module>rb      sM    ! &  % P 4<O   !1 ! !r    