§
    ™ŠtjU#  ã                   óÂ  — d Z ddl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 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	dz  d e
d!ed"efd#„Z'dddddd$œdededz  de&de%dz  de	dz  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dz  d*edz  d+e&d,e&d-edz  d.edz  d/edz  de%dz  de	dz  d e
d0e)d!ed"efd1„Z*ddd2d3ddddd4œded)edz  d5edz  de&d6e&d7edz  de%dz  de	dz  d e
d!ed"efd8„Z+ ed9d:d;d<¬=¦  «        	 	 	 dAded?e&de%dz  de	dz  d!ed"efd@„¦   «         Z,dS )BzLoad question answering chains.é    )ÚMapping)ÚAnyÚ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dS )ÚLoadingCallablez2Interface for loading the combine documents chain.ÚllmÚkwargsÚreturnc                 ó   — dS )z-Callable to load the combine documents chain.N© )Úselfr   r   s      úo/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/chains/question_answering/chain.pyÚ__call__zLoadingCallable.__call__#   s   € € € ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r    r   r   r       sJ   € € € € € Ø<Ð<ð<àð<ð ð<ð 
#ð	<ð <ð <ð <ð <ð <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          
      óP   — 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   r1   s
             r   Ú_load_map_rerank_chainr2   +   sa   € õ ØØØØ)Øðñ ô €Iõ #ð ØØØØ5ØØ)ðð ð ðð ð r    )r(   r*   r)   r-   r.   c          	      ó�   — |pt           j                             | ¦  «        }t          | ||||¬¦  «        }t	          d|||||dœ|¤ŽS )Nr0   ©r1   r*   r)   r-   r.   r   )r   ÚPROMPT_SELECTORÚ
get_promptr   r   )	r   r(   r*   r)   r-   r.   r   Ú_promptr1   s	            r   Ú_load_stuff_chainr8   I   sy   € ð ÐD�Ô4×?Ò?ÀÑDÔ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?   r@   rA   c          
      óÔ  — |pt           j                             | ¦  «        }|pt           j                             | ¦  «        }t	          | |||	|
¬¦  «        }|p| }t	          ||||	|
¬¦  «        }t          ||||	|
¬¦  «        }|€d }|�d}t          |¦  «        ‚n)|p| }t          t	          ||||	|
¬¦  «        |||	¬¦  «        }t          ||||¬¦  «        }t          d|||||	|
dœ|¤ŽS )Nr0   r4   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r1   r*   r)   r-   )Úcombine_documents_chainÚcollapse_documents_chainrA   r)   )r1   r*   Úreduce_documents_chainr)   r-   r.   r   )	r   ÚQUESTION_PROMPT_SELECTORr6   ÚCOMBINE_PROMPT_SELECTORr   r   Ú
ValueErrorr   r   )r   r:   r;   r<   r=   r>   r?   r@   r)   r-   r.   rA   r   Ú_question_promptÚ_combine_promptÚ	map_chainÚ_reduce_llmÚreduce_chainrC   Úcollapse_chainÚmsgÚ_collapse_llmrE   s                          r   Ú_load_map_reduce_chainrQ   f   s™  € ð" 	ÐUÕ,ÔE×PÒPÐQTÑUÔUð ð 	ÐSÕ+ÔC×NÒNÈsÑ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.   rT   rU   rV   c                ó  — |pt           j                             | ¦  «        }
|pt           j                             | ¦  «        }t	          | |
|||¬¦  «        }|p| }t	          |||||¬¦  «        }t          d|||||||dœ|	¤ŽS )Nr0   )Úinitial_llm_chainÚrefine_llm_chainr*   rU   r)   r-   r.   r   )r   rF   r6   ÚREFINE_PROMPT_SELECTORr   r   )r   r:   rT   r*   rU   rV   r)   r-   r.   r   rI   Ú_refine_promptÚinitial_chainÚ_refine_llmÚrefine_chains                  r   Ú_load_refine_chainr_   º   s×   € ð 	ÐR�>ÔB×MÒMÈcÑRÔRð ð #ð ¥nÔ&K×&VÒ&VØñ'ô '€Nõ ØØØØ)Øðñ ô €Mð Ð# €KÝØØØØ)Øðñ ô €Lõ  ð 	Ø'Ø%Ø5Ø3ØØ)Øð	ð 	ð ð	ð 	ð 	r    z0.2.13z2.0.0zlangchain.agents.create_agentzuBuild new RAG flows with `create_agent` and a retrieval tool. See https://docs.langchain.com/oss/python/langchain/rag)ÚsinceÚremovalÚalternativeÚaddendumÚstuffÚ
chain_typec                 ó¶   — t           t          t          t          dœ}||vr)d|› d|                     ¦   «         › �}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.
        **kwargs: Additional keyword arguments.

    Returns:
        A chain to use for question answering.
    )rd   Ú
