Ë
    µŒj€=  ã                   ó,  — d dl Z d dlmZmZ d dlmZmZ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 d dlmZ d dlmZmZmZmZ d d	lmZ d
edefd„Zdddefd„Zeeeee   df   Z 	  G d„ ded¬«      Z! G d„ ded¬«      Z" G d„ ded¬«      Z# G d„ ded¬«      Z$ G d„ ded¬«      Z% G d„ ded¬«      Z& G d„ deed¬«      Z' G d„ d e'«      Z( G d!„ d"e'«      Z) G d#„ d$ed¬«      Z* G d%„ d&ed¬«      Z+d'd(d)d*d+d,œZ, ed-d.d/¬0«       G d1„ d2e«      «       Z-y)3é    N)ÚABCÚabstractmethod)ÚAnyÚCallableÚDictÚListÚLiteralÚOptionalÚSequenceÚUnion)Ú
deprecated)ÚCallbackManagerForRetrieverRun)ÚDocument)ÚBaseRetriever)Ú	BaseModelÚFieldÚmodel_validatorÚ	validator)Ú	AnnotatedÚexcerptÚreturnc                 ó\   — | s| S t        j                  dd| «      j                  dd«      }|S )z€Clean an excerpt from Kendra.

    Args:
        excerpt: The excerpt to clean.

    Returns:
        The cleaned excerpt.

    z\s+Ú z...Ú )ÚreÚsubÚreplace)r   Úress     úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/retrievers/kendra.pyÚclean_excerptr       s0   € ñ ØˆÜ
�&‰&�˜˜gÓ
&×
.Ñ
.¨u°bÓ
9€CØ€Jó    ÚitemÚ
ResultItemc                 óˆ   — d}| j                  «       }|r	|d|› d�z  }t        | j                  «       «      }|r	|d|› d�z  }|S )zÐCombine a ResultItem title and excerpt into a single string.

    Args:
        item: the ResultItem of a Kendra search.

    Returns:
        A combined text of the title and excerpt of the given item.

    r   zDocument Title: Ú
zDocument Excerpt: 
)Ú	get_titler    Úget_excerpt)r"   ÚtextÚtitler   s       r   Úcombined_textr*   +   s[   € ð €DØ�N‰NÓ€EÙØÐ" 5 '¨Ð,Ñ,ˆÜ˜D×,Ñ,Ó.Ó/€GÙØÐ& w i¨rÐ2Ñ2ˆØ€Kr!   c                   óL   — e Zd ZU dZeed<   	 eed<   	 ee   ed<   	 ee   ed<   y)Ú	Highlightz8Information that highlights the keywords in the excerpt.ÚBeginOffsetÚ	EndOffsetÚ	TopAnswerÚTypeN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__r
   ÚboolÚstr© r!   r   r,   r,   G   s0   … ÙBàÓØLØƒNØJØ˜‰~ÓØ7Ø
�3‰-ÓØ<r!   r,   Úallow)Úextrac                   ó.   — e Zd ZU dZeed<   	 ee   ed<   y)ÚTextWithHighLightszText with highlights.ÚTextÚ
HighlightsN)r1   r2   r3   r4   r8   r6   r
   r   r9   r!   r   r=   r=   U   s   … Ùà
