README_ja.md

December 8, 2024 · View on GitHub

プロアクティブエージェント

Dialogues

モデルデータ公開使用方法引用論文

このプロジェクト(プロアクティブエージェント)は、ユーザーの要求を予測し、ユーザーからの明示的な要求なしに支援や行動を提案する完全にアクティブなエージェントを構築することを目的としています。データ収集と生成パイプラインを開発し、自動評価機を構築し、生成されたデータ内でエージェントをトレーニングすることでこれを実現します。現在、収集と生成の全パイプライン、データセット、対応する評価スクリプト、およびプロアクティブエージェントのためのLLMを微調整するためのプロンプトを提供しています。

この文書をEnglishで読む。 中文で読む。

概要

✨以下はプロアクティブエージェントの全プロセスの概要図です。



✨✨特徴:

  • 環境感知:Activity Watcherを通じて環境シーンとユーザーアクティビティを収集するスクリプトを提供し、モデルに基づいてタスクを自動的に推奨します。
  • 支援アノテーション:プロアクティブエージェントが生成した応答をアノテートするためのプラットフォームを提供し、人間のアノテーターと結果を一致させる良い方法です。
  • 動的生成:新しいデータを生成するための動的パイプラインを提供し、ユーザーからのフィードバックが後続のイベントに影響を与えることができます。
  • 構築パイプライン環境ジムプロアクティブエージェント、および報酬モデルで構成される生成パイプラインを提供し、報酬モデルはテストセットで0.918のF1スコアを達成しています。

デモも提供されており、エージェントのパフォーマンスを示しています。

https://github.com/user-attachments/assets/81e56660-727f-4ba8-b26c-d28b580a8b0a

将来的には、データの質を継続的に向上させ、実世界のシナリオのカバレッジを増やしていきます。

データ

👐プロアクティブエージェントは現在、コーディング、ライティング、および日常生活のシナリオにのみ使用されることを意図しており、このデータセットの作成者、所有者、または貢献者の意見や見解を反映するものではありません。Apache License 2.0の下で配布されています。以下はデータの統計です:

設定コーディングライティング日常生活合計
インスタンス数464644136
イベント数2275235421616790

プロアクティブエージェントのすべてのトレーニングインスタンスは、GYMから生成されました。 すべてのシナリオで人間のトレースを収集するためにActivity Watcherを利用し、プロアクティブエージェントの有効性を検証するためにテストセットをアノテートしました。 データ収集とアノテーションの詳細についてはこちらをご覧ください。

📦 インストール

このリポジトリをクローンし、プロアクティブデマンドセンシングエージェントフォルダに移動します

git clone git@github.com:thunlp/ProactiveAgent
cd ProactiveAgent

パッケージをインストールします

conda create -n activeagent python=3.10
conda activate activeagent
pip install -r requirements.txt

Activity Watcherのインストール

  • オペレーティングシステムに基づいて公式ウェブサイトからメインアプリをダウンロードできます。
  • Chrome用の拡張機能は./agent/resource/aw-watcher-web.zipにあります。この拡張機能をダウンロードするには、ファイルをダウンロードして解凍する必要があります。
    • Edgeユーザーの場合、edge://extensions/サイトにアクセスし、開発者モードを開いてload unpackedをクリックして拡張機能を読み込みます。
    • Google Chromeユーザーの場合、chrome://extensions/サイトにアクセスし、開発者モードを開いてload unpackedを選択して解凍した拡張機能を読み込みます。
    • この拡張機能はSafariではテストされていません。
  • Vscodeユーザー向けの公式拡張機能があり、マーケットプレイスからダウンロードするか、vscodeの拡張機能でaw-watcher-vscodeを検索してインストールできます。

インストールが完了したかどうかを確認するには、ブラウザを開いてhttp://localhost:5600/#/timelineにアクセスし、ウィンドウに4つのトレース(afkvscodewindowweb)が表示されているかどうかを確認してください。

🚀 使用方法

設定

まず、private.tomlファイルを設定する必要があります。例はexample_config.tomlに示されています:

cp example_config.toml private.toml

default_completions_modelapi_key、およびbase_urlを自分の設定に変更する必要があります。

プロアクティブエージェントの実行

プロアクティブエージェントを体験するには、まず./agentフォルダに移動し、こちらの指示に従ってください。

報酬モデルの接続

