Ë
    µŒjË  ã                  óv   — d dl mZ d dlZd dl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  G d„ de«      Zy)	é    )ÚannotationsN)ÚAnyÚDictÚListÚLiteralÚOptionalÚSequenceÚUnion)ÚCallbackManagerForRetrieverRun)ÚDocument)ÚBaseRetrieverc                  ó¸   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 dd
„Z	 	 	 	 	 	 dd„Zddœ	 	 	 	 	 dd„Zeddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z	y)ÚVespaRetrieverz`Vespa` retriever.r   Úappr   ÚbodyÚstrÚcontent_fieldzSequence[str]Úmetadata_fieldsc                ól  — | j                   j                  |«      }t        |j                  «      j	                  d«      s$t        dj                  |j                  «      «      ‚|j                  d   }d|v r!t        t        j                  |d   «      «      ‚g }|j                  D ]†  }|d   j                  | j                  d«      }| j                  dk(  r|d   }n,| j                  D �ci c]  }||d   j                  |«      “Œ }}|d   |d<   |j                  t        ||¬	«      «       Œˆ |S c c}w )
NÚ2z2Could not retrieve data from Vespa. Error code: {}ÚrootÚerrorsÚfieldsÚ Ú*Úid)Úpage_contentÚmetadata)r   Úqueryr   Ústatus_codeÚ
startswithÚRuntimeErrorÚformatÚjsonÚdumpsÚhitsÚpopr   r   ÚgetÚappendr   )	Úselfr   Úresponser   ÚdocsÚchildr   r   Úmfs	            úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/retrievers/vespa_retriever.pyÚ_queryzVespaRetriever._query   s$  € Ø—8‘8—>‘> $Ó'ˆä�8×'Ñ'Ó(×3Ñ3°CÔ8ÜØD×KÑKØ×(Ñ(óóð ð �}‰}˜VÑ$ˆØ�tÑÜœtŸz™z¨$¨x©.Ó9Ó:Ð:àˆØ—]”]ˆEØ  ™?×.Ñ.¨t×/AÑ/AÀ2ÓFˆLØ×#Ñ# sÒ*Ø  ™?‘àBF×BVÒBVÓWÑBV¸B˜B  h¡× 3Ñ 3°BÓ 7Ñ7ÐBV�ÐWØ" 4™[ˆH�T‰NØ�K‰Kœ¨lÀXÔNÕOð #ð ˆùò Xs   Ã+D1c               ób   — | j                   j                  «       }||d<   | j                  |«      S )Nr   ©r   Úcopyr0   )r*   r   Úrun_managerr   s       r/   Ú_get_relevant_documentsz&VespaRetriever._get_relevant_documents0   s,   € ð �y‰y�~‰~ÓˆØˆˆW‰Ø�{‰{˜4Ó Ð ó    N)Ú_filterc               óŠ   — | j                   j                  «       }|rd|› �nd}|d   |z   |d<   ||d<   | j                  |«      S )Nú and r   Úyqlr   r2   )r*   r   r7   r   s       r/   Ú"get_relevant_documents_with_filterz1VespaRetriever.get_relevant_documents_with_filter7   sN   € ð �y‰y�~‰~ÓˆÙ'.�E˜'˜Ñ#°BˆØ˜5‘k GÑ+ˆˆU‰ØˆˆW‰Ø�{‰{˜4Ó Ð r6   © )Úkr   Úsourcesr7   r:   c               óŽ  — 	 ddl m}	  |	|«      }
|j                  «       }|r|s|rt	        d«      ‚|dk(  rd}d|d<   n"dj                  |gt        |xs g «      z   «      }t        |t        «      rdj                  |«      nd}|rd	|› �nd
}d|› d|› d|› �}||d<   |r||d<    | |
|||¬«      S # t        $ r t        d«      ‚w xY w)a¢  Instantiate retriever from params.

        Args:
            url (str): Vespa app URL.
            content_field (str): Field in results to return as Document page_content.
            k (Optional[int]): Number of Documents to return. Defaults to None.
            metadata_fields(Sequence[str] or "*"): Fields in results to include in
                document metadata. Defaults to empty tuple ().
            sources (Sequence[str] or "*" or None): Sources to retrieve
                from. Defaults to None.
            _filter (Optional[str]): Document filter condition expressed in YQL.
                Defaults to None.
            yql (Optional[str]): Full YQL query to be used. Should not be specified
                if _filter or sources are specified. Defaults to None.
            kwargs (Any): Keyword arguments added to query body.

        Returns:
            VespaRetriever: Instantiated VespaRetriever.
        r   )ÚVespazCpyvespa is not installed, please install with `pip install pyvespa`zKyql should only be specified if both sources and _filter are not specified.r   ÚshortÚsummaryz, r9   r   zselect z from sources z where userQuery()r:   r&   )r   r   r   r   )	Úvespa.applicationr@   ÚImportErrorr3   Ú
ValueErrorÚjoinÚlistÚ
isinstancer	   )ÚclsÚurlr   r=   r   r>   r7   r:   Úkwargsr@   r   r   Ú_fieldsÚ_sourcess                 r/   Úfrom_paramszVespaRetriever.from_params@   s  € ð@	Ý/ñ
 �C‹jˆØ�{‰{‹}ˆÙ‘G™wÜðóð ð
  #Ò%Ø�Ø")��Y’àŸ)™) ] O´d¸?Ò;PÈbÓ6QÑ$QÓR�Ü-7¸ÄÔ-J�t—y‘y Ô)ÐPSˆHÙ+2˜˜g˜YÑ'¸ˆGØ˜G˜9 N°8°*Ð<NÈwÈiÐXˆCØˆˆU‰ÙØˆD�‰LÙØØØ'Ø+ô	
ð 	
øô/ ò 	ÜØUóð ð	ús   ‚B/ Â/C)r   r   ÚreturnúList[Document])r   r   r4   r   rO   rP   )r   r   r7   úOptional[str]rO   rP   )rJ   r   r   r   r=   zOptional[int]r   z"Union[Sequence[str], Literal['*']]r>   z(Union[Sequence[str], Literal['*'], None]r7   rQ   r:   rQ   rK   r   rO   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r0   r5   r;   ÚclassmethodrN   r<   r6   r/   r   r      sè   … Ùà	ƒHØ%Ø
ƒJØØÓØ$Ø"Ó"Ø'óð2!Øð!Ø*Hð!à	ó!ð 7;ñ!Øð!Ø&3ð!à	ó!ð ð  Ø>@Ø<@Ø!%Ø!ñ=
àð=
ð ð=
ð
 ð=
ð <ð=
ð :ð=
ð ð=
ð ð=
ð ð=
ð 
ò=
ó ñ=
r6   r   )Ú
__future__r   r$   Útypingr   r   r   r   r   r	   r
   Úlangchain_core.callbacksr   Úlangchain_core.documentsr   Úlangchain_core.retrieversr   r   r<   r6   r/   Ú<module>r]      s+   ðÝ "ã ß F× FÑ Få CÝ -Ý 3ôs
�]õ s
r6   