ƒIØØ˜‘ÓØr!   r=   c                   ó   — e Zd ZU dZeed<   y)ÚAdditionalResultAttributeValuez(Value of an additional result attribute.ÚTextWithHighlightsValueN)r1   r2   r3   r4   r=   r6   r9   r!   r   rA   rA   _   s   … Ù2à/Ó/Ø)r!   rA   c                   óH   — e Zd ZU dZeed<   	 ed   ed<   	 eed<   	 defd„Zy)	ÚAdditionalResultAttributezAdditional result attribute.ÚKeyÚTEXT_WITH_HIGHLIGHTS_VALUEÚ	ValueTypeÚValuer   c                 óB   — | j                   j                  j                  S ©N)rH   rB   r>   ©Úselfs    r   Úget_value_textz(AdditionalResultAttribute.get_value_textq   s   € Ø�z‰z×1Ñ1×6Ñ6Ð6r!   N)	r1   r2   r3   r4   r8   r6   r	   rA   rM   r9   r!   r   rD   rD   g   s1   … Ù&à	ƒHØ#ØÐ3Ñ4Ó4Ø Ø)Ó)Ø%ð7 ô 7r!   rD   c                   ó†   — e Zd ZU dZdZee   ed<   	 dZee	   ed<   	 dZ
eee      ed<   	 dZee   ed<   	 edefd„«       Zy)	ÚDocumentAttributeValuezValue of a document attribute.NÚ	DateValueÚ	LongValueÚStringListValueÚStringValuer   c                 óÄ   — | j                   r| j                   S | j                  r| j                  S | j                  r| j                  S | j                  r| j                  S y)z The only defined document attribute value or None.
        According to Amazon Kendra, you can only provide one
        value for a document attribute.
        N)rP   rQ   rR   rS   rK   s    r   ÚvaluezDocumentAttributeValue.value‚   sS   € ð �>Š>Ø—>‘>Ð!Ø�>Š>Ø—>‘>Ð!Ø×ÒØ×'Ñ'Ð'Ø×ÒØ×#Ñ#Ð#àr!   )r1   r2   r3   r4   rP   r
   r8   r6   rQ   r5   rR   r   rS   ÚpropertyÚDocumentAttributeValueTyperU   r9   r!   r   rO   rO   v   sh   … Ù(à#€Iˆx˜‰}Ó#Ø3Ø#€Iˆx˜‰}Ó#ØØ+/€O�X˜d 3™iÑ(Ó/Ø Ø!%€K�˜#‘Ó%ØàðÐ1ò ó ñr!   rO   c                   ó(   — e Zd ZU dZeed<   	 eed<   y)ÚDocumentAttributezDocument attribute.rE   rH   N)r1   r2   r3   r4   r8   r6   rO   r9   r!   r   rY   rY   •   s   … Ùà	ƒHØ#Ø!Ó!Ø%r!   rY   c                   óð   — e Zd ZU dZee   ed<   	 ee   ed<   	 ee   ed<   	 g Zeee	      ed<   	 ee
   ed<   	 edefd„«       Zedefd	„«       Zde
fd
„Zdeeef   fd„Zdefd„Zefded gef   defd„Zy)r#   zBase class of a result item.ÚIdÚ
DocumentIdÚDocumentURIÚDocumentAttributesÚScoreAttributesr   c                  ó   — y)zDocument title.Nr9   rK   s    r   r&   zResultItem.get_title­   ó   � r!   c                  ó   — y)zDDocument excerpt or passage original content as retrieved by Kendra.Nr9   rK   s    r   r'   zResultItem.get_excerpt±   ra   r!   c                 ó   — i S )zôDocument additional metadata dict.
        This returns any extra metadata except these:
            * result_id
            * document_id
            * source
            * title
            * excerpt
            * document_attributes
        r9   rK   s    r   Úget_additional_metadataz"ResultItem.get_additional_metadataµ   s	   € ð ˆ	r!   c                 ó†   — | j                   xs g D �ci c]#  }|j                  |j                  j                  “Œ% c}S c c}w )zDocument attributes dict.)r^   rE   rH   rU   )rL   Úattrs     r   Úget_document_attributes_dictz'ResultItem.get_document_attributes_dictÁ   s>   € à8<×8OÑ8OÒ8UÐSUÐ8UÓWÑ8U¨t�—‘˜$Ÿ*™*×*Ñ*Ñ*Ð8UÑWÐWùÒWs   “(>c                 ó:   — | j                   �| j                   d   S y)zDocument Score ConfidenceÚScoreConfidenceÚNOT_AVAILABLE)r_   rK   s    r   Úget_score_attributezResultItem.get_score_attributeÅ   s#   € à×ÑÐ+Ø×'Ñ'Ð(9Ñ:Ð:à"r!   Úpage_content_formatterc           
      ó*  —  || «      }| j                  «       }|j                  | j                  | j                  | j                  | j                  «       | j                  «       | j                  «       | j                  «       dœ«       t        ||¬«      S )z!Converts this item to a Document.)Ú	result_idÚdocument_idÚsourcer)   r   Údocument_attributesÚscore)Úpage_contentÚmetadata)
