関連リンク:
- https://github.com/OpenAdaptAI/SoM
- https://github.com/OpenAdaptAI/pynput
- https://github.com/OpenAdaptAI/atomacos
OpenAdaptは、大規模マルチモーダルモデル(LMM)と従来のデスクトップおよびWebグラフィカルユーザーインターフェース(GUI)の間のオープンソースソフトウェアアダプターです。
初期デモ(近日更に追加予定!):
- https://twitter.com/abrichr/status/1784307190062342237
- https://www.loom.com/share/9d77eb7028f34f7f87c6661fb758d1c0
OpenAdaptへようこそ!このPythonライブラリは、大規模マルチモーダルモデル(LMM)の力によりAI主導プロセス自動化を実装します:
- スクリーンショットと関連するユーザー入力を記録
- 開発のためのユーザー入力と記録の集約と可視化
- スクリーンショットとユーザー入力をトークン化フォーマットに変換
- トランスフォーマーモデル補完による合成入力の生成と再生
- 記録ログの分析によるプロセスグラフの生成(作業中)
目標はロボティックプロセスオートメーションと似ていますが、従来のRPAツールの代わりに大規模マルチモーダルモデルを使用します。
方向性はAdept.aiに近く、いくつかの重要な違いがあります:
- OpenAdaptはモデルに依存しません。
- OpenAdaptは人間のデモンストレーションから学習することで自動的にプロンプトを生成します(自動プロンプト、ユーザープロンプトではない)。これはエージェントが既存のプロセスに基づいていることを意味し、幻覚を軽減し、タスクの成功を保証します。
- OpenAdaptは仮想化(例:Citrix)およびWebを含むすべてのタイプのデスクトップGUIで動作します。
- OpenAdaptはオープンソース(MITライセンス)です。
| インストール方法 | 推奨対象 | 使いやすさ |
|---|---|---|
| スクリプト | 非技術者 | セットアップ手順に不慣れなユーザーのインストールプロセスを簡素化 |
| 手動 | 技術者 | インストールプロセス中により多くの制御とカスタマイゼーションを可能にする |
- 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"
- 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 version manager)
上記の依存関係のセットアップについては、SETUP_ja.mdの手順に従ってください。
Poetryを使用してインストール:
git clone https://github.com/OpenAdaptAI/OpenAdapt.git
cd OpenAdapt
pip3 install poetry
poetry install
poetry shell
poetry run postinstall
cd openadapt && alembic upgrade head && cd ..
pytest
macOSでシステム権限を設定する方法については、こちらを参照してください。
以下のopenadaptコマンドを実行する前に、新しいターミナルウィンドウ(OpenAdaptルートディレクトリ内)で毎回実行してください:
poetry shell
以下のようなものが表示されるはずです:
% poetry shell
Using python3.10 (3.10.13)
...
(openadapt-py3.10) %
環境プレフィックス(openadapt-py3.10)に注目してください。
以下のコマンドを実行してシステムトレイアイコンを起動し、Webダッシュボードを立ち上げます:
python -m openadapt.entrypoint
このコマンドは設定を出力し、データベースを最新のマイグレーションに更新し、システムトレイアイコンを起動してWebダッシュボードを立ち上げます。
以下のコマンドを実行して新しい記録を作成します:
python -m openadapt.record "openadaptをテスト中"
すべての3つのイベントライターが開始されるまで待ちます:
| INFO | __mp_main__:write_events:230 - event_type='screen' starting
| INFO | __mp_main__:write_events:230 - event_type='action' starting
| INFO | __mp_main__:write_events:230 - event_type='window' starting
ターミナルに数語入力し、画面上でマウスを動かしてイベントを生成し、CTRL+Cを押して記録を停止します。
現在の制限事項:
- 記録はメモリを多く使用し、現在未解決の問題でメモリリークの可能性が記述されているため、短時間(1分未満)にする必要があります
- 現在サポートされているタッチパッドとトラックパッドのジェスチャーは、カーソルの指示と左または右クリックのみです。詳細はこの未解決の問題を参照してください
以下のコマンドを実行して、作成した最新の記録をすばやく可視化します:
python -m openadapt.visualize
これによりHTMLファイルが生成され、以下のようなブラウザのタブが開きます:
より強力なダッシュボードには、以下を実行します:
python -m openadapt.app.dashboard.run
これによりローカルでWebサーバーが起動し、以下のようなブラウザのタブが開きます:
以下のコマンドを使用して記録を再生できます:
python -m openadapt.replay NaiveReplayStrategy
その他の再生戦略には以下があります:
StatefulReplayStrategy: OS レベルのウィンドウデータを介して構築されたプロンプトでOpenAI GPT-4 APIを使用する初期概念実証。- (*)
VisualReplayStrategy: アクティブウィンドウをセグメント化するためにFast Segment Anything Model (FastSAM)を使用。 - (*)
VanillaReplayStrategy: モデルが状態とアクションを正確に直接推論できると仮定。将来のフロンティアモデルにより、このスクリプトが突然より良く動作することを期待しています。 - (*)
VisualBrowserReplayStrategy: VisualReplayStrategyに似ていますが、ブラウザ拡張機能によって読み取られた可視DOMからセグメントを生成します。
(*)プレフィックスは、記録を変更するために使用される「instructions」パラメータを受け入れる戦略を示します。例:
python -m openadapt.replay VanillaReplayStrategy --instructions "9-8を計算"
完全なリストについては、https://github.com/OpenAdaptAI/OpenAdapt/tree/main/openadapt/strategies を参照してください。より多くのReplayStrategiesが近日登場予定です!(貢献を参照)。
Google Chrome でブラウザイベントを記録するには(BrowserReplayStrategyで必要)、以下の手順に従ってください:
-
アドレスバーにchrome://extensionsを入力してChrome拡張機能ページに移動します。
-
デベロッパーモードを有効にします(右上に配置)。 -
パッケージ化されていない拡張機能を読み込むをクリックします(左上に配置)。 -
OpenAdaptリポジトリの
chrome_extensionディレクトリを選択します。 -
Chrome拡張機能が有効になっていることを確認します(OpenAdapt拡張機能ウィジェットの右側のスイッチがオンになっている)。
-
openadapt/data/config.jsonのRECORD_BROWSER_EVENTSフラグをtrueに設定します。
Segment Anything in High Qualityによる最先端GUI理解:
AWS Comprehend、Microsoft Presidio、Private AIによる業界をリードするプライバシー(PII/PHIスクラビング):
Magic Wormholeによる分散化された安全なデータ配布:
pymplerとtracemallocによる詳細なパフォーマンス監視:
私たちは、技術の境界を押し広げることに情熱を注ぐ開発者のための新しい契約ポジションを開設することを嬉しく思います。大きなインパクトを与える準備ができている場合は、以下の役割を検討してください:
- 責任: プロセス可視化、デモ予約、アプリストア、ブログ統合などの主要機能の開発とテスト。
- スキル: 現代的なフロントエンド技術の熟練とUI/UXデザインのセンス。
- 役割: 最先端のLLM/LMMを使用したプロセス再生戦略の実装と改良。広範なプロセス記録から動的プロセス記述の抽出。
- スキル: 機械学習の強固な背景、LLM/LMMの経験、問題解決能力。
- 焦点: プロセス記録と再生中のメモリ最適化技術の強化。プロセス観察と生産性測定のための洗練されたツールの開発。
- スキル: ソフトウェア最適化、メモリ管理、分析の専門知識。
- 焦点: OpenAdaptリポジトリの維持
- スキル: ライティングおよび/またはドキュメンテーションへの情熱
- ステップ1: OpenAdaptまたはOpenAdapt.webに空のPull Requestを提出してください。PRタイトルを
[提案] <あなたのタイトル>の形式にしてください - ステップ2: PR説明に簡潔で非公式なアプローチの概要を含めてください。質問があれば遠慮なく追加してください。
- 説明が必要ですか? Discordでお声がけください。
あなたの貢献を楽しみにしています。一緒に未来を構築しましょう 🚀
私たちの目標は、Recordingで記述され実演されたタスクを自動化することです。
つまり、新しいScreenshotが与えられた時、以前に記録されたActionEventに基づいて適切なActionEventを生成し、
Recording.task_descriptionで指定され、
AudioInfo.words_with_timestampsでユーザーによって解説されたタスクを達成したいのです。
画面解像度、ウィンドウサイズ、アプリケーションの動作などの違いを考慮しながら。
指定されたScreenshotに対してどのActionEventが適切かが明確でない場合
(例:GUIアプリケーションが以前に見たことのない方法で動作している場合)、
適切な行動方針を実演するためにユーザーに一時的に引き継いでもらうことができます。
データモデルは以下のエンティティで構成されています:
Recording: 画面寸法、プラットフォーム、その他のメタデータに関する情報が含まれます。ActionEvent: マウスクリックやキー押下などのユーザーアクションイベントを表します。各ActionEventには、イベントが発生する直前に撮影された関連するScreenshotがあります。ActionEventは不要なイベントを削除するために集約されます(可視化を参照)。Screenshot: 記録中に撮影されたスクリーンショットのPNGデータが含まれます。WindowEvent: ウィンドウタイトル、位置、サイズの変更などのウィンドウイベントを表します。
以下の関数にアクセスできると仮定できます:
create_recording("税務処理中"): 記録を作成します。get_latest_recording(): 最新の記録を取得します。get_events(recording): 指定された記録のActionEventオブジェクトのリストを返します。
詳細については、GitBookドキュメンテーションを参照してください。
Discordに参加してください。その後:
- このリポジトリをフォークしてローカルマシンにクローンしてください。
- セットアップの指示に従ってOpenAdaptを起動してください。
- https://github.com/OpenAdaptAI/OpenAdapt/issues の未解決問題のリストを確認し、 対処したいものを見つけたら、コメントで関心を示してください。
- 選択した問題の解決策を実装してください。実装のユニットテストを書いてください。
- このリポジトリにPull Request(PR)を提出してください。注:実装が完了する前にPRを提出すること (例:高レベルのドキュメンテーションや実装スタブなど)は推奨されます。 早期フィードバックを提供し、アプローチを反復する機会を提供するためです。
あなたの提出は以下の基準で評価されます:
-
機能性: あなたの実装は、元の記録のタスクを達成するために再生できる新しい
ActionEventオブジェクトを正しく生成する必要があります。 -
コード品質: あなたのコードは構造化され、清潔で、理解しやすいものである必要があります。
-
スケーラビリティ: あなたのソリューションは効率的で、大きなデータセットでうまくスケールする必要があります。
-
テスト: あなたのテストは、実装の正確性を保証するために様々なエッジケースとシナリオをカバーする必要があります。
-
変更をフォークしたリポジトリにコミットしてください。
-
変更を含む元のリポジトリへのプルリクエストを作成してください。
-
プルリクエストには、アプローチの簡潔な要約、行った仮定、外部ライブラリの統合方法を含めてください。
-
ボーナス: コードの生成や設計決定の評価のためにChatGPTやその他の言語トランスフォーマーモデルとの相互作用は推奨されます。そうすることを選択した場合は、完全な記録を含めてください。
macOS: システムアラートメッセージが表示されたり、記録の作成と再生で問題が発生した場合は、権限を適切に設定してください。
要約(https://stackoverflow.com/a/69673312 より):
- 設定 -> セキュリティとプライバシー
- プライバシータブをクリック
- スクロールしてアクセシビリティ行をクリック
-
- をクリック
- /System/Applications/Utilities/ (またはTerminal.appがインストールされている場所)に移動
- OKをクリック。
openadaptディレクトリ(alembic.iniを含む)の内部から:
alembic revision --autogenerate -m "<メッセージ>"
コード品質と一貫性を保証するため、OpenAdaptはプリコミットフックを使用します。これらのフックは 各コミット前に自動的に実行され、コードベースで様々なチェックと検証を実行します。
OpenAdaptでは以下のプリコミットフックが使用されています:
- check-yaml: YAMLファイルの構文と構造を検証します。
- end-of-file-fixer: ファイルが改行文字で終わることを保証します。
- trailing-whitespace: 行末の末尾空白を検出して削除します。
- black: Blackコードスタイルに準拠するようにPythonコードをフォーマットします。特に、
--preview機能が使用されます。 - isort: Pythonインポート文を一貫した標準化された方法でソートします。
プリコミットフックを設定するには、以下の手順に従ってください:
-
OpenAdaptリポジトリのルートディレクトリに移動してください。
-
以下のコマンドを実行してフックをインストールしてください:
pre-commit install
これで、プリコミットフックがインストールされ、各コミット前に自動的に実行されます。これらはコード品質基準を強制し、定義されたチェックに合格しないコードのコミットを防ぎます。
PRを提出すると、コード一貫性のために「Python CI」ワークフローがトリガーされます。コードを確認するための組織的な手順に従います:
-
Python Black チェック: このステップは、
--previewフラグを使用してPython Blackスタイルでコードフォーマットを検証します。 -
Flake8 レビュー: 次に、Flake8ツールがflake8-annotationsとflake8-docstringsを含むコード構造を徹底的にチェックします。GitHub Actionsがチェックを自動化しますが、変更を確定する前にローカルで
flake8 .を実行することで、問題の発見と解決をより迅速に行うことができます。
以下の情報とともに、問題を https://github.com/OpenAdaptAI/OpenAdapt/issues に提出してください:
- 問題の説明(関連するコンソール出力やスクリーンショットを含めてください)
- 再現手順(他の人があなたを助けられるようにしてください!)






