AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

五分鐘了解 LangChain 的路由鏈

來源: 責編: 時間:2024-06-25 17:18:28 128觀看
導讀上篇文章《5分鐘理透LangChain的Chain》里用到了順序鏈SequentialChain,它可以將多個鏈按順序串起來。本文介紹LangChain里的另外1個重要的鏈:路由鏈。1. 路由鏈概念路由鏈(RouterChain)是由LLM根據輸入的Prompt去選擇具

上篇文章《5分鐘理透LangChain的Chain》里用到了順序鏈SequentialChain,它可以將多個鏈按順序串起來。本文介紹LangChain里的另外1個重要的鏈:路由鏈。zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

1. 路由鏈概念

路由鏈(RouterChain)是由LLM根據輸入的Prompt去選擇具體的某個鏈。路由鏈中一般會存在多個Prompt,Prompt結合LLM決定下一步選擇哪個鏈。zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

2. 路由鏈的使用場景

路由鏈一般涉及到2個核心類,LLMRouterChain和MultiPromptChain,一起看看官網介紹:zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

  • LLMRouterChain:使用LLM路由到可能的選項中。
  • MultiPromptChain:該鏈可用于在多個提示詞之間路由輸入,當你有多個提示詞并且只想路由到其中一個時,可以用這個鏈。

一般使用路由鏈時,有固定的幾個步驟:zjK28資訊網——每日最新資訊28at.com

  • 準備多個鏈的Prompt提示詞,然后各自封裝成鏈。
  • 將可能路由到的鏈封裝到destination_chains里。
  • 構建多提示詞和RouterChain ,負責選擇下一個要調用的鏈。
  • 構建默認鏈。
  • 使用MultiPromptChain選擇某個鏈,然后再去執行此鏈。

3. 使用路由鏈的案例zjK28資訊網——每日最新資訊28at.com

假設我們有一個常見的場景,根據用戶的輸入內容選擇不同的處理路徑,如果沒有選到合適的鏈,則使用默認鏈。比如:根據用戶的輸入問題,選擇不同的鏈去處理,如果沒選到合適的,則走默認鏈。zjK28資訊網——每日最新資訊28at.com

具體代碼如下:zjK28資訊網——每日最新資訊28at.com

from langchain_openai import ChatOpenAImodel = ChatOpenAI(    model_name="gpt-3.5-turbo",    openai_api_key="sk-xxxx",    openai_api_base="https://api.302.ai/v1",)from langchain.chains.router import LLMRouterChain, MultiPromptChainfrom langchain.chains.router.llm_router import RouterOutputParserfrom langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATEfrom langchain.chains import LLMChain, ConversationChainfrom langchain.prompts import PromptTemplate# 準備2條目的鏈:一條物理鏈,一條數學鏈# 1. 物理鏈physics_template = """你是一位物理學家,擅長回答物理相關的問題,當你不知道問題的答案時,你就回答不知道。具體問題如下:{input}"""physics_prompt = PromptTemplate.from_template(physics_template)physics_chain = LLMChain(llm=model, prompt=physics_prompt)# 2. 數學鏈math_template = """你是一個數學家,擅長回答數學相關的問題,當你不知道問題的答案時,你就回答不知道。具體問題如下:{input}"""math_prompt = PromptTemplate.from_template(math_template)math_chain = LLMChain(llm=model, prompt=math_prompt)# 3. 英語鏈english_template = """你是一個非常厲害的英語老師,擅長回答英語相關的問題,當你不知道問題的答案時,你就回答不知道。具體問題如下:{input}"""english_prompt = PromptTemplate.from_template(english_template)english_chain = LLMChain(llm=model, prompt=english_prompt)######### 所有可能的目的鏈destination_chains = {}destination_chains["physics"] = physics_chaindestination_chains["math"] = math_chaindestination_chains["english"] = english_chain######### 默認鏈default_chain = ConversationChain(llm=model, output_key="text")# 讓多路由模板 能找到合適的 提示詞模板destinations_template_str = """physics:擅長回答物理問題math:擅長回答數學問題english:擅長回答英語問題"""router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(    destinations=destinations_template_str)# 通過路由提示詞模板,構建路由提示詞router_prompt = PromptTemplate(    template=router_template,    input_variables=["input"],    output_parser=RouterOutputParser(),)######### 路由鏈router_chain = LLMRouterChain.from_llm(llm=model, prompt=router_prompt)######### 最終的鏈multi_prompt_chain = MultiPromptChain(    router_chain=router_chain,    destination_chains=destination_chains,    default_chain=default_chain,    verbose=True,)# multi_prompt_chain.invoke({"input": "重力加速度是多少?"})# multi_prompt_chain.invoke("y=x^2+2x+1的導數是多少?")multi_prompt_chain.invoke("將以下英文翻譯成中文,只輸出中文翻譯結果:/n The largest community building the future of LLM apps.")# multi_prompt_chain.invoke("你是怎么理解java的面向對象的思想的?")

執行結果跟我們預想的一致,執行結果如下:zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

zjK28資訊網——每日最新資訊28at.com

4. 總結

這篇博客主要介紹了LangChain中的路由鏈(RouterChain)的概念,它主要用在不確定性的場景下,根據提示詞,選擇具體的某個鏈去執行。還聊了它的使用場景和具體案例,希望對你有幫助!zjK28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-96425-0.html五分鐘了解 LangChain 的路由鏈

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: TC39全新提案【Signals】V0草案已公布,狀態管理將迎來全新革命?

下一篇: 2024 Vue 最全的生態工具組合推薦指南

標簽:
  • 熱門焦點
Top