abhinavgautam01/my-openenv
GitHub: abhinavgautam01/my-openenv
一个线程感知的邮件分流基准测试环境,用于评估AI模型在真实职场压力下的收件箱决策能力。
Stars: 1 | Forks: 0
## Email Triage OpenEnv
colorFrom: blue
colorTo: gray
sdk: docker
app_port: 8000
# Email Triage OpenEnv 环境
邮件分类是一项真实的职场任务:人们对收到的邮件进行分类,决定哪些需要立即处理,并管理有限的注意力。该环境将此工作流程转化为可复现的 OpenEnv 基准测试,包含确定性任务、类型化模型、程序化评分器和容器化 API。
## 提交链接
- GitHub 仓库:`https://github.com/abhinavgautam01/my-openenv`
- Hugging Face Space:`https://huggingface.co/spaces/abhinavgautam01/my-env`
- Space 应用 URL:`https://abhinavgautam01-my-env.hf.space`
## 环境概要
- 领域:知识工作者的收件箱分类
- Benchmark id:`email_triage`
- API:`reset()`、`step()`、`state()`
- 模型:类型化的 Pydantic `EmailTriageAction` 和 `EmailTriageObservation`
- 传输:包含 `/reset`、`/step`、`/state`、`/health`、`/tasks` 的 FastAPI 服务器
## 任务
| Task | Difficulty | Emails | Objective |
|------|------------|--------|-----------|
| `classification` | Easy | 1 | 将单封邮件归类到 5 个类别中的一个 |
| `ranking` | Medium | 8 | 将一批邮件按优先级从高到低排序 |
| `full_triage` | Hard | 25 | 对整个收件箱进行分类处理,包括优先级、类别、处理方式、可选回复草稿、线程依赖关系以及固定的回复预算 |
## 动作空间
```
class EmailTriageAction:
email_id: str
priority: Literal["HIGH", "MEDIUM", "LOW"] | None
category: Literal["URGENT", "ACTION_REQUIRED", "INFO", "SPAM", "PERSONAL"] | None
disposition: Literal["RESPOND", "DELEGATE", "ARCHIVE", "DEFER"] | None
response_draft: str | None
ranking: list[str] | None
```
特定任务的预期:
- `classification`:提交 `email_id` 和 `category`
- `ranking`:提交一个包含 `ranking=[...]` 的动作,其中包含所有邮件 ID 且每个仅出现一次
- `full_triage`:提交 `email_id`、`priority` 和 `category`;`disposition` 和 `response_draft` 是可选的,但会影响奖励和最终评分
## 观测空间
```
class EmailTriageObservation:
task_id: str
task_type: Literal["classification", "ranking", "full_triage"]
emails: list[Email]
current_time: datetime
emails_processed: int
emails_remaining: int
time_budget_remaining: float | None
last_action_result: str | None
done: bool
reward: float # immediate reward from the most recent step
cumulative_reward: float # total reward across the episode
```
## 奖励设计
- `classification`:类别完全匹配得 `1.0`,否则 `0.0`
- `ranking`:奖励为 `[0.0, 1.0]` 范围内的归一化 Kendall Tau 分数
- `full_triage`:每封邮件的密集奖励
- 优先级正确性:`0.4`
- 类别正确性:`0.3`
- 处理方式正确性:`0.2`
- 回复质量:`0.1`
- 无效动作会受到惩罚
- 困难模式还有回复预算、时间预算、重复线程惩罚,以及在高价值邮件上花费回复的奖励
## 评分器
- `classification`:确定性完全匹配评分器
- `ranking`:确定性归一化 Kendall Tau 评分器
- `full_triage`:基于优先级、类别、处理方式、回复质量、回复预算效率、线程感知和完成率的加权确定性评分器
所有最终任务分数都归一化到 `[0.0, 1.0]`。
## 困难模式机制
困难任务不仅仅是重复的分类。它包括:
- 具有 `root`、`followup` 和 `duplicate` 消息的多邮件线程
- 通常需要在同一线程中的另一条消息之后处理的邮件
- 固定的回复预算,因此低价值的回复会消耗稀缺的容量
- 重复或仅供查看的后续邮件,通常应归档或推迟
- 高影响力的业务场景,例如事件、续订、审批和高管会议准备
## 本地设置
```
pip install -e ".[server,dev,inference]"
python3 -m pytest -q
openenv validate
uvicorn server.app:app --host 0.0.0.0 --port 8000
```
## Docker
根目录 Docker 构建:
```
docker build -t email-triage-openenv .
docker run --rm -p 8000:8000 email-triage-openenv
curl http://localhost:8000/health
```
兼容验证器的仅服务器构建:
```
docker build -t email-triage-openenv ./server
```
## API 示例
重置:
```
curl -X POST http://localhost:8000/reset \
-H "Content-Type: application/json" \
-d '{"task_type":"ranking","seed":42}'
```
排序步骤:
```
curl -X POST http://localhost:8000/step \
-H "Content-Type: application/json" \
-d '{"email_id":"e1","ranking":["e1","e3","e2","e4","e5","e6","e7","e8"]}'
```
## 推理
根目录下的 `inference.py` 是演示脚本和基线推理运行器。它使用 OpenAI 客户端并读取:
- `HF_TOKEN`
- `API_BASE_URL`
- `MODEL_NAME`
- `LOCAL_IMAGE_NAME`
可选任务选择器:
- `EMAIL_TRIAGE_TASK=ranking`
- `EMAIL_TRIAGE_TASKS=all`
示例:
```
export HF_TOKEN=...
export API_BASE_URL=https://router.huggingface.co/v1
export MODEL_NAME=Qwen/Qwen2.5-72B-Instruct
export LOCAL_IMAGE_NAME=email-triage-openenv:latest
python3 inference.py
```
标准输出使用所需的结构化格式:
```
[START] task=classification env=email_triage model=Qwen/Qwen2.5-72B-Instruct
[STEP] step=1 action=classify(e1,URGENT) reward=1.00 done=true error=null
[END] success=true steps=1 score=1.000 rewards=1.00
```
## 验证
本地验证使用:
- `python3 -m pytest -q`
- `openenv validate`
- `docker build -t email-triage-openenv-final-check .`
- 对 `/health`、`/tasks` 和 `/reset` 进行全新容器冒烟测试
部署的 Space 位于 `https://abhinavgautam01-my-env.hf.space`。
标签:Apex, AV绕过, Docker, FastAPI, OpenEnv, Petitpotam, Pydantic, Python, 任务自动化, 优先级排序, 决策支持, 办公自动化, 大模型评估, 安全规则引擎, 安全防御评估, 收件箱分流, 无后门, 智能体环境, 机器学习, 模拟环境, 沙箱环境, 注意力管理, 知识工作, 请求拦截, 逆向工具, 邮件分类, 邮件处理