
    m
i:m                       d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	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% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. erddl/m0Z0 ddl1m2Z2 	 ddl3m4Z4m5Z5 n# e6$ r dgdZ4dgd Z5Y nw xY wd!Z7dhd&Z8did(Z9djd*Z:dkd,Z;dld.Z<dmd/Z=dnd1Z>dod3Z?dpd5Z@dmd6ZAdqd8ZBdrd:ZCdmd;ZDdsd=ZEdtd?ZFdudAZGdvdCZHdwdEZIdxdGZJdydIZKi dJeJdKe9dLe8dMe=dNe>dOe?dPeKdQeAdReCdSe:dTe;dUe<dVe@dWeBdXeDdYeEdZeHeFeGeId[ZL ed\d]d^_          dzda            ZM ed\d]d^_          d{dd            ZNd|dfZOdS )}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_config_r   __returnNonec                 $    d}t          |          )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r!   r"   msgs      C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/chains/loading.pyr   r   2       H 	
 #    c                 $    d}t          |          )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/configdictkwargsr   c                   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d| v r%|                      d          }t	          |          }n8d| v r#t          |                      d                    }nd}t          |          t          |            t          d||d| S )	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.r2   r5    )popr    r   
ValueErrorr
   r	   r   r   )r.   r0   
llm_configr2   r)   prompt_configr5   s          r*   _load_llm_chainr=   H   s    ZZ&&
":8888	v		vzz*--8888;oo6

8,,(77	&	 	 VZZ6677Aoo5F55f555r,   r   c                0   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d|v r|                     d          }nd}t          |          t	          d||d| S )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_embeddingsr8   )r9   load_chain_from_config
load_chainr:   r   )r.   r0   llm_chain_configr?   r)   rB   s         r*   _load_hyde_chainrG   `   s    f!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF		GoovZZ--

-oo' "    r,   r   c                   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          |t
                    sd| }t          |          d| v r%|                      d          }t          |          }n8d| v r#t          |                      d                    }nd}t          |          t          d	||d| S )
Nr?   r@   rA   Expected LLMChain, got document_promptdocument_prompt_pathzCOne of `document_prompt` or `document_prompt_path` must be present.)r?   rJ   r8   )	r9   rD   rE   r:   
isinstancer   r
   r	   r   )r.   r0   rF   r?   r)   r<   rJ   s          r*   _load_stuff_documents_chainrM   v   s2   f!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF		Gooi** 3	33ooF""

#4551-@@	6	)	)%fjj1G&H&HIISoo '    r,   r   c                   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          |t
                    sd| }t          |          d| v r!t          |                      d          fi |}n2d| v r!t          |                      d          fi |}nt          | fi |}t          d||d| S )	Nr?   r@   rA   rI   reduce_documents_chainreduce_documents_chain_path)r?   rO   r8   )r9   rD   rE   r:   rL   r   _load_reduce_documents_chainr   )r.   r0   rF   r?   r)   rO   s         r*    _load_map_reduce_documents_chainrR      s`    f!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF		Gooi** 3	33oo6))!7JJ/00"
 "
"
 "
 
'&	0	0!+JJ455"
 "
"
 "

 ">f!O!O!O!O" 5    r,   r   c                   d }d }d| v r#|                      d          }t          |fi |}nd| v r#|                      d          }t          |fi |}n[d| v r!t          |                      d          fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d| v r(|                      d          }|d }nt          |fi |}nud| v r!t          |                      d          fi |}nPd| v r(|                      d          }|d }n2t          |fi |}n$d	| v r t          |                      d	          fi |}t	          d||d
| S )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)rT   rY   r8   )r9   rD   rE   r:   r   )r.   r0   rT   rY   combine_document_chain_configr)   collapse_document_chain_configs          r*   rQ   rQ      sk   "# F**(.

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

3K(L(L%"8)#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
 
'&	0	0",JJ455#
 #
#
 #
> 	 oo!V++)/4N)O)O&)1'+$$'=.( (( ($$ 
)F	2	2#-JJ677$
 $
$
 $
   
#f	,	,)/4M)N)N&)1'+$$'=.( (( ($$ 
(6	1	1#-JJ566$
 $
$
 $
 
    7!9    r,   c                $    d}t          |          )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r.   r0   r)   s      r*   _load_llm_bash_chainrc      s    	X  c
"
""r,   r   c           	     X   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d| v r%|                      d          }t	          |          }n&d| v r"t          |                      d                    }d| v r%|                      d          }t	          |          }n&d| v r"t          |                      d                    }d| v r%|                      d          }	t	          |	          }
n&d	| v r"t          |                      d	                    }
d
| v r%|                      d
          }t	          |          }n&d| v r"t          |                      d                    }t          d||||
