langgraph-codeact:实现复杂任务的高效编程架构
langgraph-codeact 项目地址: https://gitcode.com/gh_mirrors/la/langgraph-codeact
项目介绍
langgraph-codeact 是一个开源库,它实现了 CodeAct 架构在 LangGraph 中的运用。CodeAct 架构提供了一种替代 JSON 函数调用的方法,使得在更少的步骤中解决更复杂的任务成为可能。这一架构利用图灵完备编程语言(如本项目使用的 Python)的强大功能,组合和转换多个工具的输出。
项目技术分析
langgraph-codeact 基于 CodeAct 架构,允许用户定义和使用自定义工具,以及 LangChain 和 MCP 工具。它支持在对话回合之间保存消息历史和 Python 变量,从而使得复杂的交互和任务执行成为可能。此外,langgraph-codeact 提供了两种获取结果的方式:.invoke() 用于获取最终结果,而 .stream() 用于获取逐令牌输出。这使得它非常灵活,适用于各种复杂的编程任务。
项目及技术应用场景
langgraph-codeact 适用于需要执行复杂计算或任务调度的场景。例如,在一个数学问题求解的应用中,它可以定义数学工具,通过对话的形式接收用户输入的问题,并利用这些工具来计算和返回答案。以下是几个具体的应用场景:
- 教育辅助:辅助学生通过对话形式解决数学或科学问题,提供逐步指导和解答。
- 智能编程助手:在编程过程中提供代码执行和调试的支持,自动调用相关工具来优化代码。
- 数据分析:在数据分析任务中,自动选择和组合适当的工具来处理数据,生成报告。
项目特点
以下是 langgraph-codeact 的几个主要特点:
- 消息历史保存:在对话回合之间保存消息历史,支持后续问题的跟进。
- 变量持久化:Python 变量在对话回合之间保持状态,使得复杂的交互成为可能。
- 自定义工具支持:用户可以自由定义和使用任何自定义工具,LangChain 工具,或 MCP 工具。
- 灵活的输出方式:通过 .invoke() 和 .stream() 方法,用户可以选择获取最终结果或逐令牌输出。
- 模型兼容性:langgraph-codeact 支持任何 LangChain 支持的模型,尽管目前仅测试了 Claude 3.7。
- 自定义代码沙盒:用户可以提供自己的代码沙盒,并使用简单的函数式 API 进行交互。
- 系统消息自定义:用户可以自定义系统消息,以满足特定需求。
实际应用示例
以下是一个使用 langgraph-codeact 解决数学问题的例子:
-
定义工具:定义一系列数学函数,如加法、乘法、除法等。
-
自定义代码沙盒:提供一个沙盒环境来执行代码,这里使用了
eval
函数进行演示(注意:生产环境中应使用沙盒环境来保证安全)。 -
创建 CodeAct 图:初始化聊天模型,创建 CodeAct 实例,并编译为 Agent。
-
运行:通过对话的形式接收问题,并使用 Agent 的 .stream() 方法获取逐令牌输出,或使用 .invoke() 方法获取最终答案。
# 示例代码片段
messages = [{
"role": "user",
"content": "一个棒球运动员以45.847 m/s的速度击打棒球,角度为23.474°。外野手面对击球手接住球后,以24.12 m/s的速度、39.12°的角度将球抛回。球从击球手击球的地方到球落地的距离是多少?假设忽略空气阻力。"
}]
for typ, chunk in agent.stream(
{"messages": messages},
stream_mode=["values", "messages"],
config={"configurable": {"thread_id": 1}},
):
if typ == "messages":
print(chunk[0].content, end="")
elif typ == "values":
print("\n\n---答案---\n\n", chunk)
通过这样的架构,langgraph-codeact 极大地提高了编程任务的处理效率和灵活性,适用于多种复杂任务场景。开发者可以轻松地集成和使用该库,以构建更加智能和高效的应用程序。
langgraph-codeact 项目地址: https://gitcode.com/gh_mirrors/la/langgraph-codeact