Skip to content

Open Source Generative Process Automation (i.e. Generative RPA). AI-First Process Automation with Large ([Language (LLMs) / Action (LAMs) / Multimodal (LMMs)] / Visual Language (VLMs)) Models

License

Notifications You must be signed in to change notification settings

sorawww31/OpenAdapt-Custom

 
 

Repository files navigation

Discordに参加

アーキテクチャドキュメントを読む

コメント要求に関するディスカッションに参加

関連リンク:

OpenAdapt: 大規模マルチモーダルモデル(LMM)によるAI主導プロセス自動化

OpenAdaptは、大規模マルチモーダルモデル(LMM)と従来のデスクトップおよびWebグラフィカルユーザーインターフェース(GUI)の間のオープンソースソフトウェアアダプターです。

膨大な量の精神的労働が反復的なGUIワークフローで無駄になっています。

基盤モデル(例:GPT-4, ACT-1)は強力な自動化ツールです。

OpenAdaptは基盤モデルをGUIに接続します:

image image

初期デモ(近日更に追加予定!):

OpenAdaptへようこそ!このPythonライブラリは、大規模マルチモーダルモデル(LMM)の力によりAI主導プロセス自動化を実装します:

  • スクリーンショットと関連するユーザー入力を記録
  • 開発のためのユーザー入力と記録の集約と可視化
  • スクリーンショットとユーザー入力をトークン化フォーマットに変換
  • トランスフォーマーモデル補完による合成入力の生成と再生
  • 記録ログの分析によるプロセスグラフの生成(作業中)

目標はロボティックプロセスオートメーションと似ていますが、従来のRPAツールの代わりに大規模マルチモーダルモデルを使用します。

方向性はAdept.aiに近く、いくつかの重要な違いがあります:

  1. OpenAdaptはモデルに依存しません。
  2. OpenAdaptは人間のデモンストレーションから学習することで自動的にプロンプトを生成します(自動プロンプト、ユーザープロンプトではない)。これはエージェントが既存のプロセスに基づいていることを意味し、幻覚を軽減し、タスクの成功を保証します。
  3. OpenAdaptは仮想化(例:Citrix)およびWebを含むすべてのタイプのデスクトップGUIで動作します。
  4. 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 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ファイルが生成され、以下のようなブラウザのタブが開きます:

image

より強力なダッシュボードには、以下を実行します:

python -m openadapt.app.dashboard.run

これによりローカルでWebサーバーが起動し、以下のようなブラウザのタブが開きます:

image

再生

以下のコマンドを使用して記録を再生できます:

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で必要)、以下の手順に従ってください:

  1. アドレスバーにchrome://extensionsを入力してChrome拡張機能ページに移動します。

  2. デベロッパーモードを有効にします(右上に配置)。

  3. パッケージ化されていない拡張機能を読み込むをクリックします(左上に配置)。

  4. OpenAdaptリポジトリのchrome_extensionディレクトリを選択します。

  5. Chrome拡張機能が有効になっていることを確認します(OpenAdapt拡張機能ウィジェットの右側のスイッチがオンになっている)。

  6. openadapt/data/config.jsonRECORD_BROWSER_EVENTSフラグをtrueに設定します。

機能

Segment Anything in High Qualityによる最先端GUI理解:

image

AWS ComprehendMicrosoft PresidioPrivate AIによる業界をリードするプライバシー(PII/PHIスクラビング):

image

Magic Wormholeによる分散化された安全なデータ配布:

image

pymplertracemallocによる詳細なパフォーマンス監視:

image

システムトレイアイコンとクライアントGUIアプリ(作業中)

image

その他多数!

🚀 OpenAdapt.AIでのオープン契約ポジション

私たちは、技術の境界を押し広げることに情熱を注ぐ開発者のための新しい契約ポジションを開設することを嬉しく思います。大きなインパクトを与える準備ができている場合は、以下の役割を検討してください:

フロントエンド開発者

  • 責任: プロセス可視化、デモ予約、アプリストア、ブログ統合などの主要機能の開発とテスト。
  • スキル: 現代的なフロントエンド技術の熟練と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アプリケーションが以前に見たことのない方法で動作している場合)、 適切な行動方針を実演するためにユーザーに一時的に引き継いでもらうことができます。

データモデル

データモデルは以下のエンティティで構成されています:

  1. Recording: 画面寸法、プラットフォーム、その他のメタデータに関する情報が含まれます。
  2. ActionEvent: マウスクリックやキー押下などのユーザーアクションイベントを表します。各ActionEventには、イベントが発生する直前に撮影された関連するScreenshotがあります。ActionEventは不要なイベントを削除するために集約されます(可視化を参照)。
  3. Screenshot: 記録中に撮影されたスクリーンショットのPNGデータが含まれます。
  4. WindowEvent: ウィンドウタイトル、位置、サイズの変更などのウィンドウイベントを表します。

