§
    è˜ºhe
  ã                   óÆ   — d dl 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
 d dlmZmZ d dlmZ  e j        e¦  «        Zd	Z ej        e¦  «        Z G d
„ de
¦  «        ZdS )é    N)ÚList)ÚDocument)ÚBaseLLM)ÚPromptTemplate)ÚBaseRetriever)Ú#AsyncCallbackManagerForRetrieverRunÚCallbackManagerForRetrieverRun©ÚLLMChainzùYou are an assistant tasked with taking a natural language query from a user and converting it into a query for a vectorstore. In this process, you strip out information that is not relevant for the retrieval task. Here is the user query: {question}c            
       ó”   — e Zd ZU dZeed<   eed<   eefdede	de
dd fd„¦   «         Zded	edee         fd
„Zded	edee         fd„ZdS )ÚRePhraseQueryRetrieverz\Given a query, use an LLM to re-phrase it.
    Then, retrieve docs for the re-phrased query.Ú	retrieverÚ	llm_chainÚllmÚpromptÚreturnc                 ó>   — t          ||¬¦  «        } | ||¬¦  «        S )ap  Initialize from llm using default template.

        The prompt used here expects a single input: `question`

        Args:
            retriever: retriever to query documents from
            llm: llm for query generation using DEFAULT_QUERY_PROMPT
            prompt: prompt template for query generation

        Returns:
            RePhraseQueryRetriever
        )r   r   )r   r   r
   )Úclsr   r   r   r   s        úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/retrievers/re_phraser.pyÚfrom_llmzRePhraseQueryRetriever.from_llm"   s5   € õ(  ¨VÐ4Ñ4Ô4ˆ	ØˆsØØð
ñ 
ô 
ð 	
ó    ÚqueryÚrun_managerc                óþ   — |                       ||                     ¦   «         ¬¦  «        }|d         }t                               d|› �¦  «         | j                             ||                     ¦   «         ¬¦  «        }|S )z°Get relevated documents given a user question.

        Args:
            query: user question

        Returns:
            Relevant documents for re-phrased question
        )Ú	callbacksÚtextzRe-phrased question: )r   Ú	get_childÚloggerÚinfor   Úget_relevant_documents)Úselfr   r   ÚresponseÚre_phrased_questionÚdocss         r   Ú_get_relevant_documentsz.RePhraseQueryRetriever._get_relevant_documents<   s€   € ð —>’> %°;×3HÒ3HÑ3JÔ3J�>ÑKÔKˆØ& vÔ.ÐÝ�ŠÐAÐ,?ÐAÐAÑBÔBÐBØŒ~×4Ò4Ø¨;×+@Ò+@Ñ+BÔ+Bð 5ñ 
ô 
ˆð ˆr   c             ƒ   ó   K  — t           ‚)N)ÚNotImplementedError)r!   r   r   s      r   Ú_aget_relevant_documentsz/RePhraseQueryRetriever._aget_relevant_documentsR   s   è è € õ "Ð!r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   ÚclassmethodÚDEFAULT_QUERY_PROMPTr   r   r   Ústrr	   r   r   r%   r   r(   © r   r   r   r      sð   € € € € € € ð5ð 5ð ÐÐÑØÐÐÑàð
 "6ð	
ð 
à ð
ð ð
ð ð	
ð
 
"ð
ð 
ð 
ñ „[ð
ð2àðð 4ð	ð
 
ˆhŒðð ð ð ð,"àð"ð 9ð	"ð
 
ˆhŒð"ð "ð "ð "ð "ð "r   r   )ÚloggingÚtypingr   Úlangchain_core.documentsr   Úlangchain_core.language_modelsr   Úlangchain_core.prompts.promptr   Úlangchain_core.retrieversr   Úlangchain.callbacks.managerr   r	   Úlangchain.chains.llmr   Ú	getLoggerr)   r   ÚDEFAULT_TEMPLATEÚfrom_templater/   r   r1   r   r   ú<module>r=      s  ðØ €€€Ø Ð Ð Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )à	ˆÔ	˜8Ñ	$Ô	$€ð:Ð ð 4�~Ô3Ð4DÑEÔEÐ ð="ð ="ð ="ð ="ð ="˜]ñ ="ô ="ð ="ð ="ð ="r   