Ë
    µŒj"  ã                   óö   — d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZmZmZ  G d„ dee«      Z G d„ d	ee«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d«      Z G d„ d«      Zy)é    )ÚEnum)ÚAnyÚDictÚListÚLiteralÚMappingÚOptionalÚUnionN)ÚDocument)Ú	BaseModelÚ	SecretStrÚmodel_validatorc                   ó   — e Zd ZdZdZdZdZy)Ú
ArceeRoutez1Routes available for the Arcee API as enumerator.zmodels/generatezmodels/retrievezmodels/status/{id_or_name}N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚgenerateÚretrieveÚmodel_training_status© ó    úm/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/arcee.pyr   r      s   „ Ù;à €HØ €HØ8Ñr   r   c                   ó   — e Zd ZdZdZdZy)ÚDALMFilterTypez:Filter types available for a DALM retrieval as enumerator.Úfuzzy_searchÚstrict_searchN)r   r   r   r   r   r   r   r   r   r   r      s   „ ÙDà!€LØ#�Mr   r   c                   óp   — e Zd ZU dZeed<   eed<   eed<   dZeed<    e	d¬«      e
d	ed
efd„«       «       Zy)Ú
DALMFilteraX  Filters available for a DALM retrieval and generation.

    Arguments:
        field_name: The field to filter on. Can be 'document' or 'name' to filter
            on your document's raw text or title. Any other field will be presumed
            to be a metadata field you included when uploading your context data
        filter_type: Currently 'fuzzy_search' and 'strict_search' are supported.
            'fuzzy_search' means a fuzzy search on the provided field is performed.
            The exact strict doesn't need to exist in the document
            for this to find a match.
            Very useful for scanning a document for some keyword terms.
            'strict_search' means that the exact string must appear
            in the provided field.
            This is NOT an exact eq filter. ie a document with content
            "the happy dog crossed the street" will match on a strict_search of
            "dog" but won't match on "the dog".
            Python equivalent of `return search_string in full_string`.
        value: The actual value to search for in the context data/metadata
    Ú
field_nameÚfilter_typeÚvalueFÚ_is_metadataÚbefore)ÚmodeÚvaluesÚreturnc                 ó2   — |j                  d«      dv|d<   |S )zDdocument and name are reserved arcee keys. Anything else is metadatar!   )ÚdocumentÚnameÚ_is_meta)Úget)Úclsr'   s     r   Úset_metazDALMFilter.set_meta6   s"   € ð $ŸZ™Z¨Ó5Ð=QÐQˆˆzÑØˆr   N)r   r   r   r   ÚstrÚ__annotations__r   r$   Úboolr   Úclassmethodr   r   r/   r   r   r   r    r       sP   … ñð( ƒOØÓØƒJØ€L�$Óá˜(Ô#Øð˜dð  sò ó ó $ñr   r    c                   ó0   — e Zd ZU dZeed<   eed<   eed<   y)ÚArceeDocumentSourcezSource of an Arcee document.r*   r+   ÚidN)r   r   r   r   r0   r1   r   r   r   r5   r5   >   s   … Ù&àƒMØ
ƒIØ„Gr   r5   c                   ó:   — e Zd ZU dZeed<   eed<   eed<   eed<   y)ÚArceeDocumentzArcee document.Úindexr6   ÚscoreÚsourceN)r   r   r   r   r0   r1   Úfloatr5   r   r   r   r8   r8   F   s   … ÙàƒJØƒGØƒLØÔr   r8   c                   ó*   — e Zd ZdZededefd„«       Zy)ÚArceeDocumentAdapterzAdapter for Arcee documentsÚarcee_documentr(   c           	      óÜ   — t        |j                  j                  |j                  j                  |j                  j                  |j
                  |j                  |j                  dœ¬«      S )z=Adapts an `ArceeDocument` to a langchain's `Document` object.)r+   Ú	source_idr9   r6   r:   )Úpage_contentÚmetadata)r   r;   r*   r+   r6   r9   r:   )r.   r?   s     r   ÚadaptzArceeDocumentAdapter.adaptR   s`   € ô Ø'×.Ñ.×7Ñ7ð '×-Ñ-×2Ñ2Ø+×2Ñ2×5Ñ5à'×-Ñ-Ø$×'Ñ'Ø'×-Ñ-ñô
ð 	
r   N)r   r   r   r   r3   r8   r   rD   r   r   r   r>   r>   O   s%   „ Ù%àð
 =ð 
