Ë
    ´ŒjO  ã                  ó²  — d Z ddlmZ ddlmZ ddl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 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m Z  ddl!m"Z#  G d„ de«      Z$e#dddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)d„Z%e jD                  e jL                  dddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„Z'ejP                  ejR                  ejL                  ddddddddœ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+d„Z*ejV                  ejX                  ejL                  d d!ddd"œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d,d#„Z- e
d$d%d&¬'«      	 	 d-	 	 	 	 	 	 	 	 	 d.d(„«       Z.y)/z,Load question answering with sources chains.é    )Úannotations)ÚMapping)ÚAnyÚOptionalÚProtocol)Ú
deprecated)ÚBaseLanguageModel)ÚBasePromptTemplate)ÚBaseCombineDocumentsChain)ÚMapReduceDocumentsChain)ÚMapRerankDocumentsChain)ÚReduceDocumentsChain)ÚRefineDocumentsChain)ÚStuffDocumentsChain)ÚLLMChain)Úmap_reduce_promptÚrefine_promptsÚstuff_prompt)ÚPROMPTc                  ó$   — e Zd ZdZ	 	 	 	 	 	 dd„Zy)ÚLoadingCallablez2Interface for loading the combine documents chain.c                 ó   — y)z-Callable to load the combine documents chain.N© )ÚselfÚllmÚkwargss      úr/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/qa_with_sources/loading.pyÚ__call__zLoadingCallable.__call__    s   � ó    N)r   r	   r   r   Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s&   „ Ù<ð<àð<ð ð<ð 
#ô	<r   r   FÚcontextÚscoreÚanswer)ÚpromptÚverboseÚdocument_variable_nameÚrank_keyÚ
answer_keyc               ó>   — t        | ||¬«      }t        d||||dœ|¤ŽS )N©r   r(   r)   )Ú	llm_chainr+   r,   r*   r   )r   r   )r   r(   r)   r*   r+   r,   r   r/   s           r   Ú_load_map_rerank_chainr0   (   s:   € ô ˜S¨¸ÔA€IÜ"ð ØØØØ5ñ	ð
 ñð r   Ú	summariesN)r(   Údocument_promptr*   r)   c               ó>   — t        | ||¬«      }t        d||||dœ|¤ŽS )Nr.   ©r/   r*   r2   r)   r   )r   r   )r   r(   r2   r*   r)   r   r/   s          r   Ú_load_stuff_chainr5   <   s:   € ô ˜S¨¸ÔA€IÜð ØØ5Ø'Øñ	ð
 ñð r   i¸  )
Úquestion_promptÚcombine_promptr2   Úcombine_document_variable_nameÚ!map_reduce_document_variable_nameÚcollapse_promptÚ
reduce_llmÚcollapse_llmr)   Ú	token_maxc       
        ó  — t        | ||	¬«      }|xs | }t        |||	¬«      }t        ||||	¬«      }|€d }|�-d}t        |«      ‚|xs | }t        t        |||	¬«      ||¬«      }t        |||
|	¬«      }t	        d||||	dœ|¤ŽS )Nr.   r4   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r/   r*   r2   )Úcombine_documents_chainÚcollapse_documents_chainr=   r)   )r/   Úreduce_documents_chainr*   r)   r   )r   r   Ú
ValueErrorr   r   )r   r6   r7   r2   r8   r9   r:   r;   r<   r)   r=   r   Ú	map_chainÚ_reduce_llmÚreduce_chainr?   Úcollapse_chainÚmsgÚ_collapse_llmrA   s                       r   Ú_load_map_reduce_chainrI   O   sÛ   € ô ˜S¨À'ÔJ€IØÒ# €KÜ °NÈGÔT€LÜ1ØØ=Ø'Øô	Ðð ÐØˆØÐ#ð>ð ô ˜S“/Ð!à$Ò+¨ˆÜ,ÜØ!Ø&Øôð
 $BØ+ô
ˆô 2Ø 7Ø!/ØØô	Ðô #ð ØØ5Ø@Øñ	ð
 ñð r   Úcontext_strÚexisting_answer)r6   Úrefine_promptr2   r*   Úinitial_response_nameÚ
refine_llmr)   c          
     ój   — t        | ||¬«      }	|xs | }
