综合介绍
LangGraph CodeAct 是 LangChain AI 团队在 GitHub 上开源的一个框架,基于 CodeAct 架构(详见论文 arXiv:2402.01030)。它通过生成并执行 Python 代码,帮助智能体高效处理复杂任务。这个工具被 Manus.im 采用,相较于传统的 JSON 函数调用,它利用 Python 的完整编程能力,整合多个工具的输出,减少操作步骤。它支持消息历史和变量保存,适合连续对话或高级任务场景。截至 2025 年 3 月 29 日,项目仍在积极维护,面向 AI 开发者开放。
功能列表
- 智能体能生成并执行 Python 代码,直接完成任务。
- 保存对话历史,支持连续提问。
- 保留 Python 变量,便于后续任务引用。
- 支持
.invoke()
获取最终结果,或.stream()
获取逐步输出。 - 兼容自定义工具、LangChain 工具和 MCP 工具。
- 可搭配任意 LangChain 支持的模型(官方测试仅限 Claude 3.7)。
- 提供自定义代码沙盒接口,灵活性强。
- 系统提示词可自由调整。
使用帮助
LangGraph CodeAct 是一个面向开发者的开源框架,主要通过 Python 环境运行。以下是详细安装与使用指南,帮助你快速上手。
安装流程
使用前需准备 Python 3.8 或更高版本的环境。安装步骤如下:
- 下载项目
打开终端,输入命令克隆仓库:
git clone https://github.com/langchain-ai/langgraph-codeact.git
然后进入项目目录:
cd langgraph-codeact
- 安装核心依赖
运行以下命令安装基本依赖:
pip install langgraph-codeact
如果需要运行示例或使用特定模型(如 Claude 3.7),还需安装:
pip install langchain langchain-anthropic
- 配置环境变量
使用 Claude 模型时,需设置 Anthropic API 密钥。在终端输入:
export ANTHROPIC_API_KEY="你的密钥"
密钥可从 Anthropic 官网获取。如果使用其他模型,参考对应文档配置。
基本使用方法
安装完成后,通过 Python 脚本调用 LangGraph CodeAct。以下是操作步骤:
- 初始化智能体
创建一个简单脚本,例如run_agent.py
,输入以下代码:
from langchain.chat_models import init_chat_model
from langgraph_codeact import create_codeact
from langgraph.checkpoint.memory import MemorySaver
# 初始化模型
model = init_chat_model("claude-3-7-sonnet-latest", model_provider="anthropic")
# 创建 CodeAct 实例(无工具示例)
code_act = create_codeact(model, tools=[], eval=None)
# 编译智能体,启用内存保存
agent = code_act.compile(checkpointer=MemorySaver())
- 运行任务
输入问题,让智能体生成代码并执行。例如:messages = [{"role": "user", "content": "计算 5 的平方根"}] result = agent.invoke({"messages": messages}) print(result["messages"][-1].content)
输出类似:
sqrt(5) = 2.23606797749979
。
添加工具
官方示例提供了数学工具,增强智能体能力。以下是添加方法:
- 定义工具
在脚本中添加数学函数:from langchain_core.tools import tool import math @tool def add(a: float, b: float) -> float: """加法工具""" return a + b @tool def sqrt(a: float) -> float: """平方根工具""" return math.sqrt(a) tools = [add, sqrt]
- 集成工具
修改初始化代码:code_act = create_codeact(model, tools=tools, eval=None) agent = code_act.compile(checkpointer=MemorySaver())
现在智能体可以使用
add(3, 4)
或sqrt(16)
。
自定义代码沙盒
默认使用 eval
执行代码,但生产环境需安全沙盒。示例代码:
def custom_sandbox(code: str, _locals: dict) -> tuple[str, dict]:
try:
with open("temp.py", "w") as f:
f.write(code)
import subprocess
result = subprocess.check_output(["python", "temp.py"], text=True)
return result, {}
except Exception as e:
return f"错误: {e}", {}
将此函数传入:
code_act = create_codeact(model, tools=tools, eval=custom_sandbox)
特色功能操作
- 生成代码
输入“计算 3 和 5 的和”,智能体会生成:result = add(3, 5) print(result) # 输出 8
- 对话历史
接着问“结果加 2”,智能体会记住result
,生成:new_result = result + 2 print(new_result) # 输出 10
- 流式输出
使用.stream()
查看逐步结果:for typ, chunk in agent.stream({"messages": messages}): if typ == "messages": print(chunk[0].content, end="")
注意事项
- 生产环境避免直接用
eval
,需用沙盒保护。 - Claude 3.7 是官方推荐模型,其他模型可能需调整提示词。
- 工具定义需符合 LangChain 规范,参数类型明确。
通过以上步骤,你可以用 LangGraph CodeAct 构建智能体,解决各种任务。
应用场景
- 数学教育
学生输入题目,如“计算抛物线距离”,智能体生成代码并输出结果,帮助学习。 - 数据处理
开发者用它自动生成脚本,处理 CSV 文件或计算统计数据。 - AI 实验
研究人员测试智能体的代码生成能力,优化复杂任务流程。
QA
- 支持哪些编程语言?
当前仅支持 Python,因其为主要执行语言。 - 如何调试代码错误?
使用.stream()
查看生成代码,或检查沙盒输出错误信息。 - 可以不用工具吗?
可以,初始化时设置tools=[]
,仅靠模型生成代码。