|d| S )Nr2   r3   r4   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)r2   re   rg   ri   rk   r8   )r9   r    r   r:   r
   r	   r   )r.   r0   r;   r2   r)   !create_draft_answer_prompt_configre   list_assertions_prompt_configrg   check_assertions_prompt_configri   revised_answer_prompt_configrk   s                r*   _load_llm_checker_chainrq   	  s   ZZ&&
":8888	v		vzz*--8888;oo#v--,2JJ7S,T,T)%<-&
 &
"" 
+f	4	4%0JJ899&
 &
"  6))(.

3K(L(L%!89V!W!W	&&	0	0!,VZZ8U-V-V!W!W F**)/4M)N)N&"9*#
 #
 
(6	1	1"-JJ566#
 #
 &(('-zz2I'J'J$ 78T U U	%	/	/ +FJJ7S,T,T U U #=5 73    r,   r   c                6   d }d| v r#|                      d          }t          |fi |}nd| v r!t          |                      d          fi |}n]d| v r#|                      d          }t          |fi |}n6d| v r!t	          |                      d          fi |}nd}t          |          d| v r%|                      d          }t          |          }n&d| v r"t          |                      d                    }|rt          d
||d| S t          d
||d	| S )Nr?   r@   r2   r3   rA   r5   r6   )r?   r5   r7   r8   )	r9   rD   rE   r    r   r:   r
   r	   r   )	r.   r0   r?   rF   r;   r2   r)   r<   r5   s	            r*   _load_llm_math_chainrs   8  sk   If!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF			&ZZ&&
":8888 
v		vzz*--8888Goo6

