Ë
    ´Œjù%  ã                   ó°  — d 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
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œdedede&de'de'de'dee
   d ed!ed"efd#„Z(dddddd$œdedee   de'dee&   dee
   d ed!ed"efd%„Z)ddd&dddddddd'd(œded)ee   d*ee   d+e'd,e'd-ee   d.ee   d/ee   dee&   dee
   d ed0e*d!ed"efd1„Z+ddd2d3ddddd4œded)ee   d5ee   de'd6e'd7ee   dee&   dee
   d ed!ed"efd8„Z, ed9d:d;¬<«      	 	 	 d?ded=e'dee&   dee
   d!ed"efd>„«       Z-y)@zLoad question answering chains.é    )ÚMapping)ÚAnyÚOptionalÚProtocol)Ú
deprecated)ÚBaseCallbackManagerÚ	Callbacks)ÚBaseLanguageModel)ÚBasePromptTemplate)ÚReduceDocumentsChain)ÚBaseCombineDocumentsChain)ÚMapReduceDocumentsChain)ÚMapRerankDocumentsChain)ÚRefineDocumentsChain)ÚStuffDocumentsChain)ÚLLMChain)Úmap_reduce_promptÚrefine_promptsÚstuff_prompt)ÚPROMPTc                   ó$   — e Zd ZdZdededefd„Zy)ÚLoadingCallablez2Interface for loading the combine documents chain.ÚllmÚkwargsÚreturnc                  ó   — y)z-Callable to load the combine documents chain.N© )Úselfr   r   s      ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/question_answering/chain.pyÚ__call__zLoadingCallable.__call__   s   � ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r    r   r!   r   r   r      s&   „ Ù<ð<àð<ð ð<ð 
#ô	<r!   r   FÚcontextÚscoreÚanswerN)ÚpromptÚverboseÚdocument_variable_nameÚrank_keyÚ
answer_keyÚcallback_managerÚ	callbacksr   r)   r*   r+   r,   r-   r.   r/   r   r   c          
      óF   — t        | ||||¬«      }	t        d|	|||||dœ|¤ŽS )N©r   r)   r*   r.   r/   )Ú	llm_chainr,   r-   r+   r*   r.   r   )r   r   )
r   r)   r*   r+   r,   r-   r.   r/   r   r2   s
             r   Ú_load_map_rerank_chainr3   '   sM   € ô ØØØØ)Øô€Iô #ð ØØØØ5ØØ)ñð ñð r!   )r)   r+   r*   r.   r/   c          	      óŠ   — |xs t         j                  j                  | «      }t        | ||||¬«      }t	        d|||||dœ|¤ŽS )Nr1   ©r2   r+   r*   r.   r/   r   )r   ÚPROMPT_SELECTORÚ
get_promptr   r   )	r   r)   r+   r*   r.   r/   r   Ú_promptr2   s	            r   Ú_load_stuff_chainr9   E   se   € ð ÒDœ×4Ñ4×?Ñ?ÀÓD€GÜØØØØ)Øô€Iô ð ØØ5ØØ)Øñð ñð r!   Ú	summariesi¸  )Úquestion_promptÚcombine_promptÚcombine_document_variable_nameÚ!map_reduce_document_variable_nameÚcollapse_promptÚ
reduce_llmÚcollapse_llmr*   r.   r/   Ú	token_maxr;   r<   r=   r>   r?   r@   rA   rB   c          
      ó¨  — |xs t         j                  j                  | «      }|xs t         j                  j                  | «      }t	        | |||	|
