
    KKi:m                    8   S r SSKJr  SSKrSSKJr  SSKJrJr  SSK	r	SSK
Jr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.  \(       a  SSK/J0r0  SSK1J2r2   SSK3J4r4J5r5  Sr7SKS jr8SLS jr9SMS jr:      SNS  jr;SOS! jr<SPS" jr=SQS# jr>SRS$ jr?      SSS% jr@SPS& jrASTS' jrBSUS( jrCSPS) jrD      SVS* jrESWS+ jrF      SXS, jrGSYS- jrHSZS. jrIS[S/ jrJS\S0 jrK0 S1\J_S2\9_S3\8_S4\=_S5\>_S6\?_S7\K_S8\A_S9\C_S:\:_S;\;_S<\<_S=\@_S>\B_S?\D_S@\E_SA\H_\F\G\ISB.ErL\" SCSDSESF9S]SG j5       rM\" SCSDSESF9S^SH j5       rNS_SI jrOg! \6 a    SJS jr4SJS jr5 Nf = f)`z!Functionality for loading chains.    )annotationsN)Path)TYPE_CHECKINGAny)
deprecated)_load_output_parserload_promptload_prompt_from_config)ReduceDocumentsChain)APIChain)Chain)MapReduceDocumentsChain)MapRerankDocumentsChain)RefineDocumentsChain)StuffDocumentsChain)HypotheticalDocumentEmbedder)LLMChain)LLMCheckerChain)LLMMathChain)QAWithSourcesChain)RetrievalQAWithSourcesChain)VectorDBQAWithSourcesChain)RetrievalQA
VectorDBQAGraphCypherQAChainLLMRequestsChain)load_llmload_llm_from_configc                     Sn[        U5      e)zImport error for load_llm.zTo use this load_llm functionality you must install the langchain_community package. You can install it with `pip install langchain_community`ImportError___msgs      b/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_classic/chains/loading.pyr   r   2       H 	
 #    c                     Sn[        U5      e)z&Import error for load_llm_from_config.zTo use this load_llm_from_config functionality you must install the langchain_community package. You can install it with `pip install langchain_community`r"   r$   s      r(   r    r    ;   r)   r*   zHhttps://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/c                z   SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[	        U5      nO.SU ;   a  [        U R                  S5      5      nOSn[        U5      e[        U 5        [        SX6S.U D6$ )	z Load LLM chain from config dict.llmllm_path+One of `llm` or `llm_path` must be present.promptprompt_pathz1One of `prompt` or `prompt_path` must be present.r-   r0    )popr    r   
ValueErrorr
   r	   r   r   )configkwargs
llm_configr-   r'   prompt_configr0   s          r(   _load_llm_chainr:   H   s    ZZ&
":88	v	vzz*-88;o6

