Ë
    ´Œj�!  ã                  ób  — d Z ddlmZ ddlZddlZddlmZmZ ddl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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*  eddd¬«       G d„ dee«      «       Z+ eddd¬«       G d„ de+«      «       Z,y)ú/Question answering with sources over documents.é    )ÚannotationsN)ÚABCÚabstractmethod)ÚAnyÚOptional)Ú
deprecated)ÚAsyncCallbackManagerForChainRunÚCallbackManagerForChainRun)ÚDocument)ÚBaseLanguageModel)ÚBasePromptTemplate)Ú
ConfigDictÚmodel_validator)ÚReduceDocumentsChain)ÚChain)ÚBaseCombineDocumentsChain)ÚMapReduceDocumentsChain)ÚStuffDocumentsChain)ÚLLMChain©Úload_qa_with_sources_chain)ÚCOMBINE_PROMPTÚEXAMPLE_PROMPTÚQUESTION_PROMPTz0.2.13z1.0z”This class is deprecated. Refer to this guide on retrieval and question answering with sources: https://python.langchain.com/docs/how_to/qa_sources/)ÚsinceÚremovalÚmessagec                  ó’  — e Zd ZU dZded<   	 dZded<   dZded<   d	Zded
<   dZded<   dZ	ded<   	 e
eeef	 	 	 	 	 	 	 	 	 	 	 d d„«       Ze
	 	 d!	 	 	 	 	 	 	 	 	 d"d„«       Z edd¬«      Zed#d„«       Zed#d„«       Z ed¬«      e
d$d„«       «       Zd%d„Ze	 	 	 	 	 	 d&d„«       Z	 d'	 	 	 	 	 d(d„Ze	 	 	 	 	 	 d)d„«       Z	 d'	 	 	 	 	 d*d„Zy)+ÚBaseQAWithSourcesChainz5Question answering chain with sources over documents.r   Úcombine_documents_chainÚquestionÚstrÚquestion_keyÚdocsÚinput_docs_keyÚanswerÚ
answer_keyÚsourcesÚsources_answer_keyFÚboolÚreturn_source_documentsc                óš   — t        ||¬«      }t        ||¬«      }t        ||d¬«      }t        |¬«      }	t        ||	d¬«      }
 | dd|
i|¤ŽS )	z Construct the chain from an LLM.)ÚllmÚpromptÚ	summaries)Ú	llm_chainÚdocument_promptÚdocument_variable_name)r!   Úcontext)r1   Úreduce_documents_chainr3   r!   © )r   r   r   r   )Úclsr.   r2   Úquestion_promptÚcombine_promptÚkwargsÚllm_question_chainÚllm_combine_chainÚcombine_results_chainr5   r!   s              úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/qa_with_sources/base.pyÚfrom_llmzBaseQAWithSourcesChain.from_llm7   sw   € ô &¨#°oÔFÐÜ$¨°^ÔDÐÜ 3Ø'Ø+Ø#.ô!
Ðô
 "6Ø$9ô"
Ðô #:Ø(Ø#9Ø#,ô#
Ðñ
 ñ 
Ø$;ð
àñ
ð 	
ó    Nc                ó>   — |xs i }t        |fd|i|¤Ž} | dd|i|¤ŽS )zLoad chain from chain type.Ú
chain_typer!   r6   r   )r7   r.   rB   Úchain_type_kwargsr:   Ú_chain_kwargsr!   s          r>   Úfrom_chain_typez&BaseQAWithSourcesChain.from_chain_typeU   sD   € ð *Ò/¨RˆÜ"<Øñ#
à!ð#
ð ñ#
Ðñ
 ÑMÐ+BÐMÀfÑMÐMr@   TÚforbid)Úarbitrary_types_allowedÚextrac                ó   — | j                   gS ©z2Expect input key.

        :meta private:
        )r$   ©Úselfs    r>   Ú
input_keysz!BaseQAWithSourcesChain.input_keysk   s   € ð ×!Ñ!Ð"Ð"r@   c                óZ   — | j                   | j                  g}| j                  rg |¢d‘}|S )z3Return output key.

        :meta private:
        Úsource_documents)r(   r*   r,   )rL   Ú_output_keyss     r>   Úoutput_keysz"BaseQAWithSourcesChain.output_keyss   s7   € ð Ÿ™¨×)@Ñ)@ÐAˆØ×'Ò'Ø>˜\Ð>Ð+=Ð>ˆLØÐr@   Úbefore)Úmodec                ó6   — d|v r|j                  d«      |d<   |S )z&Fix backwards compatibility in naming.Úcombine_document_chainr!   )Úpop)r7   Úvaluess     r>   Úvalidate_namingz&BaseQAWithSourcesChain.validate_naming~   s&   € ð $ vÑ-Ø06·
