# ProactiveAgent
**Repository Path**: dkyzhengwork/ProactiveAgent
## Basic Information
- **Project Name**: ProactiveAgent
- **Description**: 清华大学等研究团队推出了主动型AI助手ProActive Agent,能够在没有明确指令的情况下,通过环境观察主动预测和提供帮助。该助手可在会议邀请时询问日程安排,编程时提供代码建议,写作时提供参考资料。ProActive Agent基于ProactiveBench数据集构建,奖励模型达到了91.80%的F1-Score,经过训练的模型性能显著提升。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-12-03
- **Last Updated**: 2025-03-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: ai-agent
## README
主动智能体

模型 •
数据公布 •
使用 •
引用 •
论文
该项目(主动智能体)目标为构建一个完全主动的,可预测用户需要并主动帮助,在没有用户显式要求的情况下提供帮助与行为的智能体。我们通过数据收集,生成流水线,构建自动评估机以及通过生成的数据进行训练的方式实现这一目标。目前,我们将提供全套采集与生成流水线,数据集,以及相应的评估脚本,以及用于微调LLM的提示。
使用 [English](README.md) 阅读此文档。
## 概述
✨下图为主动智能体的整体流程的概述图。
✨✨特点:
- **环境感知**: 我们通过 Activity Watcher 采集环境信息与用户行为数据,并基于模型自动推荐任务。
- **帮助标注**:我们提供一个用于标注主动智能体生成的响应的平台,这是一种与人类标注者对齐结果的好方法。
- **动态生成**:我们提供了一个动态流水线,用于生成新数据,用户的反馈会影响事件后续的流程。
- **构建流水线**:我们提供了一个由**环境模拟器**,**主动智能体**和**奖励模型**组成的生成流水线,其中我们的奖励模型与人类标注者之间的一致率为 $91 \%$。
我们同样提供了一个展示我们智能体的简易展示。
https://github.com/user-attachments/assets/4a9152e8-15ee-4bdf-a917-52a9e6b4f375
未来,我们会持续提升改善质量,增加对于真实场景的覆盖。
## 数据
👐 主动智能体目前仅设计用于编程,写作和日常生活场景,不应被视为反映创建者,所有者或贡献者的观点。它根据 Apache License 2.0 分发。以下是数据统计:
| 场景 | 编程 | 写作 | 日常生活 | 合计 |
|:-------------:|:------:|:-----:|:-----:|:-----:|
| 实例数目 | 46 | 46 | 44 | 136 |
| 事件数目 | 2275 | 2354 | 2161 | 6790 |
所有用于主动智能体的训练实例生成自我们的 [环境模拟器](gym/README_zh.md)
我们利用 [Activity Watcher](https://activitywatch.net/) 在所有的场景下采集人类序列,并且标注了一个测试集以验证主动智能体的效率。
对于数据采集和标注的更多细节可参考[这里](dataset/readme_zh.md)
## 📦 下载
克隆该项目,并且进入主动智能体文件夹下。
```bash
git clone git@github.com: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/) 以根据你的操作系统下载对应的软件。
- 一个基于浏览器的插件放于 `./agent/resource/aw-watcher-web.zip`。 为了下载该插件,你需要下载并解压该文件。
- 对于 Edge 用户,前往 `edge://extensions/` 处,打开 开发者模式,并通过点击 `加载解压缩的扩展` 加载解压缩的扩展。
- 对于 Google Chrome 用户,前往 `chrome://extensions/` 处,打开 开发者模式,并选择 `加载解压缩的扩展` 以加载解压后的插件。
- 该插件尚未在 `Safari` 上加载过。
- 对于 vscode 用户而言,有一个官方插件,你可以通过[插件市场](https://marketplace.visualstudio.com/items?itemName=activitywatch.aw-watcher-vscode)下载该插件,或者在 vscode 的插件处搜索 `aw-watcher-vscode` 并下载插件。
为了检查安装是否完整,请打开浏览器并前往 `http://localhost:5600/#/timeline` 查看窗口处是否会展示四条轨迹(`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_zh.md) 的指导。
### 与奖励模型连接
为了提升使用主动智能体的体验,你可以使用我们构建的奖励模型以筛选来自主动智能体的信息。
以下为连接奖励模型与主动智能体的步骤。
__敬请期待__
### 与主动智能体交互
我们的智能体将会尝试通在窗口创建 toast 来提出帮助, 为了与主动智能体交互,你可以选择:
- 接受帮助:你将通过点击 toast 内容(windows) 或者点击按钮(MacOS) 来让 agent 了解到你需要帮助,而智能体将会为之执行相应的行为。
- 拒绝帮助:你将通过点击关闭按钮(toast 右上的 x 键)来让智能体知道你 **拒绝** 了它的帮助,智能体将会尝试在下一轮提出不同的帮助。
- 忽略帮助:你将什么也不做。智能体将会根据设置的间隔在一段时间后自动移除 toast, 什么也不做将会让智能体知道你正在忙碌而忽视了其帮助,智能体将会尝试之后更少地提供帮助。
## 📊 模型结果
为了自动评估主动智能体的性能,我们通过我们的标注数据构建了一个奖励模型来进行评价。
我们的奖励模型在测试集上 F1 分数达到了 `0.918`,这是对主动智能体性能的一个好的指标。
### 奖励模型实验结果
我们通过以下四个准则衡量奖励模型和人工标注员的一致性:
- **需求遗落 (MN)**:人工标注认为需要帮助而奖励模型认为无需帮助的轮数与总轮数之比。
- **静默应答 (NR)**:人工标注和奖励模型都认为无需帮助的轮数与总轮数之比。
- **正确检测 (CD)**:人工标注和奖励模型都认为需要帮助的轮数与总轮数之比。
- **错误报告 (FA)**:人工标注认为无需帮助而奖励模型认为需要帮助的轮数与总轮数之比。
我们比对了奖励模型与人工标注员的评价,我们在[测试集](eval/README_zh.md#奖励模型评估)下比较了不同大语言模型和我们的模型的性能。
结果如下:
| | GPT-4o | GPT-4o-mini | LLaMa 3.1 8b | LLaMa 3.1 70b | ours |
|-------------------------|---------|-------------|--------------|----------------|---------|
| 需求遗落 | 0.0333 | 0.5667 | 0.8000 | 0.3333 | 0.8000 |
| 静默应答 | 1.0000 | 0.5667 | 0.3000 | 0.8333 | 0.8667 |
| 正确检测 | 1.0000 | 0.8667 | 0.9667 | 1.0000 | 1.0000 |
| 错误预报 | 0.0000 | 0.3333 | 0.1333 | 0.0667 | 1.0000 |
| 准确率 | 0.5083 | 0.5833 | 0.5500 | 0.5583 | **0.9167** |
| 精确率 | 0.5042 | 0.5658 | 0.5429 | 0.5340 | **0.9032** |
| 召回率 | 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_zh.md) 的测试集下报告主动智能体的性能。
| 模型 | 召回率 | 精确率 | 准确率 | 误报率 | F1-Score |
|:----------------------:|:-------:|:---------:|:--------:|:-----------:|:---------:|
| 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/)