模拟 ReAct Agent 工作过程 - Simulate ReAct Agent working process
Project description
Busy Agent 🤖
在 LLM Agent 时代假装很忙!
这是一个有趣的项目,通过读取 react-llama 数据集的 trajectory,以 ReAct Agent 的风格逐步打印 Agent 的思考和执行过程,让你看起来像是在运行一个真实的 AI Agent。
特性
- 🎨 彩色输出: 使用 ANSI 颜色代码,让输出更加美观
- ⌨️ 打字机效果: 逐字符打印,模拟真实的思考过程
- ⏳ 加载动画: 显示"思考中..."、"执行中..."等动画效果
- 🔄 ReAct 风格: 完整展示 Thought → Action → Observation 的推理循环
- 🎲 随机选择: 从 3538 条 trajectory 中随机选择展示
- 🚀 多种模式: 支持快速模式、循环模式等
- 🎯 智能答案生成: 基于配置的成功率和意外事件,智能生成正确或错误答案
- 🤖 LLM as Judge: 模拟 LLM 评分系统,对答案质量进行评分
- 📊 可观测指标: 实时显示成功率、耗时、步骤数、意外事件等关键指标
- 🌍 多语言支持: 支持中文和英文界面切换
安装
pip install -r requirements.txt
使用方法
基本使用
运行程序,随机显示一个 trajectory:
python busy_agent.py
快速模式
跳过动画效果,快速显示(适合测试):
python busy_agent.py --fast
指定索引
显示特定索引的 trajectory:
python busy_agent.py --index 0
循环模式
持续显示随机 trajectory,假装一直在忙:
python busy_agent.py --loop
自定义循环间隔时间(秒):
python busy_agent.py --loop --delay 5.0
模型选择
选择不同的 AI 模型(类似 Claude 的三档模型系统):
qwen-flash(快速模型):
python busy_agent.py --model qwen-flash
qwen-plus(平衡模型,默认):
python busy_agent.py --model qwen-plus
qwen-max(最强模型):
python busy_agent.py --model qwen-max
程序会在启动时显示当前使用的模型,不同模型使用不同颜色区分。
配置文件
程序使用 config.json 配置文件来管理延迟时间和显示参数。你可以根据需要调整这些参数来控制 Agent 的"忙碌"程度。
配置项说明
模型配置 (model):
default: 默认使用的模型,可选qwen-flash、qwen-plus、qwen-maxavailable_models: 可用的模型列表及其配置
延迟时间配置 (delays):
thinking.min/thinking.max: 思考延迟时间范围(秒),默认 2.0-5.0 秒executing.min/executing.max: 执行动作延迟时间范围(秒),默认 3.0-6.0 秒
打字机效果配置 (typewriter):
thought_speed: 思考内容的打字速度(每字符延迟),默认 0.02 秒action_speed: 动作内容的打字速度,默认 0.015 秒observation_speed: 观察内容的打字速度,默认 0.005 秒
显示配置 (display):
observation_max_length: 观察内容的最大显示长度,默认 500 字符
打印模式配置 (print_modes):
switch_interval: 每N步切换一次打印模式,默认 10 步modes: 可用的打印模式(smooth、chunky、slow、instant)
意外事件配置 (incidents):
model_disconnect: 模型断连配置enabled: 是否启用,默认 trueprobability: 触发概率,默认 0.15 (15%)max_retries: 最大重试次数,默认 2
action_timeout: 动作超时配置enabled: 是否启用,默认 trueprobability: 触发概率,默认 0.1 (10%)max_retries: 最大重试次数,默认 3
成功率配置 (success_rate):
target_rate: 目标成功率,默认 0.75 (75%)incident_penalty: 意外惩罚系数,默认 0.3 (发生意外时增加30%失败概率)wrong_answer_strategies: 错误答案生成策略unable_to_determine: 无法确定类答案(权重 0.4)reasoning_failed: 推理失败类答案(权重 0.3)wrong_guess: 随机错误答案(权重 0.3)
LLM评分配置 (llm_judge):
enabled: 是否启用 LLM as Judge 评分,默认 truecorrect_answer_score: 正确答案评分范围,默认 8.5-10.0wrong_answer_score: 错误答案评分范围,默认 2.0-6.0
指标跟踪配置 (metrics):
track_success_rate: 是否跟踪成功率,默认 truetrack_time: 是否跟踪耗时,默认 truetrack_steps: 是否跟踪步骤数,默认 truetrack_retries: 是否跟踪重试次数,默认 truetrack_incidents: 是否跟踪意外事件,默认 true
配置示例
{
"model": {
"default": "qwen-plus",
"available_models": {
"qwen-flash": {
"display_name": "Qwen-Flash",
"tier": "flash"
},
"qwen-plus": {
"display_name": "Qwen-Plus",
"tier": "plus"
},
"qwen-max": {
"display_name": "Qwen-Max",
"tier": "max"
}
}
},
"delays": {
"thinking": {
"min": 2.0,
"max": 5.0
},
"executing": {
"min": 3.0,
"max": 6.0
}
},
"typewriter": {
"thought_speed": 0.02,
"action_speed": 0.015,
"observation_speed": 0.005
},
"display": {
"observation_max_length": 500
}
}
输出示例
程序会以 ReAct 风格输出 Agent 的推理过程:
🤖 ReAct Agent 工作中...
================================================================================
❓ 问题:
Since 2017 Nick Ayers has been Chief of Staff to a man that served as governor of what state?
🔄 开始推理过程...
💭 Thought 1: I need to search Nick Ayers, find who he is chief of staff to...
⚡ Action 1: Search[Nick Ayers]
📊 Observation 1: James Nicholas Ayers (born August 16, 1982) is an American...
💭 Thought 2: Nick Ayers is chief of staff to Mike Pence...
⚡ Action 2: Search[Mike Pence]
📊 Observation 2: Michael Richard Pence (born June 7, 1959) is an American...
💭 Thought 3: Mike Pence was governor of Indiana...
⚡ Action 3: Finish[Indiana]
✅ 最终答案: Indiana
项目结构
busy-agent/
├── busy_agent.py # 主程序
├── config.json # 配置文件(延迟时间、打字速度等)
├── datasets/
│ └── react-llama.parquet # ReAct trajectory 数据集
├── explore_dataset.py # 数据集探索脚本
├── view_trajectory.py # 查看 trajectory 示例
├── requirements.txt # Python 依赖
└── README.md # 项目说明
数据集
项目使用 react-llama 数据集,包含 3538 条 ReAct 风格的 trajectory。每条数据包括:
- question: 问题
- correct_answer: 正确答案
- trajectory: 完整的推理过程(Thought → Action → Observation)
技术实现
- 解析: 使用正则表达式解析 trajectory 文本
- 打字机效果: 逐字符打印,模拟真实输入
- 加载动画: 使用 Unicode 字符创建旋转动画
- 颜色输出: ANSI 转义序列实现彩色终端输出
许可证
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file busy_agent-0.1.0.tar.gz.
File metadata
- Download URL: busy_agent-0.1.0.tar.gz
- Upload date:
- Size: 3.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef2d893a9481e32909b4e47eeb491ee993881f22eeec18a332fab335b4b2bcfb
|
|
| MD5 |
fc95a94ae00561fda9e143e85285603c
|
|
| BLAKE2b-256 |
58859a90957fe6c6b1b04f2a2a5dc679a8d1ace51c0f1996f5d99df784799216
|
File details
Details for the file busy_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: busy_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33f2d96a30c6e6a03436f37f453fa67d10cec7e770d34a7f71aae1c484615a24
|
|
| MD5 |
3391756fe8e67e483176cb6573bcd2cd
|
|
| BLAKE2b-256 |
bb19d25eed9065836326e0607f54f09dc4a14236bcfa302f2eb1df13a8e2f83f
|