8,(7	&	 VZZ67Ao55f55r*   c                   SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU;   a  UR                  S5      nOSn[        U5      e[	        SUUS.U D6$ )z;Load hypothetical document embedder chain from config dict.	llm_chainllm_chain_path7One of `llm_chain` or `llm_chain_path` must be present.
embeddingsz`embeddings` must be present.)r<   base_embeddingsr3   )r4   load_chain_from_config
load_chainr5   r   )r6   r7   llm_chain_configr<   r'   r?   s         r(   _load_hyde_chainrD   `   s    f!::k2*+;FvF		V	#vzz*:;FvF	GovZZ-
-o' "  r*   c                   SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        U[
        5      (       d  SU 3n[        U5      eSU ;   a  U R                  S5      n[        U5      nO.SU ;   a  [        U R                  S5      5      nOSn[        U5      e[        S	UUS.U D6$ )
Nr<   r=   r>   Expected LLMChain, got document_promptdocument_prompt_pathzCOne of `document_prompt` or `document_prompt_path` must be present.)r<   rG   r3   )	r4   rA   rB   r5   
isinstancer   r
   r	   r   )r6   r7   rC   r<   r'   r9   rG   s          r(   _load_stuff_documents_chainrJ   v   s    f!::k2*+;FvF		V	#vzz*:;FvF	Goi**'	{3oF"

#451-@	6	)%fjj1G&HISo '  r*   c                   SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        U[
        5      (       d  SU 3n[        U5      eSU ;   a  [        U R                  S5      40 UD6nO.SU ;   a  [        U R                  S5      40 UD6nO[        U 40 UD6n[        SUUS.U D6$ )	Nr<   r=   r>   rF   reduce_documents_chainreduce_documents_chain_path)r<   rL   r3   )r4   rA   rB   r5   rI   r   _load_reduce_documents_chainr   )r6   r7   rC   r<   r'   rL   s         r(    _load_map_reduce_documents_chainrO      s    f!::k2*+;FvF		V	#vzz*:;FvF	Goi**'	{3o6)!7JJ/0"
"
 
'&	0!+JJ45"
"

 ">f!O!O" 5  r*   c                   S nS nSU ;   a  U R                  S5      n[        U40 UD6nOuSU ;   a  U R                  S5      n[        U40 UD6nOQSU ;   a  [        U R                  S5      40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU ;   a$  U R                  S5      nUc  S nOz[        U40 UD6nOmSU ;   a  [        U R                  S5      40 UD6nOKSU ;   a$  U R                  S5      nUc  S nO.[        U40 UD6nO!S	U ;   a  [        U R                  S	5      40 UD6n[	        SUUS
.U D6$ )Ncombine_documents_chaincombine_document_chaincombine_documents_chain_pathcombine_document_chain_pathSOne of `combine_documents_chain` or `combine_documents_chain_path` must be present.collapse_documents_chaincollapse_documents_chain_pathcollapse_document_chaincollapse_document_chain_path)rQ   rV   r3   )r4   rA   rB   r5   r   )r6   r7   rQ   rV   combine_document_chain_configr'   collapse_document_chain_configs          r(   rN   rN      s   "# F*(.

3L(M%"8)#
#
 
"V	+(.

3K(L%"8)#
#
 
(6	1",JJ56#
#
 
'&	0",JJ45#
#
> 	 o!V+)/4N)O&)1'+$'=.(($ 
)F	2#-JJ67$
$
  
#f	,)/4M)N&)1'+$'=.(($ 
(6	1#-JJ56$
$
 
    7!9  r*   c                    Sn[        U5      e)z%Load LLM Bash chain from config dict.a   LLMBash Chain is not available through LangChain anymore. The relevant code can be found in langchain_experimental, but it is not appropriate for production usage due to security concerns. Please refer to langchain-experimental repository for more details.NotImplementedErrorr6   r7   r'   s      r(   _load_llm_bash_chainr`      s    	X  c
""r*   c           	        SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[	        U5      nO SU ;   a  [        U R                  S5      5      nSU ;   a  U R                  S5      n[	        U5      nO SU ;   a  [        U R                  S5      5      nSU ;   a  U R                  S5      n	[	        U	5      n
O S	U ;   a  [        U R                  S	5      5      n
S
U ;   a  U R                  S
5      n[	        U5      nO SU ;   a  [        U R                  S5      5      n[        SUWWW
WS.U D6$ )Nr-   r.   r/   create_draft_answer_promptcreate_draft_answer_prompt_pathlist_assertions_promptlist_assertions_prompt_pathcheck_assertions_promptcheck_assertions_prompt_pathrevised_answer_promptrevised_answer_prompt_path)r-   rb   rd   rf   rh   r3   )r4   r    r   r5   r
   r	   r   )r6   r7   r8   r-   r'   !create_draft_answer_prompt_configrb   list_assertions_prompt_configrd   check_assertions_prompt_configrf   revised_answer_prompt_configrh   s                r(   _load_llm_checker_chainrn   	  s   ZZ&
":88	v	vzz*-88;o#v-,2JJ7S,T)%<-&
" 
+f	4%0JJ89&
"  6)(.

3K(L%!89V!W	&&	0!,VZZ8U-V!W F*)/4M)N&"9*#
 
(6	1"-JJ56#
 &('-zz2I'J$ 78T U	%	/ +FJJ7S,T U #=5 73  r*   c                   S nSU ;   a  U R                  S5      n[        U40 UD6nOuSU ;   a  [        U R                  S5      40 UD6nOSSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [	        U R                  S5      40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[        U5      nO SU ;   a  [        U R                  S5      5      nU(       a  [        S
UWS.U D6$ [        S
WWS	.U D6$ )Nr<   r=   r-   r.   r>   r0   r1   )r<   r0   r2   r3   )	r4   rA   rB   r    r   r5   r
   r	   r   )	r6   r7   r<   rC   r8   r-   r'   r9   r0   s	            r(   _load_llm_math_chainrp   8  s   If!::k2*+;FvF		V	#vzz*:;FvF		&ZZ&
":88 
v	vzz*-88Go6

8,(7	&	 VZZ67IiI&II9C9&99r*   c                    SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SSU0U D6$ )Nr<   r=   r>   r3   )r4   rA   rB   r5   r   )r6   r7   rC   r<   r'   s        r(    _load_map_rerank_documents_chainrr   T  sn     f!::k2*+;FvF		V	#vzz*:;FvF	Go"AYA&AAr*   c                    Sn[        U5      e)NzPALChain is not available through LangChain anymore. The relevant code can be found in langchain_experimental, but it is not appropriate for production usage due to security concerns. Please refer to langchain-experimental repository for more details.r]   r_   s      r(   _load_pal_chainrt   c  s    	X  c
""r*   c                   SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[	        U5      nO SU ;   a  [        U R                  S5      5      n[        S
UUWS	.U D6$ )Ninitial_llm_chaininitial_llm_chain_pathzGOne of `initial_llm_chain` or `initial_llm_chain_path` must be present.refine_llm_chainrefine_llm_chain_pathzEOne of `refine_llm_chain` or `refine_llm_chain_path` must be present.rG   rH   )rv   rx   rG   r3   )r4   rA   rB   r5   r
   r	   r   )	r6   r7   initial_llm_chain_configrv   r'   refine_llm_chain_configrx   r9   rG   s	            r(   _load_refine_documents_chainr|   m  s   f$#)::.A#B 23KVvV	!V	+&vzz2J'KVvVWoV#"(**-?"@12ITVT	 F	*%fjj1H&ITVTUoF"

#451-@	6	)%fjj1G&HI +)' 	 r*   c                    SU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SSU0U D6$ )NrQ   rS   rU   r3   )r4   rA   rB   r5   r   )r6   r7   combine_documents_chain_configrQ   r'   s        r(   _load_qa_with_sources_chainr     s     F*)/4M)N&"8*#
#
 
(6	1",JJ56#
#
> 	 oX6MXQWXXr*   c                    Sn[        U5      e)z)Load SQL Database chain from config dict.ae  SQLDatabaseChain is not available through LangChain anymore. The relevant code can be found in langchain_experimental, but it is not appropriate for production usage due to security concerns. Please refer to langchain-experimental repository for more details, or refer to this tutorial for best practices: https://python.langchain.com/docs/tutorials/sql_qa/r]   r_   s      r(   _load_sql_database_chainr     s    	>  c
""r*   c                   SU;   a  UR                  S5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SUUS.U D6$ Nvectorstorez`vectorstore` must be present.rQ   rS   rU   )rQ   r   r3   )r4   r5   rA   rB   r   r6   r7   r   r'   r~   rQ   s         r(   %_load_vector_db_qa_with_sources_chainr     s     jj/.o F*)/4M)N&"8*#
#
 
(6	1",JJ56#
#
> 	 o%  7  r*   c                   SU;   a  UR                  S5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SUUS.U D6$ N	retrieverz`retriever` must be present.rQ   rS   rU   )rQ   r   r3   )r4   r5   rA   rB   r   r6   r7   r   r'   r~   rQ   s         r(   _load_retrieval_qar     s    fJJ{+	,o F*)/4M)N&"8*#
#
 
(6	1",JJ56#
#
> 	 o  7  r*   c                   SU;   a  UR                  S5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SUUS.U D6$ r   )r4   r5   rA   rB   r   r   s         r(   %_load_retrieval_qa_with_sources_chainr     s     fJJ{+	,o F*)/4M)N&"8*#
#
 
(6	1",JJ56#
#
> 	 o&  7  r*   c                   SU;   a  UR                  S5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      e[	        SUUS.U D6$ r   )r4   r5   rA   rB   r   r   s         r(   _load_vector_db_qar     s    jj/.o F*)/4M)N&"8*#
#
 
(6	1",JJ56#
#
> 	 o  7  r*   c                v   SU;   a  UR                  S5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nOSn[        U5      e SSKJn  U" SUUUS
.U D6$ ! [
         a  n	S	n[        U5      U	eS n	A	ff = f)Ngraphz`graph` must be present.cypher_generation_chainz*`cypher_generation_chain` must be present.qa_chainz`qa_chain` must be present.r   r   zTo use this GraphCypherQAChain functionality you must install the langchain_community package. You can install it with `pip install langchain_community`)r   r   r   r3   )r4   r5   rA   *langchain_community.chains.graph_qa.cypherr   r#   )
r6   r7   r   r'   cypher_generation_chain_configr   qa_chain_configr   r   es
             r(   _load_graph_cypher_chainr   +  s    &

7#(o F*)/4M)N&"8*#
#

 ;oV **Z0)/DVD+o&Q   7 	   &H 	
 #A%&s   	B 
B8%B33B8c                   SU ;   a  U R                  S5      n[        U40 UD6nO.SU ;   a  [        U R                  S5      5      nOSn[        U5      eSU ;   a  U R                  S5      n[        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU;   a  UR                  S5      nOSn[        U5      e[	        S
UUUS	.U D6$ )Napi_request_chainapi_request_chain_pathzGOne of `api_request_chain` or `api_request_chain_path` must be present.api_answer_chainapi_answer_chain_pathzEOne of `api_answer_chain` or `api_answer_chain_path` must be present.requests_wrapperz#`requests_wrapper` must be present.)r   r   r   r3   )r4   rA   rB   r5   r   )r6   r7   api_request_chain_configr   r'   api_answer_chain_configr   r   s           r(   _load_api_chainr   R  s    f$#)::.A#B 23KVvV	!V	+&vzz2J'KLWoV#"(**-?"@12ITVT	 F	*%fjj1H&ITVTUoV#!::&893o +)) 	 r*   c                N    SSK Jn  SU ;   a  U R                  S5      n[	        U40 UD6nO/SU ;   a  [        U R                  S5      40 UD6nOSn[        U5      eSU;   a  UR                  S5      nU" S	UUS.U D6$ U" S	SU0U D6$ ! [         a  nSn[        U5      UeS nAff = f)
Nr   r   zTo use this LLMRequestsChain functionality you must install the langchain package. You can install it with `pip install langchain`r<   r=   r>   r   )r<   r   r3   )%langchain_classic.chains.llm_requestsr   r#   r4   rA   rB   r5   )r6   r7   r   r   r'   rC   r<   r   s           r(   _load_llm_requests_chainr   p  s    &J f!::k2*+;FvF		V	#vzz*:;FvF	GoV#!::&89 
-
 
 	

 :i:6::/  &> 	
 #A%&s   B 
B$BB$	api_chain
hyde_chainr<   llm_bash_chainllm_checker_chainllm_math_chainllm_requests_chain	pal_chainqa_with_sources_chainstuff_documents_chainmap_reduce_documents_chainrL   map_rerank_documents_chainrefine_documents_chainsql_database_chainvector_db_qa_with_sources_chainvector_db_qa)retrieval_qaretrieval_qa_with_sources_chaingraph_cypher_chainz0.2.13zThis function is deprecated and will be removed in langchain 1.0. At that point chains must be imported from their respective modules.z1.0)sincemessageremovalc                    SU ;  a  Sn[        U5      eU R                  S5      nU[        ;  a  SU S3n[        U5      e[        U   nU" U 40 UD6$ )zLoad chain from Config Dict._typez#Must specify a chain Type in configzLoading z chain not supported)r5   r4   type_to_loader_dict)r6   r7   r'   config_typechain_loaders        r(   rA   rA     se     f3o**W%K--%9:o&{3L)&))r*   c                    [        U [        5      (       a#  U R                  S5      (       a  Sn[        U5      e[	        U 40 UD6$ )zAUnified method for loading a chain from LangChainHub or local fs.zlc://zLoading from the deprecated github-based Hub is no longer supported. Please use the new LangChain Hub at https://smith.langchain.com/hub instead.)rI   str
startswithRuntimeError_load_chain_from_file)pathr7   r'   s      r(   rB   rB     sF     $!9!9 	
 3 000r*   c                D   [        U [        5      (       a  [        U 5      OU nUR                  S:X  a0  UR	                  5        n[
        R                  " U5      nSSS5        O]UR                  R                  S5      (       a0  UR	                  5        n[        R                  " U5      nSSS5        OSn[        U5      eSU;   a  UR                  S5      WS'   SU;   a  UR                  S5      WS'   [        W40 UD6$ ! , (       d  f       NN= f! , (       d  f       N_= f)zLoad chain from file.z.jsonN)z.yamlz.ymlzFile type must be json or yamlverbosememory)rI   r   r   suffixopenjsonloadendswithyaml	safe_loadr5   r4   rA   )filer7   	file_pathfr6   r'   s         r(   r   r     s     )s33T
I7"^^YYq\F 				"	"#4	5	5^^^^A&F  /o F"JJy1y6!::h/x "&3F33!  s   D D 
D
D)r%   r   r&   r   returnNone)r6   dictr7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r6   r   r7   r   r   r   )r   
str | Pathr7   r   r   r   )r   r   r7   r   r   r   )P__doc__
__future__r   r   pathlibr   typingr   r   r   langchain_core._apir   langchain_core.prompts.loadingr   r	   r
   langchain_classic.chainsr   !langchain_classic.chains.api.baser   langchain_classic.chains.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.hyde.baser   langchain_classic.chains.llmr   )langchain_classic.chains.llm_checker.baser   &langchain_classic.chains.llm_math.baser   -langchain_classic.chains.qa_with_sources.baser   2langchain_classic.chains.qa_with_sources.retrievalr   2langchain_classic.chains.qa_with_sources.vector_dbr   *langchain_classic.chains.retrieval_qa.baser   r   r   r   r   r    langchain_community.llms.loadingr   r    r#   URL_BASEr:   rD   rJ   rO   rN   r`   rn   rp   rr   rt   r|   r   r   r   r   r   r   r   r   r   r   rA   rB   r   r3   r*   r(   <module>r      s   ' "   %  *  : 6 / S P K 1 E ? L OMFO, V60,<""" "JBJ#,^:8BBB B#<Y*
#  B< !B<$N<;:"  *	
 0 * 2  8 8 !"B : !"B : 2  &'L!" &#$ ''L2) 0 
	O ** 
	O 	1	14A  s   F FF