8,,(77	&	 	 VZZ6677 JIiII&III9C99&999r,   r   c                    d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          dd|i| S )Nr?   r@   rA   r8   )r9   rD   rE   r:   r   )r.   r0   rF   r?   r)   s        r*    _load_map_rerank_documents_chainru   T  s     f!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF		Goo"AAYA&AAAr,   c                $    d}t          |          )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`   rb   s      r*   _load_pal_chainrw   c  s    	X  c
"
""r,   r   c                4   d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d| v r%|                      d          }t	          |          }n&d| v r"t          |                      d                    }t          d
|||d	| S )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.rJ   rK   )ry   r{   rJ   r8   )r9   rD   rE   r:   r
   r	   r   )	r.   r0   initial_llm_chain_configry   r)   refine_llm_chain_configr{   r<   rJ   s	            r*   _load_refine_documents_chainr   m  sv   f$$#)::.A#B#B 23KVVvVV	!V	+	+&vzz2J'K'KVVvVVWooV##"(**-?"@"@12ITTVTT	 F	*	*%fjj1H&I&ITTVTTUooF""

#4551-@@	6	)	)%fjj1G&H&HII +)'  	  r,   r   c                    d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          dd|i| S )NrT   rV   rX   r8   )r9   rD   rE   r:   r   )r.   r0   combine_documents_chain_configrT   r)   s        r*   _load_qa_with_sources_chainr     s     F**)/4M)N)N&"8*#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
> 	 ooXX6MXQWXXXr,   c                $    d}t          |          )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`   rb   s      r*   _load_sql_database_chainr     s    	>  c
"
""r,   r   c                0   d|v r|                     d          }nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          d||d| S Nvectorstorez`vectorstore` must be present.rT   rV   rX   )rT   r   r8   )r9   r:   rD   rE   r   r.   r0   r   r)   r   rT   s         r*   %_load_vector_db_qa_with_sources_chainr     s     jj//.oo F**)/4M)N)N&"8*#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
> 	 oo%  7    r,   r   c                0   d|v r|                     d          }nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          d||d| S N	retrieverz`retriever` must be present.rT   rV   rX   )rT   r   r8   )r9   r:   rD   rE   r   r.   r0   r   r)   r   rT   s         r*   _load_retrieval_qar     s    fJJ{++		,oo F**)/4M)N)N&"8*#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
> 	 oo  7    r,   r   c                0   d|v r|                     d          }nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          d||d| S r   )r9   r:   rD   rE   r   r   s         r*   %_load_retrieval_qa_with_sources_chainr     s     fJJ{++		,oo F**)/4M)N)N&"8*#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
> 	 oo&  7    r,   r   c                0   d|v r|                     d          }nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          t	          d||d| S r   )r9   r:   rD   rE   r   r   s         r*   _load_vector_db_qar     s    jj//.oo F**)/4M)N)N&"8*#
 #
#
 #
 
(6	1	1",JJ566#
 #
#
 #
> 	 oo  7    r,   r   c                   d|v r|                     d          }nd}t          |          d| v r#|                      d          }t          |fi |}nd}t          |          d| v r#|                      d          }t          |fi |}nd}t          |          	 ddlm} n$# t
          $ r}	d	}t          |          |	d }	~	ww xY w |d|||d
| S )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   r8   )r9   r:   rD   *langchain_community.chains.graph_qa.cypherr   r'   )
r.   r0   r   r)   cypher_generation_chain_configr   qa_chain_configr   r   es
             r*   _load_graph_cypher_chainr   +  sS   &

7##(oo F**)/4M)N)N&"8*#
 #
#
 #

 ;ooV **Z00)/DDVDD+oo&QQQQQQQ & & &H 	
 #A%&   7  	  s   B$ $
C.C  Cr   c                   d| v r#|                      d          }t          |fi |}n8d| v r#t          |                      d                    }nd}t          |          d| v r#|                      d          }t          |fi |}n6d| v r!t          |                      d          fi |}nd}t          |          d|v r|                     d          }nd}t          |          t	          d
|||d	| S )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   r8   )r9   rD   rE   r:   r   )r.   r0   api_request_chain_configr   r)   api_answer_chain_configr   r   s           r*   _load_api_chainr   R  sO   f$$#)::.A#B#B 23KVVvVV	!V	+	+&vzz2J'K'KLLWooV##"(**-?"@"@12ITTVTT	 F	*	*%fjj1H&I&ITTVTTUooV##!::&8993oo +))  	  r,   r   c                p   	 ddl m} n$# t          $ r}d}t          |          |d }~ww xY wd| v r#|                     d          }t	          |fi |}n6d| v r!t          |                     d          fi |}nd}t          |          d|v r |                    d          } |d	||d| S  |d	d|i| S )
Nr   r   zTo use this LLMRequestsChain functionality you must install the langchain package. You can install it with `pip install langchain`r?   r@   rA   r   )r?   r   r8   )%langchain_classic.chains.llm_requestsr   r'   r9   rD   rE   r:   )r.   r0   r   r   r)   rF   r?   r   s           r*   _load_llm_requests_chainr   p  s9   &JJJJJJJ & & &> 	
 #A%& f!::k22*+;FFvFF			V	#	#vzz*:;;FFvFF		GooV##!::&899 
-
 
 
 
 	

 ::i:6:::s   	 
*%*	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_chainrO   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removalr   c                    d| vrd}t          |          |                     d          }|t          vrd| d}t          |          t          |         } || fi |S )zLoad chain from Config Dict._typez#Must specify a chain Type in configzLoading z chain not supported)r:   r9   type_to_loader_dict)r.   r0   r)   config_typechain_loaders        r*   rD   rD     s{     f3oo**W%%K---::::oo&{3L<))&)))r,   path
str | Pathc                    t          | t                    r&|                     d          rd}t          |          t	          | fi |S )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.)rL   str
startswithRuntimeError_load_chain_from_file)r   r0   r)   s      r*   rE   rE     sY     $  !9!9   	
 3 00000r,   filec                H   t          | t                    rt          |           n| }|j        dk    rA|                                5 }t          j        |          }ddd           n# 1 swxY w Y   nl|j                            d          rA|                                5 }t          j	        |          }ddd           n# 1 swxY w Y   nd}t          |          d|v r|                    d          |d<   d|v r|                    d          |d<   t          |fi |S )zLoad chain from file.z.jsonN)z.yamlz.ymlzFile type must be json or yamlverbosememory)rL   r   r   suffixopenjsonloadendswithyaml	safe_loadr:   r9   rD   )r   r0   	file_pathfr.   r)   s         r*   r   r     s    )s33=T


I7""^^ 	"Yq\\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"			"	"#4	5	5 ^^ 	'^A&&F	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' /oo F"JJy11y6!::h//x "&33F333s$   A''A+.A+!CC	C)r!   r   r"   r   r#   r$   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r.   r/   r0   r   r#   r   )r   r   r0   r   r#   r   )r   r   r0   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=   rG   rM   rR   rQ   rc   rq   rs   ru   rw   r   r   r   r   r   r   r   r   r   r   r   rD   rE   r   r8   r,   r*   <module>r      s   ' ' " " " " " "        % % % % % % % %  * * * * * *          : 9 9 9 9 9 6 6 6 6 6 6 / / / / / /           S R R R R R P P P P P P K K K K K K 1 1 1 1 1 1 E E E E E E ? ? ? ? ? ? L L L L L L           O N N N N N N N GMMMMMMFFFFFFOOOOOOOOO           * V6 6 6 60   ,   <" " " "JB B B BJ# # # #, , , ,^: : : :8B B B B# # # #   <Y Y Y Y*
# 
# 
# 
#   B   <   B   <$ $ $ $N   <; ; ; ;:"  *	
 0 * 2  8 8 !"B : !"B : 2  &'L!" &#$ ''L2)   0 
	O   * * * * 
	O   	1 	1 	1 	14 4 4 4 4 4s   B# #B32B3