map_reduceÚrefineÚ
map_rerankzGot unsupported chain type: z. Should be one of )r)   r-   )r8   rQ   r_   r2   ÚkeysrH   )r   re   r)   r-   r   Úloader_mappingrO   s          r   Úload_qa_chainrl   è   sœ   € õ> #Ý,Ý$Ý,ð	5ð 5€Nð ˜Ð'Ð'ð8¨:ð 8ð 8Ø .× 3Ò 3Ñ 5Ô 5ð8ð 8ð 	õ ˜‰oŒoÐØ%ˆ>˜*Ô%ØðàØ)ðð ð ð	ð ð r    )rd   NN)-r$   Úcollections.abcr   Útypingr   r   Úlangchain_core._apir   Úlangchain_core.callbacksr   r   Úlangchain_core.language_modelsr	   Úlangchain_core.promptsr
   Úlangchain_classic.chainsr   Ú/langchain_classic.chains.combine_documents.baser   Ú5langchain_classic.chains.combine_documents.map_reducer   Ú5langchain_classic.chains.combine_documents.map_rerankr   Ú1langchain_classic.chains.combine_documents.refiner   Ú0langchain_classic.chains.combine_documents.stuffr   Úlangchain_classic.chains.llmr   Ú+langchain_classic.chains.question_answeringr   r   r   Ú=langchain_classic.chains.question_answering.map_rerank_promptr   ÚMAP_RERANK_PROMPTr   ÚboolÚstrr2   r8   ÚintrQ   r_   rl   r   r    r   ú<module>r€      s  ðØ %Ð %à #Ð #Ð #Ð #Ð #Ð #Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à *Ð *Ð *Ð *Ð *Ð *Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ðð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RØ PÐ PÐ PÐ PÐ PÐ PØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð
<ð <ð <ð <ð <�hñ <ô <ð <ð "3ØØ"+ØØØ37Øðð ð Ø	ðð ðð ð	ð
  ðð ðð ðð *¨DÑ0ðð ðð ðð ðð ð ð ðB )-Ø"+ØØ37Øðð ð Ø	ðð  Ñ%ðð  ð	ð
 �D‰[ðð *¨DÑ0ðð ðð ðð ðð ð ð ð@ 26Ø04Ø*5Ø-6Ø15Ø+/Ø-1ØØ37ØØðQð Qð QØ	ðQð (¨$Ñ.ðQð '¨Ñ-ð	Qð
 %(ðQð (+ðQð (¨$Ñ.ðQð " DÑ(ðQð $ dÑ*ðQð �D‰[ðQð *¨DÑ0ðQð ðQð ðQð ðQð ðQð Qð Qð Qðn 26Ø/3Ø"/Ø!2Ø+/ØØ37Øð+ð +ð +Ø	ð+ð (¨$Ñ.ð+ð &¨Ñ,ð	+ð
  ð+ð ð+ð " DÑ(ð+ð �D‰[ð+ð *¨DÑ0ð+ð ð+ð ð+ð ð+ð +ð +ð +ð\ €Ø
ØØ/ð	>ðñ ô ð ØØ37ð	&ð &Ø	ð&àð&ð �D‰[ð&ð *¨DÑ0ð	&ð
 ð&ð ð&ð &ð &ñô ð&ð &ð &r    