¬«      }|xs | }t	        ||||	|
¬«      }t        ||||	|
¬«      }|€d }|�0d}t        |«      ‚|xs | }t        t	        ||||	|
¬«      |||	¬«      }t        ||||¬«      }t        d|||||	|
dœ|¤ŽS )Nr1   r5   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r2   r+   r*   r.   )Úcombine_documents_chainÚcollapse_documents_chainrB   r*   )r2   r+   Úreduce_documents_chainr*   r.   r/   r   )	r   ÚQUESTION_PROMPT_SELECTORr7   ÚCOMBINE_PROMPT_SELECTORr   r   Ú
ValueErrorr   r   )r   r;   r<   r=   r>   r?   r@   rA   r*   r.   r/   rB   r   Ú_question_promptÚ_combine_promptÚ	map_chainÚ_reduce_llmÚreduce_chainrD   Úcollapse_chainÚmsgÚ_collapse_llmrF   s                          r   Ú_load_map_reduce_chainrR   b   sJ  € ð" 	ÒUÔ,×EÑE×PÑPÐQTÓUð ð 	ÒSÔ+×CÑC×NÑNÈsÓSð ô ØØØØ)Øô€Ið Ò# €KÜØØØØ)Øô€Lô 2ØØ=ØØ)ØôÐð ÐØˆØÐ#ð>ð ô ˜S“/Ð!à$Ò+¨ˆÜ,ÜØ!Ø&ØØ!1Ø#ôð $BØØ-ô
ˆô 2Ø 7Ø!/ØØô	Ðô #ð ØØ@Ø5ØØ)Øñð ñð r!   Úcontext_strÚexisting_answer)r;   Úrefine_promptr+   Úinitial_response_nameÚ
refine_llmr*   r.   r/   rU   rV   rW   c                ó   — |xs t         j                  j                  | «      }
|xs t         j                  j                  | «      }t	        | |
|||¬«      }|xs | }t	        |||||¬«      }t        d|||||||dœ|	¤ŽS )Nr1   )Úinitial_llm_chainÚrefine_llm_chainr+   rV   r*   r.   r/   r   )r   rG   r7   ÚREFINE_PROMPT_SELECTORr   r   )r   r;   rU   r+   rV   rW   r*   r.   r/   r   rJ   Ú_refine_promptÚinitial_chainÚ_refine_llmÚrefine_chains                  r   Ú_load_refine_chainr`   ¶   s·   € ð 	ÒRœ>×BÑB×MÑMÈcÓRð ð #ò ¤n×&KÑ&K×&VÑ&VØó'€Nô ØØØØ)Øô€Mð Ò# €KÜØØØØ)Øô€Lô  ð 	Ø'Ø%Ø5Ø3ØØ)Øñ	ð ñ	ð 	r!   z0.2.13z1.0a1  This class is deprecated. See 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

See also guides on retrieval and question-answering here: https://python.langchain.com/docs/how_to/#qa-with-rag)ÚsinceÚremovalÚmessageÚ
chain_typec                 ó˜   — t         t        t        t        dœ}||vr!d|› d|j	                  «       › �}t        |«      ‚ ||   | f||dœ|¤ŽS )aÿ  Load question answering 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", "map_rerank", and "refine".
        verbose: Whether chains should be run in verbose mode or not. Note that this
            applies to all chains that make up the final chain.
        callback_manager: Callback manager to use for the chain.

    Returns:
        A chain to use for question answering.
    )ÚstuffÚ
map_reduceÚrefineÚ
map_rerankzGot unsupported chain type: z. Should be one of )r*   r.   )r9   rR   r`   r3   ÚkeysrI   )r   rd   r*   r.   r   Úloader_mappingrP   s          r   Úload_qa_chainrl   ä   s   € ôF #Ü,Ü$Ü,ñ	5€Nð ˜Ñ'à*¨:¨,ð 7 Ø .× 3Ñ 3Ó 5Ð6ð8ð 	ô ˜‹oÐØ%ˆ>˜*Ñ%ØðàØ)ñð ñ	ð r!   )rf   NN).r%   Úcollections.abcr   Útypingr   r   r   Úlangchain_core._apir   Úlangchain_core.callbacksr   r	   Úlangchain_core.language_modelsr
   Úlangchain_core.promptsr   Úlangchain.chainsr   Ú'langchain.chains.combine_documents.baser   Ú-langchain.chains.combine_documents.map_reducer   Ú-langchain.chains.combine_documents.map_rerankr   Ú)langchain.chains.combine_documents.refiner   Ú(langchain.chains.combine_documents.stuffr   Úlangchain.chains.llmr   Ú#langchain.chains.question_answeringr   r   r   Ú5langchain.chains.question_answering.map_rerank_promptr   ÚMAP_RERANK_PROMPTr   ÚboolÚstrr3   r9   ÚintrR   r`   rl   r   r!   r   Ú<module>r€      sK  ðÙ %å #ß *Ñ *å *ß CÝ <Ý 5å 1Ý MÝ QÝ QÝ JÝ HÝ )÷ñ õ
ô
<�hô <ð "3ØØ"+ØØØ6:ØòØ	ðð ðð ð	ð
  ðð ðð ðð Ð2Ñ3ðð ðð ðð óðB ,0Ø"+Ø"Ø6:ØòØ	ðð Ð'Ñ(ðð  ð	ð
 �d‰^ðð Ð2Ñ3ðð ðð ðð óð@ 59Ø37Ø*5Ø-6Ø48Ø.2Ø04Ø"Ø6:ØØòQØ	ðQð Ð0Ñ1ðQð Ð/Ñ0ð	Qð
 %(ðQð (+ðQð Ð0Ñ1ðQð Ð*Ñ+ðQð Ð,Ñ-ðQð �d‰^ðQð Ð2Ñ3ðQð ðQð ðQð ðQð óQðn 59Ø26Ø"/Ø!2Ø.2Ø"Ø6:Øò+Ø	ð+ð Ð0Ñ1ð+ð Ð.Ñ/ð	+ð
  ð+ð ð+ð Ð*Ñ+ð+ð �d‰^ð+ð Ð2Ñ3ð+ð ð+ð ð+ð ó+ñ\ Ø
Øð	@ô	ð  Ø"Ø6:ñ	%Ø	ð%àð%ð �d‰^ð%ð Ð2Ñ3ð	%ð
 ð%ð ò%óñ%r!   