langgraph-cua 是什么
langgraph-cua
是一个基于 LangGraph 的 Python 库,用于构建计算机使用代理(CUA,Computer Use Agent)系统。CUA 是一种能够与计算机交互并执行任务的智能代理,例如浏览网页、搜索信息、填写表单等。
🔧 核心功能
- 浏览器交互:CUA 可以模拟浏览器行为,执行网页浏览、点击、输入等操作。
- 任务执行:能够自动化执行如搜索、数据收集、信息填充等任务。
- 状态管理:支持短期和长期记忆,能够在多轮交互中保持上下文。
- 人机协作:支持人类在回路中的交互,增强任务执行的灵活性。
⚙️ 快速入门
-
安装依赖:
pip install langgraph-cua
-
配置 API 密钥:
export OPENAI_API_KEY=<your_openai_api_key> export SCRAPYBARA_API_KEY=<your_scrapybara_api_key>
-
创建并运行代理:
from langgraph_cua import create_cua from dotenv import load_dotenv import asyncio load_dotenv() cua_graph = create_cua() messages = [ {"role": "system", "content": "You're an advanced AI assistant with browser access."}, {"role": "user", "content": "Find the best price for all-season tires for a 2019 Subaru Forester."} ] async def main(): stream = cua_graph.astream({"messages": messages}, stream_mode="updates") async for update in stream: if "create_vm_instance" in update: print("VM instance created") stream_url = update.get("create_vm_instance", {}).get("stream_url") print(f"Stream URL: {stream_url}") if __name__ == "__main__": asyncio.run(main())
上述代码将启动一个代理,模拟浏览器行为,执行用户请求的任务,并提供实时更新的流式输出。
📦 版本信息
- 最新版本:
0.0.1
(发布于 2025 年 3 月 25 日) - 发布日志:GitHub Releases
🌐 相关资源
通过 langgraph-cua
,您可以构建能够模拟人类计算机操作的智能代理,适用于自动化任务、信息收集等场景。
langgraph-cua 实现的原理
langgraph-cua
是一个基于 LangGraph 的 Python 库,用于构建计算机使用代理(CUA,Computer Use Agent)系统,使 AI 能够模拟人类操作计算机执行任务,如浏览网页、填写表单、搜索信息等。
🔧 实现原理
langgraph-cua
的核心原理在于将 LangGraph 的图形计算模型与 Scrapybara 的虚拟机执行能力相结合,形成一个可执行计算机任务的智能代理系统。
1. LangGraph 图形计算模型
LangGraph 是一个用于构建代理应用的框架,支持:
- 图形化任务建模:将任务分解为多个节点,每个节点代表一个操作或决策点。
- 短期与长期记忆:支持在多轮交互中保持上下文信息。
- 人机协作:允许人类在任务执行过程中进行干预和指导。
在 langgraph-cua
中,使用 create_cua
函数创建一个 CUA 图形,该图形定义了代理的行为流程。
2. Scrapybara 虚拟机执行
langgraph-cua
默认使用 Scrapybara 作为执行环境,Scrapybara 提供:
- 虚拟机实例:支持创建 Ubuntu、Windows 等操作系统的虚拟机。
- 浏览器模拟:能够在虚拟机中运行浏览器,模拟用户的点击、输入等操作。
- 持久化会话:支持保存和复用浏览器的认证状态,避免重复登录。
通过 Scrapybara,langgraph-cua
可以在虚拟机中执行图形模型定义的任务,如访问网页、填写表单等。
3. 流式输出与实时反馈
langgraph-cua
支持任务执行的流式输出:
- 实时更新:在任务执行过程中,代理会实时发送更新信息。
- 交互式反馈:用户可以根据实时输出进行干预和指导。
这种机制使得任务执行过程更加透明和可控。
4. 零数据保留(ZDR)
为了保护用户隐私,langgraph-cua
支持零数据保留(Zero Data Retention,ZDR):
- 配置选项:通过设置
zdr_enabled=True
,代理在每次请求时都会将完整的消息历史传递给模型,而不是使用之前的响应 ID。 - 隐私保护:这种方式确保了每次交互都是独立的,不会泄露用户的历史数据。
🧱 组件架构
langgraph-cua
的主要组件包括:
- CUA 图形:定义代理的行为流程和任务逻辑。
- Scrapybara 虚拟机:提供任务执行的环境和资源。
- 流式输出机制:实现任务执行的实时反馈和交互。
- 配置系统:支持 API 密钥、认证状态、环境设置等配置。
🚀 示例代码
以下是一个使用 langgraph-cua
的示例:
from langgraph_cua import create_cua
from dotenv import load_dotenv
import asyncio
load_dotenv()
cua_graph = create_cua()
messages = [
{"role": "system", "content": "You're an advanced AI assistant with browser access."},
{"role": "user", "content": "Find the best price for all-season tires for a 2019 Subaru Forester."}
]
async def main():
stream = cua_graph.astream({"messages": messages}, stream_mode="updates")
async for update in stream:
if "create_vm_instance" in update:
print("VM instance created")
stream_url = update.get("create_vm_instance", {}).get("stream_url")
print(f"Stream URL: {stream_url}")
if __name__ == "__main__":
asyncio.run(main())
在这个示例中,代理将模拟浏览器行为,执行用户请求的任务,并提供实时更新的流式输出。
通过将 LangGraph 的图形计算模型与 Scrapybara 的虚拟机执行能力相结合,langgraph-cua
实现了一个强大的计算机使用代理系统,能够模拟人类操作计算机执行各种任务。