°Xò 
ó ñ
r   r>   c                   ó*  — e Zd ZdZdeeef   dededeeee	f      def
d„Z
dd
„Z	 	 	 dded   deeef   deeee	f      dee   dee   defd„Zddee   defd„Zdeeef   defd„Zdedeee	f   deee	f   fd„Zdede	defd„Zdede	dee   fd„Zy	)ÚArceeWrapperzMWrapper for Arcee API.

    For more details, see: https://www.arcee.ai/
    Úarcee_api_keyÚarcee_api_urlÚarcee_api_versionÚmodel_kwargsÚ
model_namec                 ó�  — t        |t        «      rt        |«      }n|}|| _        || _        || _        || _        	 t        j                  j                  j                  |¬«      }| j                  d|«      }|j                  d«      | _        |j                  d«      | _        y# t        $ r}	t        d|› d|	› �«      |	‚d}	~	ww xY w)a5  Initialize ArceeWrapper.

        Arguments:
            arcee_api_key: API key for Arcee API.
            arcee_api_url: URL for Arcee API.
            arcee_api_version: Version of Arcee API.
            model_kwargs: Keyword arguments for Arcee API.
            model_name: Name of an Arcee model.
        )Ú
id_or_namer-   Úmodel_idÚstatusz2Error while validating model training status for 'z': N)Ú
isinstancer0   r   rG   rJ   rH   rI   r   r   r#   ÚformatÚ_make_requestr-   rN   Ú	ExceptionÚ
ValueError)
ÚselfrG   rH   rI   rJ   rK   Úarcee_api_key_ÚrouteÚresponseÚes
             r   Ú__init__zArceeWrapper.__init__i   sÇ   € ô" �m¤SÔ)Ü& }Ó5‰Nà*ˆNØ(6ˆÔØ(ˆÔØ*ˆÔØ!2ˆÔð	Ü×4Ñ4×:Ñ:×AÑAÈZÐAÓXˆEØ×)Ñ)¨%°Ó7ˆHØ$ŸL™L¨Ó4ˆDŒMØ)1¯©°hÓ)?ˆDÕ&øÜò 	ÜØDÀZÀLÐPSÐTUÐSVÐWóàðûð	ús   ¼A(B% Â%	CÂ.C Ã Cr(   Nc                 óT   — | j                   dk7  rt        d| j                  › d�«      ‚y )NÚtraining_completezModel z4 is not ready. Please wait for training to complete.)r   rS   rN   )rU   s    r   Úvalidate_model_training_statusz+ArceeWrapper.validate_model_training_status�   s8   € Ø×%Ñ%Ð)<Ò<ÜØ˜Ÿ™˜ð (8ð 8óð ð =r   Úmethod)Úpostr-   rW   ÚbodyÚparamsÚheadersc                 óî   — | j                  |¬«      }| j                  |¬«      }t        t        |«      } |||||¬«      }|j                  dvrt        d|j                  › �«      ‚|j                  «       S )a  Make a request to the Arcee API
        Args:
            method: The HTTP method to use
            route: The route to call
            body: The body of the request
            params: The query params of the request
            headers: The headers of the request
        )rb   )rW   )Újsonra   rb   )éÈ   éÉ   z"Failed to make request. Response: )Ú_make_request_headersÚ_make_request_urlÚgetattrÚrequestsÚstatus_coderS   Útextrd   )	rU   r^   rW   r`   ra   rb   ÚurlÚreq_typerX   s	            r   rR   zArceeWrapper._make_request”   sw   € ð  ×,Ñ,°WÐ,Ó=ˆØ×$Ñ$¨5Ð$Ó1ˆäœ8 VÓ,ˆá˜C d°6À7ÔKˆØ×Ñ zÑ1ÜÐ@ÀÇÁÀÐPÓQÐQØ�}‰}‹Ðr   c                 óè   — |xs i }t        | j                  t        «      s!t        dt	        | j                  «      › �«      ‚| j                  j                  «       }|ddœ}|j                  |«       |S )Nz'arcee_api_key must be a SecretStr. Got zapplication/json)zX-TokenzContent-Type)rP   rG   r   Ú	TypeErrorÚtypeÚget_secret_valueÚupdate)rU   rb   Úapi_keyÚinternal_headerss       r   rg   z"ArceeWrapper._make_request_headers®   sv   € Ø’-˜RˆÜ˜$×,Ñ,¬iÔ8ÜØ9¼$¸t×?QÑ?QÓ:RÐ9SÐTóð ð ×$Ñ$×5Ñ5Ó7ˆàØ.ñ
