在多轮对话或复杂任务中,如何智能地选择并调用合适的语言模型链(LLMChain)来处理不同类型的输入是一个重要的技术挑战。传统的 MultiPromptChain 通过一系列预定义的提示来引导模型选择,并生成响应。虽然这种方法在某些场景下有效,但它并不支持常见的聊天模型功能,例如消息角色和工具调用。而 LangGraph 提供了一些有优势的功能:
- 支持聊天提示模板,包括系统和其他角色的消息。
- 支持工具调用用于路由步骤。
- 支持逐步流式传输输出令牌。
下面我们将详细对比 MultiPromptChain 和 LangGraph 实现,并用实际代码演示如何使用 LangGraph 替代 MultiPromptChain。这篇指南中所使用的 langchain-openai 版本需高于 0.1.20。您可以使用以下命令安装所需模块:
%pip install -qU langchain-core langchain-openai langgraph
MultiPromptChain 示例
MultiPromptChain 主要通过一系列提示来实现智能路由,以下是一个简单的代码示例:
from langchain.chains.router.multi_prompt import MultiPromptChain
from langchain_openai import ChatOpenAI
# 使用稳定的AI模型服务
llm = ChatOpenAI(model="gpt-4o-mini")
# 定义不同主题的提示模板
prompt_1_template = """
You are an expert on animals. Please answer the below query:
{input}
"""
prompt_2_template = """
You are an expert on vegetables. Please answer the below query:
{input}
"""
prompt_infos = [
{
"name": "animals",
"description": "Prompt for an animal expert",
"prompt_template": prompt_1_template,
},
{
"name": "vegetables",
"description": "Prompt for a vegetable expert",
"prompt_template": prompt_2_template,
},
]
chain = MultiP