rd   Úupdater[   r\   r]   r&   r'   rg   rk   r   )rL   rl   rs   rt   s       r   Úto_doczResultItem.to_docÌ   s�   € ñ .¨dÓ3ˆØ×/Ñ/Ó1ˆØ�‰à!ŸW™WØ#Ÿ™Ø×*Ñ*ØŸ™Ó)Ø×+Ñ+Ó-Ø'+×'HÑ'HÓ'JØ×1Ñ1Ó3ñô
	
ô  \¸HÔEÐEr!   N)r1   r2   r3   r4   r
   r8   r6   r^   r   rY   Údictr   r&   r'   rd   r   rW   rg   rk   r*   r   r   rv   r9   r!   r   r#   r#   Ÿ   så   … Ù&à�‰ÓØ-Ø˜‘ÓØØ˜#‘ÓØØ<>Ð˜ Ð&7Ñ!8Ñ9Ó>Ø"Ø˜d‘^Ó#Ø%àð˜3ò ó ðð ðS˜Sò Só ðSð
¨ó 
ðX¨d°3Ð8RÐ3RÑ.Só Xð# Só #ð GTñFØ&.°¨~¸sÐ/BÑ&CðFà	ôFr!   c                   ó²   — e Zd ZU dZeed<   	 ee   ed<   	 ee   ed<   	 ee   ed<   	 g Zee	e
      ed<   	 ee   ed<   	 defd	„Zdefd
„Zdefd„Zdefd„Zy)ÚQueryResultItemzQuery API result item.ÚDocumentTitleÚFeedbackTokenÚFormatr0   ÚAdditionalAttributesÚDocumentExcerptr   c                 ó.   — | j                   j                  S rJ   )rz   r>   rK   s    r   r&   zQueryResultItem.get_titleô   s   € Ø×!Ñ!×&Ñ&Ð&r!   c                 óv   — | j                   sy| j                   d   sy| j                   d   j                  «       S )Nr   r   )r}   rM   rK   s    r   Úget_attribute_valuez#QueryResultItem.get_attribute_value÷   s9   € Ø×(Ò(ØØ×(Ñ(¨Ò+Øà×,Ñ,¨QÑ/×>Ñ>Ó@Ð@r!   c                 óÆ   — | j                   r.| j                   d   j                  dk(  r| j                  «       }|S | j                  r| j                  j                  }|S d}|S )Nr   Ú
AnswerTextr   )r}   rE   r�   r~   r>   )rL   r   s     r   r'   zQueryResultItem.get_excerptÿ   sh   € à×%Ò%Ø×)Ñ)¨!Ñ,×0Ñ0°LÒ@à×.Ñ.Ó0ˆGð ˆð ×!Ò!Ø×*Ñ*×/Ñ/ˆGð ˆð ˆGàˆr!   c                 ó"   — d| j                   i}|S )NÚtype)r0   )rL   Úadditional_metadatas     r   rd   z'QueryResultItem.get_additional_metadata  s   € Ø% t§y¡yÐ1ÐØ"Ð"r!   N)r1   r2   r3   r4   r=   r6   r
   r8   r}   r   rD   r&   r�   r'   rw   rd   r9   r!   r   ry   ry   à   s“   … Ù à%Ó%ØØ˜C‘=Ó ØAØ�S‰MÓðð
 �3‰-ÓØ?ØFHÐ˜( 4Ð(AÑ#BÑCÓHØGØÐ0Ñ1Ó1Ø'ð'˜3ó 'ðA Só Að˜Só ð#¨ô #r!   ry   c                   óN   — e Zd ZU dZee   ed<   	 ee   ed<   	 defd„Zdefd„Zy)ÚRetrieveResultItemzRetrieve API result item.rz   ÚContentr   c                 ó"   — | j                   xs dS ©Nr   )rz   rK   s    r   r&   zRetrieveResultItem.get_title  s   € Ø×!Ñ!Ò' RÐ'r!   c                 ó"   — | j                   xs dS r‹   )r‰   rK   s    r   r'   zRetrieveResultItem.get_excerpt  s   € Ø�|‰|Ò!˜rÐ!r!   N)	r1   r2   r3   r4   r
   r8   r6   r&   r'   r9   r!   r   rˆ   rˆ     s7   … Ù#à˜C‘=Ó ØØ�c‰]ÓØ"ð(˜3ó (ð"˜Sô "r!   rˆ   c                   ó"   — e Zd ZU dZee   ed<   y)ÚQueryResulta  `Amazon Kendra Query API` search result.

    It is composed of:
        * Relevant suggested answers: either a text excerpt or table excerpt.
        * Matching FAQs or questions-answer from your FAQ file.
        * Documents including an excerpt of each document with its title.
    ÚResultItemsN)r1   r2   r3   r4   r   ry   r6   r9   r!   r   rŽ   rŽ   !  s   … ñð �oÑ&Ó&Ør!   rŽ   c                   ó.   — e Zd ZU dZeed<   	 ee   ed<   y)ÚRetrieveResultz‹`Amazon Kendra Retrieve API` search result.

    It is composed of:
        * relevant passages or text excerpts given an input query.
    ÚQueryIdr�   N)r1   r2   r3   r4   r8   r6   r   rˆ   r9   r!   r   r‘   r‘   /  s    … ñð ƒLØØÐ(Ñ)Ó)Ør!   r‘   ç        g      Ð?g      à?g      è?ç      ð?)rj   ÚLOWÚMEDIUMÚHIGHÚ	VERY_HIGHz0.3.16z1.0z#langchain_aws.AmazonKendraRetriever)ÚsinceÚremovalÚalternative_importc                   ó¬  — e Zd ZU dZeed<   dZee   ed<   dZee   ed<   dZ	e
