从LangChain到LangGraph:轻松迁移指南

引言

在人工智能应用的开发过程中,从一个框架迁移到另一个框架可能是一个复杂的过程。本文将深入探讨如何从传统的LangChain代理迁移到LangGraph代理,这将为您的工具调用和对话管理带来更大的灵活性。

主要内容

1. 安装和设置

确保已安装所需的依赖包:

%%capture --no-stderr
%pip install -U langgraph langchain langchain-openai

设置OpenAI的API密钥,以支持语言模型调用:

import os
os.environ["OPENAI_API_KEY"] = "sk-..."  # 请替换为您的API密钥

2. 基本使用

使用LangGraph的ReAct代理执行器与传统LangChain中的AgentExecutor一样简单。以下是创建模型和工具并使用它们创建代理的基本步骤:

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)?"

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

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,
}

3. 提示模板

在LangGraph中,您可以通过state_modifier参数来实现自定义控制。以下示例演示如何让代理仅以西班牙语响应:

from langgraph_core.messages import SystemMessage

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)]})

4. 内存管理和持久化

LangGraph提供的checkpointer可以让您的代理支持对话记忆:

from langgraph.checkpoint import MemorySaver

memory = MemorySaver()
app = create_react_agent(model, tools, state_modifier=system_message, checkpointer=memory)

代码示例

以下是一个完整的LangGraph使用示例:

from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint import MemorySaver

system_message = "You are a helpful assistant."
memory = MemorySaver()

app = create_react_agent(model, tools=[magic_function], state_modifier=system_message, checkpointer=memory)

query = "Hi, I'm Polly! What's the output of magic_function(3)?"

config = {"configurable": {"thread_id": "test-thread"}}
print(app.invoke({"messages": [("user", query)]}, config)["messages"][-1].content)

常见问题和解决方案

网络限制问题

由于一些地区的网络限制,可能需要使用API代理服务以提高访问稳定性。

迭代和超时控制

LangGraph提供了灵活的递归和超时管理,通过recursion_limit和step_timeout可以有效控制代理的执行。

总结和进一步学习资源

通过本文,您已经了解如何将LangChain代理迁移到LangGraph。建议进一步学习LangGraph的其他高级功能以增强您的应用。

参考资料

  • LangChain官方文档
  • LangGraph官方文档

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值