±
Ð;SÓ0TˆFÐ,Ñ-Øˆr@   c                ó  — t        j                  d|t         j                  «      rWt        j                  d|t         j                  ¬«      dd \  }}t        j                  d|«      d   j	                  «       }||fS d}||fS )	zSplit sources from answer.z	SOURCES?:zSOURCES?:|QUESTION:\s)ÚflagsNé   z\nr   Ú )ÚreÚsearchÚ
IGNORECASEÚsplitÚstrip)rL   r'   r)   s      r>   Ú_split_sourcesz%BaseQAWithSourcesChain._split_sources†   s~   € ä�9‰9�\ 6¬2¯=©=Ô9Ü Ÿh™hØ(ØÜ—m‘môð ˆqð	‰OˆF�Gô
 —h‘h˜u gÓ.¨qÑ1×7Ñ7Ó9ˆGð �wˆÐð ˆGØ�wˆÐr@   c                ó   — y©ú!Get docs to run questioning over.Nr6   ©rL   ÚinputsÚrun_managers      r>   Ú	_get_docsz BaseQAWithSourcesChain._get_docs“   s   � r@   c                ó²  — |xs t        j                  «       }dt        j                  | j                  «      j
                  v }|r| j	                  ||¬«      }n| j	                  |«      } | j                  j                  d||j                  «       dœ|¤Ž}| j                  |«      \  }}| j                  || j                  |i}| j                  r||d<   |S ©Nrh   )rh   )Úinput_documentsÚ	callbacksrO   r6   )r   Úget_noop_managerÚinspectÚ	signatureri   Ú
parametersr!   ÚrunÚ	get_childrb   r(   r*   r,   ©	rL   rg   rh   Ú_run_managerÚaccepts_run_managerr%   r'   r)   Úresults	            r>   Ú_callzBaseQAWithSourcesChain._callœ   sá   € ð
 #ÒSÔ&@×&QÑ&QÓ&SˆàœW×.Ñ.¨t¯~©~Ó>×IÑIÐIð 	ñ Ø—>‘> &°l�>ÓC‰Dà—>‘> &Ó)ˆDà1�×-Ñ-×1Ñ1ð 
Ø Ø"×,Ñ,Ó.ñ
ð ñ
ˆð
 ×-Ñ-¨fÓ5‰ˆ�à�O‰O˜VØ×#Ñ# Wð"
ˆð ×'Ò'Ø)-ˆFÐ%Ñ&Øˆr@   c             ƒ  ó   K  — y­wrd   r6   rf   s      r>   Ú
_aget_docsz!BaseQAWithSourcesChain._aget_docs¸   s   è ø� ùs   ‚c              ƒ  óö  K  — |xs t        j                  «       }dt        j                  | j                  «      j
                  v }|r| j	                  ||¬«      ƒ d {  –—† }n| j	                  |«      ƒ d {  –—† } | j                  j                  d||j                  «       dœ|¤Žƒ d {  –—† }| j                  |«      \  }}| j                  || j                  |i}| j                  r||d<   |S 7 Œ”7 Œ|7 ŒI­wrk   )r
   rn   ro   rp   rz   rq   r!   Úarunrs   rb   r(   r*   r,   rt   s	            r>   Ú_acallzBaseQAWithSourcesChain._acallÁ   s   è ø€ ð
 #ÒXÔ&E×&VÑ&VÓ&XˆàœW×.Ñ.¨t¯©Ó?×JÑJÐJð 	ñ ØŸ™¨¸\˜ÓJ×J‰DàŸ™¨Ó0×0ˆDØ8�t×3Ñ3×8Ñ8ð 
Ø Ø"×,Ñ,Ó.ñ
ð ñ
÷ 
ˆð
 ×-Ñ-¨fÓ5‰ˆ�à�O‰O˜VØ×#Ñ# Wð"
ˆð ×'Ò'Ø)-ˆFÐ%Ñ&Øˆð Køà0øð
ús7   ‚AC9ÁC3ÁC9Á8C5Á94C9Â-C7Â.AC9Ã5C9Ã7C9)r.   r   r2   r   r8   r   r9   r   r:   r   Úreturnr    )ÚstuffN)
r.   r   rB   r#   rC   zOptional[dict]r:   r   r~   r    ©r~   z	list[str])rW   Údictr~   r   )r'   r#   r~   ztuple[str, str]©rg   údict[str, Any]rh   r   r~   úlist[Document])N)rg   rƒ   rh   z$Optional[CallbackManagerForChainRun]r~   zdict[str, str]©rg   rƒ   rh   r
   r~   r„   )rg   rƒ   rh   z)Optional[AsyncCallbackManagerForChainRun]r~   rƒ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r$   r&   r(   r*   r,   Úclassmethodr   r   r   r?   rE   r   Úmodel_configÚpropertyrM   rQ   r   rX   rb   r   ri   rx   rz   r}   r6   r@   r>   r    r    "   s  … ñ @à6Ó6Ø,Ø"€L�#Ó"Ø €N�CÓ Ø€J�ÓØ'Ð˜Ó'Ø$)Ð˜TÓ)Ø&àð /=Ø.=Ø-;ð