API

以下の関数にアクセスできると仮定できます:

  • create_recording("税務処理中"): 記録を作成します。
  • get_latest_recording(): 最新の記録を取得します。
  • get_events(recording): 指定された記録のActionEventオブジェクトのリストを返します。

詳細については、GitBookドキュメンテーションを参照してください。

指示

Discordに参加してください。その後:

  1. このリポジトリをフォークしてローカルマシンにクローンしてください。
  2. セットアップの指示に従ってOpenAdaptを起動してください。
  3. https://github.com/OpenAdaptAI/OpenAdapt/issues の未解決問題のリストを確認し、 対処したいものを見つけたら、コメントで関心を示してください。
  4. 選択した問題の解決策を実装してください。実装のユニットテストを書いてください。
  5. このリポジトリにPull Request(PR)を提出してください。注:実装が完了する前にPRを提出すること (例:高レベルのドキュメンテーションや実装スタブなど)は推奨されます。 早期フィードバックを提供し、アプローチを反復する機会を提供するためです。

評価基準

あなたの提出は以下の基準で評価されます:

  1. 機能性: あなたの実装は、元の記録のタスクを達成するために再生できる新しいActionEventオブジェクトを正しく生成する必要があります。

  2. コード品質: あなたのコードは構造化され、清潔で、理解しやすいものである必要があります。

  3. スケーラビリティ: あなたのソリューションは効率的で、大きなデータセットでうまくスケールする必要があります。

  4. テスト: あなたのテストは、実装の正確性を保証するために様々なエッジケースとシナリオをカバーする必要があります。

提出

  1. 変更をフォークしたリポジトリにコミットしてください。

  2. 変更を含む元のリポジトリへのプルリクエストを作成してください。

  3. プルリクエストには、アプローチの簡潔な要約、行った仮定、外部ライブラリの統合方法を含めてください。

  4. ボーナス: コードの生成や設計決定の評価のためにChatGPTやその他の言語トランスフォーマーモデルとの相互作用は推奨されます。そうすることを選択した場合は、完全な記録を含めてください。

トラブルシューティング

macOS: システムアラートメッセージが表示されたり、記録の作成と再生で問題が発生した場合は、権限を適切に設定してください。

MacOS System Alerts

要約(https://stackoverflow.com/a/69673312 より):

  1. 設定 -> セキュリティとプライバシー
  2. プライバシータブをクリック
  3. スクロールしてアクセシビリティ行をクリック
    • をクリック
  4. /System/Applications/Utilities/ (またはTerminal.appがインストールされている場所)に移動
  5. 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インポート文を一貫した標準化された方法でソートします。

プリコミットフックを設定するには、以下の手順に従ってください:

  1. OpenAdaptリポジトリのルートディレクトリに移動してください。

  2. 以下のコマンドを実行してフックをインストールしてください:

pre-commit install

これで、プリコミットフックがインストールされ、各コミット前に自動的に実行されます。これらはコード品質基準を強制し、定義されたチェックに合格しないコードのコミットを防ぎます。

ステータスチェック

PRを提出すると、コード一貫性のために「Python CI」ワークフローがトリガーされます。コードを確認するための組織的な手順に従います:

  1. Python Black チェック: このステップは、--previewフラグを使用してPython Blackスタイルでコードフォーマットを検証します。

  2. Flake8 レビュー: 次に、Flake8ツールがflake8-annotationsとflake8-docstringsを含むコード構造を徹底的にチェックします。GitHub Actionsがチェックを自動化しますが、変更を確定する前にローカルでflake8 .を実行することで、問題の発見と解決をより迅速に行うことができます。

問題の提出

以下の情報とともに、問題を https://github.com/OpenAdaptAI/OpenAdapt/issues に提出してください:

  • 問題の説明(関連するコンソール出力やスクリーンショットを含めてください)
  • 再現手順(他の人があなたを助けられるようにしてください!)

About

Open Source Generative Process Automation (i.e. Generative RPA). AI-First Process Automation with Large ([Language (LLMs) / Action (LAMs) / Multimodal (LMMs)] / Visual Language (VLMs)) Models

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 88.4%
  • TypeScript 6.0%
  • JavaScript 2.9%
  • PowerShell 1.2%
  • Jinja 0.6%
  • Shell 0.6%
  • Other 0.3%