引言
在人工智能应用的开发过程中,从一个框架迁移到另一个框架可能是一个复杂的过程。本文将深入探讨如何从传统的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—