ed<   dZee   ed<   dZeee      ed	<   eZeegef   ed
<   eed<   dZee   ed<   eee    edd¬«      f   ed<    ed«      de
de
fd„«       Z ed¬«      edeeef   defd„«       «       Zdedee   fd„Zdee   dee   fd„Z dee   dee   fd„Z!dede"dee   fd„Z#y) ÚAmazonKendraRetrieveraì  `Amazon Kendra Index` retriever.

    Args:
        index_id: Kendra index id

        region_name: The aws region e.g., `us-west-2`.
            Fallsback to AWS_DEFAULT_REGION env variable
            or region specified in ~/.aws/config.

        credentials_profile_name: The name of the profile in the ~/.aws/credentials
            or ~/.aws/config files, which has either access keys or role information
            specified. If not specified, the default credential profile or, if on an
            EC2 instance, credentials from IMDS will be used.

        top_k: No of results to return

        attribute_filter: Additional filtering of results based on metadata
            See: https://docs.aws.amazon.com/kendra/latest/APIReference

        document_relevance_override_configurations: Overrides relevance tuning
            configurations of fields/attributes set at the index level
            See: https://docs.aws.amazon.com/kendra/latest/APIReference

        page_content_formatter: generates the Document page_content
            allowing access to all result item attributes. By default, it uses
            the item's title and excerpt.

        client: boto3 client for Kendra

        user_context: Provides information about the user context
            See: https://docs.aws.amazon.com/kendra/latest/APIReference

    Example:
        .. code-block:: python

            retriever = AmazonKendraRetriever(
                index_id="c0806df7-e76b-4bce-9b5c-d5582f6b1a03"
            )

    Úindex_idNÚregion_nameÚcredentials_profile_nameé   Útop_kÚattribute_filterÚ*document_relevance_override_configurationsrl   ÚclientÚuser_contextr“   r”   )ÚgeÚleÚmin_score_confidencerU   r   c                 ó.   — |dk  rt        d|› d�«      ‚|S )Nr   útop_k (ú) cannot be negative.)Ú
