Skip to content

Commit

Permalink
docs: add Japanese README files
Browse files Browse the repository at this point in the history
I created Japanese translated documents.
  • Loading branch information
eltociear committed Dec 5, 2024
1 parent 6b2b3cb commit 98dc561
Show file tree
Hide file tree
Showing 7 changed files with 414 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
This project (Proactive Agent) aims to construct a fully active agent, who may anticipate user's requirements and take the initiative, offering assistance and suggesting actions without explicit requests from user. We achieve this by developing a data collection and generation pipeline, building an automatic evaluator and training agent within data generated. For now, we provide the whole collection and generation pipeline, the datasets, and the corresponding evaluation scripts, and the prompts to finetune LLM for proactive agent.

*Read this in [中文](README_zh.md).*
*Read this in [日本語](README_ja.md).*

## Overview

Expand Down
178 changes: 178 additions & 0 deletions README_ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
<div align= "center">
<h1> プロアクティブエージェント </h1>
</div>

<div align="center">

![Dialogues](https://img.shields.io/badge/Current\_Event\_Size-6790-red?style=flat-square)

</div>

<p align="center">
<a href="#概要">モデル</a> •
<a href="#データ">データ公開</a> •
<a href="#使用方法">使用方法</a> •
<a href="#引用">引用</a> •
<a href="https://arxiv.org/abs/2410.12361">論文</a>

</p>

</div>

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

*この文書を[English](README.md)で読む。*
*[中文](README_zh.md)で読む。*

## 概要

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

<br>
<div align="center">
<img src="assets/overall_pipeline.png" width="800px">
</div>
<br>


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

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

https://github.com/user-attachments/assets/4a9152e8-15ee-4bdf-a917-52a9e6b4f375

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

## データ

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

| 設定 | コーディング | ライティング | 日常生活 | 合計 |
|:-------------:|:------:|:-----:|:-----:|:-----:|
| インスタンス数 | 46 | 46 | 44 | 136 |
| イベント数 | 2275 | 2354 | 2161 | 6790 |

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

## 📦 インストール

このリポジトリをクローンし、プロアクティブデマンドセンシングエージェントフォルダに移動します
```bash
git clone [email protected]:thunlp/ProactiveAgent
cd ProactiveAgent
```

パッケージをインストールします
```bash
conda create -n activeagent python=3.10
conda activate activeagent
pip install -r requirements.txt
```

### Activity Watcherのインストール

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

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

## 🚀 使用方法

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

```bash
cp example_config.toml private.toml
```

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

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

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

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

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

### 報酬モデルの実験結果
テストセットで報酬モデルと人間のアノテーターの一致を評価します:
- **Missed-Needed (MN)**:ユーザーが助けを必要としているが、エージェントが助けを提供しないシナリオ。
- **Non-Response(NR)**:ユーザーが助けを必要としておらず、エージェントが助けを提供しないシナリオ。
- **Correct-Detection(CD)**:ユーザーが助けを必要としており、エージェントが助けを提供するシナリオ。
- **False-Alarm(FA)**:ユーザーが助けを必要としていないが、エージェントが助けを提供するシナリオ。

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

| | GPT-4o | GPT-4o-mini | LLaMa 3.1 8b | LLaMa 3.1 70b | ours |
|-------------------------|---------|-------------|--------------|----------------|---------|
| Missed-Need (MN) | 0.0333 | 0.5667 | 0.8000 | 0.3333 | 0.8000 |
| Non-Response (NR) | 1.0000 | 0.5667 | 0.3000 | 0.8333 | 0.8667 |
| Correct-Detection (CD) | 1.0000 | 0.8667 | 0.9667 | 1.0000 | 1.0000 |
| False-Alarm (FA) | 0.0000 | 0.3333 | 0.1333 | 0.0667 | 1.0000 |
| Accuracy | 0.5083 | 0.5833 | 0.5500 | 0.5583 | **0.9167** |
| Precision | 0.5042 | 0.5658 | 0.5429 | 0.5340 | **0.9032** |
| Recall | 1.0000 | 0.7167 | 0.6333 | 0.9167 | **0.9333** |
| F1 | 0.6704 | 0.6324 | 0.5846 | 0.6748 | **0.9180** |


### プロアクティブエージェントの実験結果
現在の実験では、報酬モデルを使用してプロアクティブエージェントのパフォーマンスを評価します。
次の指標を定義します:
- **True Positive(TP)**:プロアクティブエージェントがタスクを正しく予測し、報酬モデルがそれを受け入れるインスタンス。
- **False Positive(FP)**:プロアクティブエージェントがタスクを予測するが、報酬モデルがそれを受け入れないインスタンス。
- **True Negative(TN)**:プロアクティブエージェントがタスクを予測せず、報酬モデルもタスクを受け入れないインスタンス。
- **False Negative(FN)**:プロアクティブエージェントがタスクを予測しないが、報酬モデルがそれを受け入れるインスタンス。

[ProactiveBench](eval/README_ja.md)のテストセットでプロアクティブエージェントのパフォーマンスを報告します。

| モデル | リコール | 精度 | 正確度 | 誤報率 | F1スコア |
|:----------------------:|:-------:|:---------:|:--------:|:-----------:|:---------:|
| GPT-4o-mini | 100.00% | 35.28% | 36.12% | 64.73% | 52.15% |
| GPT-4o | 98.11% | 48.15% | 49.78% | 51.85% | 64.60% |
| Claude-3.5-Sonnet | 97.89% | 45.37% | 49.78% | 54.63% | 62.00% |
| LLaMA-3.1-8B | 98.86% | 38.16% | 39.06% | 61.84% | 55.06% |
| LLaMA-3.1-8B-Proactive | 99.06% | 49.76% | 52.86% | 50.24% | 66.25% |
| Qwen2-7B | 98.02% | 44.00% | 43.61% | 56.00% | 60.74% |
| Qwen2-7B-Proactive | 100.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}}
}
```

## フレンドリーリンク
- [ChatDev](https://github.com/openbmb/ChatDev)
- [Activity Watcher](https://activitywatch.net/)
1 change: 1 addition & 0 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
该项目(主动智能体)目标为构建一个完全主动的,可预测用户需要并主动帮助,在没有用户显式要求的情况下提供帮助与行为的智能体。我们通过数据收集,生成流水线,构建自动评估机以及通过生成的数据进行训练的方式实现这一目标。目前,我们将提供全套采集与生成流水线,数据集,以及相应的评估脚本,以及用于微调LLM的提示。

使用 [English](README.md) 阅读此文档。
[日本語](README_ja.md)で読む。

## 概述

Expand Down
69 changes: 69 additions & 0 deletions agent/README_ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<div align = "center">
<h1> 🤖 プロアクティブエージェント </h1>
</div>

# 概要

プロアクティブエージェントは、ユーザーの行動と外部環境を監視し、可能な限り積極的にユーザーを支援するエージェントです。

現在のデモでは、ユーザーのキーボードとマウスのイベント、ブラウザ、および `vscode` を監視し、デスクトップ通知をポップアップしてユーザーを支援します。

## データ処理

デモでは、ユーザーの行動と環境を監視するために ActivityWatcher を使用しています。
技術的には:
- `pynput` ライブラリを使用することで、エージェントはキーボードとマウスのイベントをキャプチャできます。収集されたデータはユーザーの行動と見なされます。スクリプトは `ActionListener` に実装されています。また、結果がクリップボードに書き込まれるように `paperclip` を使用しています。
- Chrome 拡張機能を使用することで、エージェントはブラウザのアクティビティ(タブの数、閲覧している HTML など)を把握できます。
- Vscode 拡張機能を使用することで、エージェントはワークスペース(現在のプロジェクト名、コーディング言語、現在のファイル名など)を確認できます。

ユーザーの行動については、キーボードイベントとマウスイベントをスプライスして、キーボード入力とマウスの移動、クリックを取得します。

環境情報については、
- `afk` バケットをチェックすることで、エージェントはユーザーが忙しいかアイドル状態かを把握できます。
- `window` バケットをチェックすることで、エージェントはユーザーのフォーカスを把握できます。デモでは Chrome と Vscode 以外のアプリを無視し、主にこの2つの分野で支援を提供します。
- `vscode` バケットまたは `web` バケットをチェックすることで、エージェントは作業内容とフォーカスを把握し、より適切な結果を提供します。

各期間について、`ActionListener` は4つのバケットから情報を取得し、ユーザーが Chrome または Vscode にフォーカスしていない期間をフィルタリングします。次に、エージェントは最後の有効な瞬間の必要な情報を選択し、集約されたイベントをエージェントに渡します。エージェントはこれに基づいてユーザーに積極的な応答を提供します。

## プロアクティブエージェントの実行
プロアクティブエージェントを完全に体験するには、追加の依存関係をインストールする必要があります。

0. 依存関係をインストールします。ActivityWatcher 拡張機能の詳細なインストール手順については[こちら](../README.md#install-activity-watcher)を参照してください。

1. エージェントの依存関係をインストールします。
```bash
pip install -r requirements.txt
```
Mac ユーザーの場合は、
```bash
pip install -r requirements_mac.txt
```
を使用してください。

2. 必要な情報を設定します。
設定情報には LLM の api_key と ActivityWatcher の設定が含まれます。スクリプトによって検出されるように、テンプレートファイル `./gym/example_config.toml`**コピー** し、`./gym/private.toml`**リネーム** して、LLM 呼び出しに関連する設定を **編集** します。
**モデルを直接実行するには、activeagent という名前の API キーを設定する必要があります。これは直接呼び出しに使用されます。example_config のコメントを参照してください。**

3. サーバーを実行します。
コマンドを実行します。
```bash
python main.py
```
成功した場合、ターミナルに情報が表示されます。
- Windows ユーザーの場合、このサーバーは通知のために AUMID を登録します。スクリプトは AUMID を含む `appid.txt` ファイルを作成します。**新しい AUMID を生成する場合を除き、このファイルを削除しないでください。**

4. 前のターミナルを開いたままにして、新しいターミナルを開き、次のコマンドを実行します。
```bash
python ragent.py --platform PC [--chromes <監視するブラウザの名前> --interval <各ターンの間隔秒数>]
python ragent.py --platform PC --chromes explorer.exe,mesdge.exe --interval 10
```
いくつかのパラメータに注意してください:
- `platform`: 実行するプラットフォーム。現在、`PC` デモを実行できます。`Mobile` デモは将来リリースされます。
- `--apps`: ActivityWatcher に表示される Chrome の名前。プラットフォームや Chrome の種類によってアプリの名前が異なるため、ActivityWatcher の window バケットを通じてアプリ名を見つけ、カンマ `,` で区切って渡す必要があります(将来更新予定です。ご不便をおかけして申し訳ありません)。
- `--interval`: エージェントが提案を試みる頻度。デフォルトは 15 で、単位は秒です。
ホスト名はデフォルトバケット名のサフィックスです。例:`aw-watcher-windows_<client_hostname>`
- `--port`: ActivityWatcher が保持および監視するポート。デフォルトは `5600` です。ActivityWatcher のポートを変更しない限り、変更する必要はありません。

エージェントが正常に実行されると、ターミナルに設定情報と `Demo running Started.` というメッセージが表示されます。

その後、Chrome や Vscode を開くと、エージェントが動作を開始します。
Loading

0 comments on commit 98dc561

Please sign in to comment.