àð
ð ,ð
ð ,ð	
ð
 +ð
ð ð
ð 
 ò
ó ð
ð: ð "Ø,0ð	NàðNð ðNð *ð	Nð
 ðNð 
 òNó ðNñ  Ø $Øô€Lð
 ò#ó ð#ð òó ðñ ˜(Ô#Øòó ó $ðóð ð0àð0ð 0ð	0ð
 
ò0ó ð0ð =Aðàðð :ðð 
ó	ð8 ð0àð0ð 5ð	0ð
 
ò0ó ð0ð BFðàðð ?ðð 
ô	r@   r    c                  ól   — e Zd ZU dZdZded<   ed
d„«       Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	edd„«       Z
y	)ÚQAWithSourcesChainr   r%   r#   r&   c                ó2   — | j                   | j                  gS rJ   )r&   r$   rK   s    r>   rM   zQAWithSourcesChain.input_keysë   s   € ð ×#Ñ# T×%6Ñ%6Ð7Ð7r@   c               ó8   — |j                  | j                  «      S ©re   ©rV   r&   rf   s      r>   ri   zQAWithSourcesChain._get_docsó   s   € ð �z‰z˜$×-Ñ-Ó.Ð.r@   c             ƒ  ó@   K  — |j                  | j                  «      S ­wr’   r“   rf   s      r>   rz   zQAWithSourcesChain._aget_docsü   s   è ø€ ð �z‰z˜$×-Ñ-Ó.Ð.ùs   ‚c                 ó   — y)NÚqa_with_sources_chainr6   rK   s    r>   Ú_chain_typezQAWithSourcesChain._chain_type  s   € à&r@   Nr€   r‚   r…   )r~   r#   )r†   r‡   rˆ   r‰   r&   rŠ   r�   rM   ri   rz   r—   r6   r@   r>   r�   r�   Ý   sy   … ñ :à €N�CÓ àò8ó ð8ð/àð/ð 0ð	/ð
 
ó/ð/àð/ð 5ð	/ð
 
ó/ð ò'ó ñ'r@   r�   )-r‰   Ú
__future__r   ro   r]   Úabcr   r   Útypingr   r   Úlangchain_core._apir	   Úlangchain_core.callbacksr
   r   Úlangchain_core.documentsr   Úlangchain_core.language_modelsr   Úlangchain_core.promptsr   Úpydanticr   r   Úlangchain.chainsr   Úlangchain.chains.baser   Ú'langchain.chains.combine_documents.baser   Ú-langchain.chains.combine_documents.map_reducer   Ú(langchain.chains.combine_documents.stuffr   Úlangchain.chains.llmr   Ú(langchain.chains.qa_with_sources.loadingr   Ú2langchain.chains.qa_with_sources.map_reduce_promptr   r   r   r    r�   r6   r@   r>   Ú<module>r©      s©   ðÙ 5å "ã Û 	ß #ß  å *÷õ .Ý <Ý 5ß 0å 1Ý 'Ý MÝ QÝ HÝ )Ý O÷ñ ñ Ø
Øð	?ô	ôo˜U Có oóðoñd Ø
Øð	?ô	ô!'Ð/ó !'óñ!'r@   