ValueError)ÚclsrU   s     r   Úvalidate_top_kz$AmazonKendraRetriever.validate_top_k  s#   € à�1Š9Ü˜w u gÐ-BÐCÓDÐDØˆr!   Úbefore)ÚmodeÚvaluesc                 ó²  — |j                  d«      }|�|dk  rt        d|› d�«      ‚|j                  d«      �|S 	 dd l}|j                  d«      r|j                  |d   ¬«      }n|j                  «       }i }|j                  d«      r|d   |d<    |j                  di |¤Ž|d<   |S # t
        $ r t        d	«      ‚t        $ r}t        d
«      |‚d }~ww xY w)Nr¢   r   r«   r¬   r¥   r    )Úprofile_namerŸ   zRCould not import boto3 python package. Please install it with `pip install boto3`.z‚Could not load credentials to authenticate with AWS client. Please check that credentials in the specified profile name are valid.)Úkendra)Úgetr­   Úboto3ÚSessionr¥   ÚImportErrorÚ	Exception)r®   r²   r¢   r·   ÚsessionÚclient_paramsÚes          r   Úcreate_clientz#AmazonKendraRetriever.create_client…  sÿ   € ð —
‘
˜7Ó#ˆØÐ ¨¢Ü˜w u gÐ-BÐCÓDÐDà�:‰:�hÓÐ+ØˆMð	Ûà�z‰zÐ4Ô5ØŸ-™-°VÐ<VÑ5W˜-ÓX‘ð  Ÿ-™-›/�àˆMØ�z‰z˜-Ô(Ø/5°mÑ/D�˜mÑ,à-˜wŸ~™~ÑH¸-ÑHˆF�8ÑàˆMøÜò 	Üð>óð ô ò 	Üð*óð ð	ûð	ús   ¼A,B) Â)CÃCÃCÚqueryc                 ó  — | j                   |j                  «       dd | j                  dœ}| j                  �| j                  |d<   | j                  �| j                  |d<   | j
                  �| j
                  |d<    | j                  j                  di |¤Ž}t        j                  |«      }|j                  r|j                  S  | j                  j                  di |¤Ž}t        j                  |«      }|j                  S )Nr   iç  )ÚIndexIdÚ	QueryTextÚPageSizeÚAttributeFilterÚ'DocumentRelevanceOverrideConfigurationsÚUserContextr9   )rž   Ústripr¢   r£   r¤   r¦   r¥   Úretriever‘   Ú	parse_objr�   r¿   rŽ   )rL   r¿   Úkendra_kwargsÚresponseÚr_resultÚq_results         r   Ú_kendra_queryz#AmazonKendraRetriever._kendra_query«  sû   € à—}‘}ð Ÿ™› q¨Ð-ØŸ
™
ñ
ˆð × Ñ Ð,Ø/3×/DÑ/DˆMÐ+Ñ,Ø×:Ñ:ÐFà×?Ñ?ð ÐCÑDð ×ÑÐ(Ø+/×+<Ñ+<ˆM˜-Ñ(à'�4—;‘;×'Ñ'Ñ8¨-Ñ8ˆÜ!×+Ñ+¨HÓ5ˆØ×ÒØ×'Ñ'Ð'ð %�4—;‘;×$Ñ$Ñ5 }Ñ5ˆÜ×(Ñ(¨Ó2ˆØ×#Ñ#Ð#r!   Úresult_itemsc                 óz   — |d | j                    D �cg c]  }|j                  | j                  «      ‘Œ }}|S c c}w rJ   )r¢   rv   rl   )rL   rÏ   r"   Útop_docss       r   Ú_get_top_k_docsz%AmazonKendraRetriever._get_top_k_docsÆ  sJ   € ð % \ t§z¡zÑ2ó
á2�ð �K‰K˜×3Ñ3Õ4Ø2ð 	ð 
ð ˆùò	
s   ’"8Údocsc                 ó  — | j                   s|S |D �cg c]l  }|j                  j                  d«      �Ot        |j                  d   t        «      r2t
        j                  |j                  d   d«      | j                   k\  r|‘Œn }}|S c c}w )zr
        Filter out the records that have a score confidence
        greater than the required threshold.
        rr   r“   )r©   rt   r¶   Ú