Ðð 	�‰Ð'Ô(Øˆr   c                 ó>   — | j                   › d| j                  › d|› �S )NÚ/)rH   rI   )rU   rW   s     r   rh   zArceeWrapper._make_request_url¼   s'   € Ø×$Ñ$Ð% Q t×'=Ñ'=Ð&>¸aÀ¸wÐGÐGr   ÚpromptÚkwargsc                 óð   — | j                   xs i }i |¥|¥}|j                  dg «      D �cg c]  }t        di |¤Ž‘Œ }}t        | j                  ||j                  dd«      || j                  ¬«      S c c}w )z;Make the request body for generate/retrieve models endpointÚfiltersÚsizeé   )rN   Úqueryr|   r{   r6   r   )rJ   r-   r    ÚdictrN   )rU   rx   ry   Ú_model_kwargsÚ_paramsÚfr{   s          r   Ú_make_request_body_for_modelsz*ArceeWrapper._make_request_body_for_models¿   s   € ð ×)Ñ)Ò/¨RˆØ-�]Ð- fÐ-ˆà,3¯K©K¸	À2Ô,FÓGÑ,F q”:‘? “?Ð,FˆÐGÜØ—]‘]ØØ—‘˜V QÓ'ØØ�}‰}ô
ð 	
ùò Hs   «A3c           	      óˆ   — | j                  dt        j                  j                   | j                  dd|i|¤Ž¬«      }|d   S )a+  Generate text from Arcee DALM.

        Args:
            prompt: Prompt to generate text from.
            size: The max number of context results to retrieve. Defaults to 3.
              (Can be less if filters are provided).
            filters: Filters to apply to the context dataset.
        r_   rx   ©r^   rW   r`   rl   r   )rR   r   r   r#   rƒ   )rU   rx   ry   rX   s       r   r   zArceeWrapper.generateÏ   sX   € ð ×%Ñ%ØÜ×%Ñ%×+Ñ+Ø3�×3Ñ3ñ Øðàñð &ó 
ˆð ˜ÑÐr   r~   c           
      óæ   — | j                  dt        j                  j                   | j                  dd|i|¤Ž¬«      }|d   D �cg c]   }t
        j                  t        di |¤Ž«      ‘Œ" c}S c c}w )aI  Retrieve {size} contexts with your retriever for a given query

        Args:
            query: Query to submit to the model
            size: The max number of context results to retrieve. Defaults to 3.
              (Can be less if filters are provided).
            filters: Filters to apply to the context dataset.
        r_   rx   r…   Úresultsr   )rR   r   r   r#   rƒ   r>   rD   r8   )rU   r~   ry   rX   Údocs        r   r   zArceeWrapper.retrieveç   sŠ   € ð ×%Ñ%ØÜ×%Ñ%×+Ñ+Ø3�×3Ñ3ñ Øðàñð &ó 
ˆð   	Ò*ó
á*�ô !×&Ñ&¤}Ñ';°sÑ';Õ<Ø*ñ
ð 	
ùò 
s   Á%A.)r(   N)NNN)N)r   r   r   r   r
   r0   r   r	   r   r   rZ   r]   r   r   r   r   rR   rg   rh   rƒ   r   r   r   r   r   r   r   rF   rF   c   sq  „ ñð
"à˜S )˜^Ñ,ð"ð ð"ð ð	"ð
 ˜t C¨ H™~Ñ.ð"ð ó"óHð -1Ø!%Ø"&ñà˜Ñ&ðð �Z �_Ñ%ðð �w˜s C˜xÑ(Ñ)ð	ð
 ˜‘ðð ˜$‘ðð 
óñ4¨X°d©^ð Àtó ðH u¨Z¸¨_Ñ'=ð HÀ#ó Hð
Øð
Ø%,¨S°#¨XÑ%6ð
à	��c�Ñ	ó
ð  àð ð ð ð 
ó	 ð0
àð
ð ð
ð 
ˆh‰ô	
r   rF   )Úenumr   Útypingr   r   r   r   r   r	   r
   rj   Úlangchain_core.retrieversr   Úpydanticr   r   r   r0   r   r   r    r5   r8   r>   rF   r   r   r   Ú<module>r�      sv   ðõ
 ß E× EÑ Eã Ý .ß :Ñ :ô9��dô 9ô$�S˜$ô $ô�ô ôD˜)ô ô �Iô  ÷
ñ 
÷(]
ò ]
r   