t        |
||¬«      }t        d|	|||||dœ|¤ŽS )Nr.   )Úinitial_llm_chainÚrefine_llm_chainr*   rM   r2   r)   r   )r   r   )r   r6   rL   r2   r*   rM   rN   r)   r   Úinitial_chainÚ_refine_llmÚrefine_chains               r   Ú_load_refine_chainrU   ‰   sX   € ô  ¨_ÀgÔN€MØÒ# €KÜ °MÈ7ÔS€LÜð Ø'Ø%Ø5Ø3Ø'Øñð ñð r   z0.2.13z1.0aD  This function is deprecated. Refer to this guide on retrieval and question answering with sources: https://python.langchain.com/docs/how_to/qa_sources/
See also the following migration guides for replacements based on `chain_type`:
stuff: https://python.langchain.com/docs/versions/migrating_chains/stuff_docs_chain
map_reduce: https://python.langchain.com/docs/versions/migrating_chains/map_reduce_chain
refine: https://python.langchain.com/docs/versions/migrating_chains/refine_chain
map_rerank: https://python.langchain.com/docs/versions/migrating_chains/map_rerank_docs_chain
)ÚsinceÚremovalÚmessagec                óš   — t         t        t        t        dœ}||vr!d|› d|j	                  «       › �}t        |«      ‚||   } || fd|i|¤ŽS )aÙ  Load a question answering with sources chain.

    Args:
        llm: Language Model to use in the chain.
        chain_type: Type of document combining chain to use. Should be one of "stuff",
            "map_reduce", "refine" and "map_rerank".
        verbose: Whether chains should be run in verbose mode or not. Note that this
            applies to all chains that make up the final chain.

    Returns:
        A chain to use for question answering with sources.
    )ÚstuffÚ
map_reduceÚrefineÚ
map_rerankzGot unsupported chain type: z. Should be one of r)   )r5   rI   rU   r0   ÚkeysrB   )r   Ú
chain_typer)   r   Úloader_mappingrG   Ú_funcs          r   Úload_qa_with_sources_chainrb   £   sr   € ôD #Ü,Ü$Ü,ñ	5€Nð ˜Ñ'à*¨:¨,ð 7 Ø .× 3Ñ 3Ó 5Ð6ð8ð 	ô ˜‹oÐØ+¨JÑ7€EÙ�Ñ0˜gÐ0¨Ñ0Ð0r   )r   r	   r(   r
   r)   Úboolr*   Ústrr+   rd   r,   rd   r   r   r    r   )r   r	   r(   r
   r2   r
   r*   rd   r)   úOptional[bool]r   r   r    r   )r   r	   r6   r
   r7   r
   r2   r
   r8   rd   r9   rd   r:   zOptional[BasePromptTemplate]r;   úOptional[BaseLanguageModel]r<   rf   r)   re   r=   Úintr   r   r    r   )r   r	   r6   r
   rL   r
   r2   r
   r*   rd   rM   rd   rN   rf   r)   re   r   r   r    r   )rZ   N)
r   r	   r_   rd   r)   re   r   r   r    r   )/r$   Ú
__future__r   Úcollections.abcr   Útypingr   r   r   Úlangchain_core._apir   Úlangchain_core.language_modelsr	   Úlangchain_core.promptsr
   Ú'langchain.chains.combine_documents.baser   Ú-langchain.chains.combine_documents.map_reducer   Ú-langchain.chains.combine_documents.map_rerankr   Ú)langchain.chains.combine_documents.reducer   Ú)langchain.chains.combine_documents.refiner   Ú(langchain.chains.combine_documents.stuffr   Úlangchain.chains.llmr   Ú langchain.chains.qa_with_sourcesr   r   r   Ú5langchain.chains.question_answering.map_rerank_promptr   ÚMAP_RERANK_PROMPTr   r0   ÚEXAMPLE_PROMPTr5   ÚQUESTION_PROMPTÚCOMBINE_PROMPTrI   ÚDEFAULT_TEXT_QA_PROMPTÚDEFAULT_REFINE_PROMPTrU   rb   r   r   r   Ú<module>r}      s·  ðÙ 2å "å #ß *Ñ *å *Ý <Ý 5å MÝ QÝ QÝ JÝ JÝ HÝ )÷ñ õ
ô
<�hô <ð "3ØØ"+ØØñØ	ðð ðð ð	ð
  ðð ðð ðð ðð óð. ".×!4Ñ!4Ø*6×*EÑ*EØ"-Ø"ñØ	ðð ðð (ð	ð
  ðð ðð ðð óð, +<×*KÑ*KØ):×)IÑ)IØ*;×*JÑ*JØ*5Ø-6Ø48Ø.2Ø04Ø"Øñ7Ø	ð7ð (ð7ð 'ð	7ð
 (ð7ð %(ð7ð (+ð7ð 2ð7ð ,ð7ð .ð7ð ð7ð ð7ð ð7ð ó7ðz +9×*OÑ*OØ(6×(LÑ(LØ*8×*GÑ*GØ"/Ø!2Ø.2Ø"ñØ	ðð (ðð &ð	ð
 (ðð  ðð ðð ,ðð ðð ðð óñ4 Ø
Øð	jô	ð" Ø"ð1Ø	ð1àð1ð ð1ð ð	1ð
 ò1óñ1r   