isinstancer8   ÚKENDRA_CONFIDENCE_MAPPING)rL   rÓ   r"   Úfiltered_docss       r   Ú_filter_by_score_confidencez1AmazonKendraRetriever._filter_by_score_confidenceÍ  s�   € ð
 ×(Ò(ØˆKñ ó	
á�à—‘×!Ñ! 'Ó*Ð6Ü˜tŸ}™}¨WÑ5´sÔ;Ü-×1Ñ1°$·-±-ÀÑ2HÈ#ÓNØ×,Ñ,ò-ò Øð 	ð 	
ð Ðùò	
s   “A1BÚrun_managerc                óh   — | j                  |«      }| j                  |«      }| j                  |«      S )z¦Run search on Kendra index and get top k documents

        Example:
        .. code-block:: python

            docs = retriever.invoke('This is my query')

        )rÎ   rÒ   rØ   )rL   r¿   rÙ   rÏ   Ú
top_k_docss        r   Ú_get_relevant_documentsz-AmazonKendraRetriever._get_relevant_documentsà  s5   € ð ×)Ñ)¨%Ó0ˆØ×)Ñ)¨,Ó7ˆ
Ø×/Ñ/°
Ó;Ð;r!   )$r1   r2   r3   r4   r8   r6   rŸ   r
   r    r¢   r5   r£   r   r¤   r   r*   rl   r   r#   r   r¦   r   Úfloatr   r   r¯   r   Úclassmethodr¾   r   rÎ   r   rÒ   rØ   r   rÜ   r9   r!   r   r�   r�   E  sn  … ñ'ðR ƒMØ!%€K�˜#‘Ó%Ø.2Ð˜h s™mÓ2Ø€Eˆ3ƒNØ'+Ð�h˜t‘nÓ+ØGKÐ.°¸¸d¹Ñ0DÓKØ:GÐ˜H j \°3Ð%6Ñ7ÓGØƒKØ#'€L�(˜4‘.Ó'Ø# H¨U¡O±U¸cÀcÔ5JÐ$JÑKÓKáˆwÓð 3ð ¨3ò ó ðñ
 ˜(Ô#Øð" 4¨¨S¨¡>ð "°cò "ó ó $ð"ðH$ 3ð $¨8°JÑ+?ó $ð6¨H°ZÑ,@ð ÀTÈ(Á^ó ð°°X±ð À4ÈÁ>ó ð&<àð<ð 4ð	<ð
 
ˆh‰ô<r!   r�   ).r   Úabcr   r   Útypingr   r   r   r   r	   r
   r   r   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   Úlangchain_core.documentsr   Úlangchain_core.retrieversr   Úpydanticr   r   r   r   Útyping_extensionsr   r8   r    r*   r5   rW   r,   r=   rA   rD   rO   rY   r#   ry   rˆ   rŽ   r‘   rÖ   r�   r9   r!   r   Ú<module>rç      s]  ðÛ 	ß #÷	÷ 	ó 	õ 7Ý CÝ -Ý 3÷ó õ (ð˜3ð  3ó ð ˜ð ¨ó ð( # 3¨¨T°#©Y¸Ð#<Ñ=Ð ðô
=�	 õ 
=ô˜¨'õ ô* Y°gõ *ô7 	°õ 7ô˜Y¨gõ ô>&˜	¨õ &ô>F�˜C wõ >FôB.#�jô .#ôb"˜ô "ô 
�) 7õ 
ô
�Y gõ 
ð ØØØØñÐ ñ Ø
ØØ<ôô
f<˜Mó f<óñ
f<r!   