5分钟了解LangChain的路由链

1. 路由链概念

**路由链(RouterChain)**是由LLM根据输入的Prompt去选择具体的某个链。路由链中一般会存在多个Prompt,Prompt结合LLM决定下一步选择哪个链。

2. 路由链的使用场景

路由链一般涉及到2个核心类,LLMRouterChainMultiPromptChain,一起看看官网介绍:

  • LLMRouterChain:使用LLM路由到可能的选项中。

  • MultiPromptChain:该链可用于在多个提示词之间路由输入,当你有多个提示词并且只想路由到其中一个时,可以用这个链。

一般使用路由链时,有固定的几个步骤:

  1. 准备多个链的Prompt提示词,然后各自封装成链。

  2. 将可能路由到的链封装到destination_chains里。

  3. 构建多提示词和RouterChain ,负责选择下一个要调用的链。

  4. 构建默认链。

  5. 使用MultiPromptChain选择某个链,然后再去执行此链。

3. 使用路由链的案例

假设我们有一个常见的场景,根据用户的输入内容选择不同的处理路径,如果没有选到合适的链,则使用默认链。比如:根据用户的输入问题,选择不同的链去处理,如果没选到合适的,则走默认链。

具体代码如下:

from langchain_openai import ChatOpenAI

model = 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, MultiPromptChain
from langchain.chains.router.llm_router import RouterOutputParser
from langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATE
from langchain.chains import LLMChain, ConversationChain
from 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_chain
destination_chains["math"] = math_chain
destination_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的面向对象的思想的?")

执行结果跟我们预想的一致,执行结果如下:

4. 总结

这篇博客主要介绍了LangChain中的**路由链(RouterChain)**的概念,它主要用在不确定性的场景下,根据提示词,选择具体的某个链去执行。还聊了它的使用场景和具体案例,希望对你有帮助!

文章转载自:程序员半支烟

原文链接:https://www.cnblogs.com/mangod/p/18259931

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用的路由协议有RIP、OSPF和BGP。它们的工作原理和应用如下: 1. RIP(Routing Information Protocol)是一种基于距离向量的内部网关协议,使用跳数作为路径选择的度量标准。RIP通过周期性地交换路由信息表,将整个网络的路由信息传播给其他路由器,从而实现路由的更新和选择。 RIP的应用场景主要是小型网络,由于其较简单的算法和配置易用性,适用于需求不高、路由器数量较少的情况。 2. OSPF(Open Shortest Path First)是一种基于路状态的内部网关协议,使用最短路径作为路径选择的度量标准。OSPF通过交换路状态数据库,以相邻路由器之间的路质量来计算最优的路径。 OSPF的应用场景主要是中大型网络,具有更高的可伸缩性和更精确的路径选择能力,适用于要求较高的企业网络。 3. BGP(Border Gateway Protocol)是一种互联网边界网关协议,用于在不同自治系统之间交换路由信息。BGP通过自主系统之间的路由传递,使得不同的自治系统能够相互学习和选择最佳路径。 BGP的应用场景主要是互联网核心路由器之间,用于全球互联网的路由选择和控制,具有高度的可扩展性和灵活性。 这些常用的路由协议通过不同的工作原理和度量标准,为不同规模和要求的网络提供了灵活的路由选择方案。无论是小型的家庭网络、中大型的企业网络,还是复杂的全球互联网,这些协议都发挥着重要的作用,确保网络通信的稳定和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值