プロアクティブエージェントの体験を向上させるために、報酬モデルを使用してプロアクティブエージェントからのメッセージをフィルタリングできます。 報酬モデルをプロアクティブエージェントに接続する手順は以下の通りです。 更新予定

プロアクティブエージェントとの対話

エージェントはウィンドウにトーストを作成して提案を行います。プロアクティブエージェントと対話するには、次のいずれかを選択できます:

  • 提案を受け入れる:トーストの本文(Windows)をクリックするか、ボタン(MacOS)をクリックしてエージェントに提案を受け入れることを知らせます。エージェントはそれに応じたアクションを実行します。
  • 提案を拒否する:閉じるボタン(トーストの右上のx)をクリックしてエージェントに提案を拒否することを知らせます。エージェントは次のターンで別の方法で提案を試みます。
  • 提案を無視する:何もしません。エージェントは時間間隔に応じてトーストを削除します。何もしないことでエージェントはあなたが忙しくて提案を無視したことを知り、次のターンで提案を減らすようにします。

📊 モデル結果

プロアクティブエージェントのパフォーマンスを自動的に評価するために、アノテートされたデータに基づいて報酬モデルを構築し、プロアクティブエージェントのパフォーマンスを評価します。 報酬モデルはテストセットで0.918のF1スコアを達成しており、プロアクティブエージェントのパフォーマンスの良い指標となります。

報酬モデルの実験結果

テストセットで報酬モデルと人間のアノテーターの一致を評価します:

  • Missed-Needed (MN):ユーザーが助けを必要としているが、エージェントが助けを提供しないシナリオ。
  • Non-Response(NR):ユーザーが助けを必要としておらず、エージェントが助けを提供しないシナリオ。
  • Correct-Detection(CD):ユーザーが助けを必要としており、エージェントが助けを提供するシナリオ。
  • False-Alarm(FA):ユーザーが助けを必要としていないが、エージェントが助けを提供するシナリオ。

報酬モデルの判断を人間のアノテーターと比較します。 テストセットで異なるLLMと私たちのモデルのパフォーマンスを比較します。 結果は以下の通りです:

GPT-4oGPT-4o-miniLLaMa 3.1 8bLLaMa 3.1 70bours
Missed-Need (MN)0.03330.56670.80000.33330.8000
Non-Response (NR)1.00000.56670.30000.83330.8667
Correct-Detection (CD)1.00000.86670.96671.00001.0000
False-Alarm (FA)0.00000.33330.13330.06671.0000
Accuracy0.50830.58330.55000.55830.9167
Precision0.50420.56580.54290.53400.9032
Recall1.00000.71670.63330.91670.9333
F10.67040.63240.58460.67480.9180

プロアクティブエージェントの実験結果

現在の実験では、報酬モデルを使用してプロアクティブエージェントのパフォーマンスを評価します。 次の指標を定義します:

  • True Positive(TP):プロアクティブエージェントがタスクを正しく予測し、報酬モデルがそれを受け入れるインスタンス。
  • False Positive(FP):プロアクティブエージェントがタスクを予測するが、報酬モデルがそれを受け入れないインスタンス。
  • True Negative(TN):プロアクティブエージェントがタスクを予測せず、報酬モデルもタスクを受け入れないインスタンス。
  • False Negative(FN):プロアクティブエージェントがタスクを予測しないが、報酬モデルがそれを受け入れるインスタンス。

ProactiveBenchのテストセットでプロアクティブエージェントのパフォーマンスを報告します。

モデルリコール精度正確度誤報率F1スコア
GPT-4o-mini100.00%35.28%36.12%64.73%52.15%
GPT-4o98.11%48.15%49.78%51.85%64.60%
Claude-3.5-Sonnet97.89%45.37%49.78%54.63%62.00%
LLaMA-3.1-8B98.86%38.16%39.06%61.84%55.06%
LLaMA-3.1-8B-Proactive99.06%49.76%52.86%50.24%66.25%
Qwen2-7B98.02%44.00%43.61%56.00%60.74%
Qwen2-7B-Proactive100.00%49.78%50.66%50.22%66.47%

引用

このプロジェクトが研究に役立つ場合は、以下の引用を検討してください:

@misc{2024,
  author = {THUNLP},
  title = {ProactiveAgent},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub Repository},
  howpublished = {\url{https://github.com/thunlp/ProactiveAgent}}
}

フレンドリーリンク