另请参见:
- https://github.com/OpenAdaptAI/SoM
- https://github.com/OpenAdaptAI/pynput
- https://github.com/OpenAdaptAI/atomacos
OpenAdapt:基于大型多模态模型(LMMs)的AI优先流程自动化。
OpenAdapt 是大型多模态模型(LMMs)与传统桌面和网络图形用户界面(GUIs)之间的开源软件适配器。
大量的精神劳动浪费在重复的GUI流程上。
基础模型(例如 GPT-4、ACT-1)是强大的自动化工具。
OpenAdapt 将基础模型连接到GUIs:
早期演示(即将推出更多!):
- https://twitter.com/abrichr/status/1784307190062342237
- https://www.loom.com/share/9d77eb7028f34f7f87c6661fb758d1c0
欢迎来到OpenAdapt!这个Python库通过大型多模态模型(LMMs)的力量实施AI优先流程自动化,其功能包括:
- 录制截图和相关用户输入
- 聚合和可视化用户输入和录音以便开发
- 将截图和用户输入转换为标记格式
- 通过变换模型完成生成合成输入
- 通过分析录音生成任务树(进行中)
- 重播合成输入完成任务(进行中)
目标类似于机器人流程自动化,只是我们使用大型多模态模型而不是传统的RPA工具。
方向与Adept.ai相近,有一些关键区别:
- OpenAdapt是模型无关的。
- OpenAdapt通过从人类演示中学习(自动提示,不是用户提示)自动生成提示。这意味着代理基于现有流程,从而减少虚假想象并确保任务成功完成。
- OpenAdapt适用于所有类型的桌面GUIs,包括虚拟化(例如Citrix)和网络。
- OpenAdapt是开源的(MIT许可证)。
安装
安装脚本
Windows
- 按下Windows键,输入“powershell”,然后按Enter
- 将以下命令复制并粘贴到终端,然后按Enter(如果提示“用户账户控制”,点击“是”):
Start-Process powershell -Verb RunAs -ArgumentList '-NoExit', '-ExecutionPolicy', 'Bypass', '-Command', "iwr -UseBasicParsing -Uri 'https://raw.githubusercontent.com/OpenAdaptAI/OpenAdapt/main/install/install_openadapt.ps1' | Invoke-Expression"
MacOS
- 下载并安装Git和Python 3.10
- 按下Command+Space,输入“terminal”,然后按Enter
- 将以下命令复制并粘贴到终端,然后按Enter:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/OpenAdaptAI/OpenAdapt/HEAD/install/install_openadapt.sh)"
手动安装
前提条件:
- Python 3.10
- Git
- Tesseract(用于OCR)
- nvm(Node版本管理器)
要设置上述任何/所有依赖项,请按照SETUP.md中的步骤进行。
- 视频录制硬件加速 (需要帮助)
- 音频旁白 (需要帮助)
- Chrome 扩展 (需要帮助)
- Gemini 视觉 (需要帮助)
回放问题陈述
我们的目标是自动化在 Recording
中描述和演示的任务。
也就是说,给定一个新的 Screenshot
,我们希望根据之前记录的 ActionEvent
生成适当的 ActionEvent
(s),以完成在
Recording.task_description
中指定并由用户在
AudioInfo.words_with_timestamps
叙述的任务,同时考虑屏幕分辨率、窗口大小、应用程序行为等差异。
如果不清楚给定 Screenshot
的适当 ActionEvent
是什么,(例如,如果 GUI 应用程序的行为我们以前没见过),我们可以请用户暂时接管,演示适当的操作步骤。
数据模型
数据模型由以下实体组成:
Recording
:包含有关屏幕尺寸、平台和其他元数据的信息。ActionEvent
:表示用户操作事件,例如鼠标单击或按键。每个ActionEvent
都有一个相关的在事件发生前拍摄的Screenshot
。ActionEvent
被聚合以删除不必要的事件(参见 visualize。)Screenshot
:包含录制期间拍摄的截图的 PNG 数据。WindowEvent
:表示窗口事件,例如窗口标题、位置或大小的变化。
API
你可以假设你有以下函数的访问权限:
create_recording("做税务")
:创建一个录音。get_latest_recording()
:获取最新的录音。get_events(recording)
:返回给定录音的ActionEvent
对象列表。
请参阅 GitBook 文档 了解更多信息。
说明
加入我们 Discord。然后:
- Fork 此存储库并将其克隆到本地计算机。
- 按照 Setup 下的说明来启动和运行 OpenAdapt。
- 浏览 https://github.com/OpenAdaptAI/OpenAdapt/issues 上的开放问题列表,一旦找到你想要解决的一个问题,请发表评论表明你的兴趣。
- 实现你选择的问题的解决方案。为你的实现编写单元测试。
- 向该存储库提交一个 Pull Request (PR)。注意:在你的实现完成之前提交 PR(例如,高级文档和/或实现存根)是受鼓励的,因为它为我们提供了 提供早期反馈和迭代该方法的机会。
评估标准
你的提交将根据以下标准进行评估:
-
功能 :你的实现应正确生成新的
ActionEvent
对象,这些对象可以回放以完成原始录音中的任务。 -
代码质量 :你的代码应该结构良好,简洁且易于理解。
-
可扩展性 :你的解决方案应高效并且在大型数据集上具有良好的可扩展性。
-
测试 :你的测试应涵盖各种边缘情况和场景,以确保实现的正确性。
提交
-
将你的更改提交到你的 forked 存储库。
-
创建一个 pull request,将你的更改提交到原始存储库。
-
在你的 pull request 中,包括你的方法简要概述、你做出的任何假设以及你如何集成外部库。
-
奖励:鼓励与 ChatGPT 和/或其他语言转换模型进行交互以生成代码和/或评估设计决策。如果你选择这样做,请包括完整的对话记录。
故障排除
MacOS: 如果你遇到系统警报消息或在进行和回放录音时发现问题,请确保 相应设置权限。
概而言之(来自 https://stackoverflow.com/a/69673312 ):
- 设置 -> 安全性与隐私
- 点击隐私标签
- 滚动并点击辅助行
- 点击 +
- 导航到 /System/Applications/Utilities/(或终端应用所在的位置)
- 点击确定。
开发
生成迁移(编辑模型后)
在 openadapt
目录(包含 alembic.ini
)中:
alembic revision --autogenerate -m "<消息>"
提交前钩子
为了确保代码质量和一致性,OpenAdapt 使用提交前钩子。这些钩子将在每次提交之前自动执行,以对你的代码库进行各种检查和验证。
OpenAdapt 使用以下提交前钩子:
- check-yaml:验证 YAML 文件的语法和结构。
- end-of-file-fixer:确保文件以换行符结尾。
- trailing-whitespace:检测并删除行末的尾随空格。
- black:格式化 Python 代码以符合 Black 代码风格。特别是,使用了
--preview
功能。 - isort:以一致和标准化的方式排序 Python 导入语句。
要设置提交前钩子,请按照以下步骤操作:
-
导航到你的 OpenAdapt 存储库的根目录。
-
运行以下命令以安装钩子:
pre-commit install
现在,提交前钩子已安装,并将在每次提交之前自动运行。它们将实施代码质量标准,并防止提交不符合定义检查的代码。
状态检查
当你提交 PR 时,将触发 "Python CI" 工作流程以确保代码一致性。它按照有序步骤审核你的代码:
-
Python Black 检查 :此步骤使用 Python Black 样式验证代码格式,带有
--preview
标志以适应样式。 -
Flake8 检查 :接下来,Flake8 工具会彻底检查代码结构,包括 flake8-annotations 和 flake8-docstrings。尽管 GitHub Actions 自动化了检查,但建议在最终确定更改之前在本地运行
flake8 .
,以便更快地发现和解决问题。
提交问题
请提交任何问题到 https://github.com/OpenAdaptAI/OpenAdapt/issues,并包括以下信息:
- 问题描述(请包括任何相关的控制台输出和/或截图)
- 重现步骤(请帮助别人帮助你!)