|
|
1 månad sedan | |
|---|---|---|
| .. | ||
| app | 5 dagar sedan | |
| docs | 5 dagar sedan | |
| exam | 5 dagar sedan | |
| frontend | 5 dagar sedan | |
| tests | 5 dagar sedan | |
| .dockerignore | 5 dagar sedan | |
| .env.example | 5 dagar sedan | |
| .flake8 | 5 dagar sedan | |
| .gitignore | 5 dagar sedan | |
| Dockerfile | 5 dagar sedan | |
| LICENSE | 5 dagar sedan | |
| README.md | 5 dagar sedan | |
| demo_helloagents.py | 5 dagar sedan | |
| docker-compose.yml | 5 dagar sedan | |
| main.ipynb | 5 dagar sedan | |
| main.py | 5 dagar sedan | |
| migrate_db.py | 5 dagar sedan | |
| pytest.ini | 5 dagar sedan | |
| requirements.txt | 5 dagar sedan | |
| utils.py | 5 dagar sedan | |
让思想在代码中碰撞,让灵魂在字节间共鸣。
想象一下,你置身于一个跨越时空的圆桌会议室。
左手边,苏格拉底正抚须沉思,准备用反诘法拆解看似坚固的真理;右手边,埃隆·马斯克正激动地挥舞着双手,描绘着火星殖民的宏伟蓝图;而坐在对面的,或许是孔子,正温和地阐述着“仁”的治世之道。
他们不再是冰冷的历史符号,也不是只会机械问答的搜索引擎。在这个框架中,他们拥有了记忆,拥有了性格,甚至拥有了偏见。他们会争论,会妥协,会因为观点的共鸣而激动,也会因为理念的冲突而愤怒。
这不是科幻小说,这是 MADF (Multi-Agent Discussion Framework) 为你呈现的数字现实。
我们构建的不仅仅是一个聊天室,而是一个思想的培养皿。在这里,你可以:
MADF 是一个基于 HelloAgents 的沉浸式多智能体圆桌讨论应用。它使用 HelloAgents 创建并驱动主持人、嘉宾和角色生成智能体,在应用层保留圆桌调度、双层记忆与实时 WebSocket 交互。
MADF 采用 现代化的前后端分离架构,后端基于 Python 异步生态构建高性能调度中心,前端采用 Vue 3 打造沉浸式交互体验,通过 WebSocket 实现毫秒级的双向流式通信。
graph TD
User["用户 (Browser)"]
subgraph Frontend ["前端 (Vue 3 + Vite)"]
UI["界面组件 (Ant Design Vue)"]
Store["状态管理 (Pinia)"]
WS_Client["WebSocket 客户端"]
end
subgraph Backend ["后端 (FastAPI)"]
API["API 网关 / 路由"]
Auth["认证与权限 (OAuth2/JWT)"]
subgraph Services ["核心服务层"]
Scheduler["论坛调度器 (ForumScheduler)"]
GodAgent["角色生成 (God Agent)"]
Moderator["主持人代理"]
Participant["嘉宾代理"]
end
WS_Server["WebSocket 服务端"]
Agent_Runtime["HelloAgents Runtime<br/>SimpleAgent + HelloAgentsLLM"]
end
subgraph Data ["数据层"]
SQLite[("SQLite")]
Redis[("Redis 缓存/消息队列")]
end
subgraph External ["外部服务"]
StepFun["StepFun step-3.7-flash"]
StepSearch["StepSearch MCP"]
end
User <-->|HTTP/WebSocket| Frontend
Frontend <-->|REST API| API
Frontend <-->|WebSocket| WS_Server
API --> Services
WS_Server <--> Scheduler
Scheduler --> Agent_Runtime
GodAgent --> Agent_Runtime
Agent_Runtime --> StepFun
GodAgent --> StepSearch
Services --> SQLite
Services --> Redis
classDef box fill:#f9f,stroke:#333,stroke-width:2px;
class Frontend,Backend,Data,External box;
🖥️ 前端层 (Frontend)
useForumWebSocket 钩子实时接收后端 Token 流,实现“打字机”效果。⚙️ 后端层 (Backend)
asyncio 维护全局事件循环,管理多个智能体的并发思考、发言队列及时间片轮转。SimpleAgent,由 HelloAgentsLLM、run()、stream_run()、add_message() 和框架历史管理完成推理、流式输出与上下文恢复。RealGodAgent 使用 HelloAgents ReActAgent、ToolRegistry 与标准 Tool 接口调用 StepSearch MCP,生成前执行点名人物一致性校验。💾 数据层 (Data Layer)
libsql-client,零配置启动,适合开发与中小规模部署。🏗️ 基础设施 (Infrastructure)
Dockerfile,支持多阶段构建 (Multi-stage Build),最小化镜像体积。docker-compose.yml 一键拉起前后端及依赖服务。SimpleAgent,复用 MADF 的论坛编排协议或注册新的 HelloAgents Tool。MADF 提供了灵活的启动方式,既支持 Docker 一键部署(推荐),也支持 本地源码开发。
在项目根目录下复制配置文件并填入密钥:
# 复制示例配置
cp .env.example .env
编辑 .env 文件,填入你的 API Key:
# HelloAgents / StepFun configuration
API_KEY="your_api_key_here"
MODEL_NAME="step-3.7-flash"
BASE_URL=https://api.stepfun.com/step_plan/v1/
注意:
BASE_URL必须以https://开头并以/结尾。- 角色生成通过 HelloAgents Tool 调用 StepSearch MCP,模型与搜索复用同一个 StepFun Key。
Compose 会从当前工作树构建镜像,确保运行内容与待审阅代码一致。
一键部署命令
您可以直接下载我们准备好的 docker-compose.yml 文件并启动:
# 在项目根目录配置 .env 后构建并启动
docker compose up --build -d
配置说明
请在 .env 中配置至少以下变量:
API_KEY=your_real_api_key_here
MODEL_NAME=step-3.7-flash
BASE_URL=https://api.stepfun.com/step_plan/v1/
SECRET_KEY=replace-with-a-long-random-secret
http://localhost:8000docker-compose logs -fdocker-compose down适合需要修改代码的开发者。
步骤 A: 启动后端 (Python/FastAPI)
# 1. 创建并激活虚拟环境
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 初始化数据库 (首次运行需要)
# 系统会自动在 data/madf.db 创建表结构
# 4. 启动服务 (开启热重载)
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
后端启动后,创建论坛并启动讨论。主持人开场、至少一位嘉宾思考并发言、主持人总结,即构成一次端到端 HelloAgents 多智能体流程。
可先运行框架迁移相关测试:
pytest app/tests/test_helloagents_integration.py app/tests/test_agent_logic.py -q
也可以不启动数据库和前端,直接运行最小端到端讨论:
python demo_helloagents.py
该示例依次执行主持人开场、嘉宾思考与发言、阶段总结和闭幕,所有模型调用均由 HelloAgents 1.0.0 驱动。
共创项目的标准脚本入口同样可用:
python main.py
仓库还提供 main.ipynb,用于按毕业设计模板逐步展示 HelloAgents 原生 Agent、流式讨论和最终转录结果。
步骤 B: 启动前端 (Vue 3/Vite)
cd frontend
# 1. 安装依赖
npm ci
# 2. 启动开发服务器
npm run dev
http://localhost:5173http://localhost:8000注意: 在开发模式下,前端 Vite 服务器会通过代理 (Proxy) 将 API 请求转发到后端 8000 端口,请确保后端已启动。
ReActAgent 会通过 StepSearch MCP 检索并核实人物资料,首次生成通常需要多轮模型与搜索请求。ws://localhost:8000 的连接。由 HelloAgents 1.0.0 提供:
SimpleAgent 生命周期、历史记录、同步推理与流式输出ReActAgent、ToolRegistry、Tool 与 ToolResponse由 MADF 应用层提供:
维护者可以按下面的顺序快速审阅 HelloAgents 集成与 MADF 应用层边界:
| 关注点 | 关键文件 | 说明 |
|---|---|---|
| HelloAgents 主持人与参与者 | app/agent/agent.py |
ModeratorAgent、ParticipantAgent 直接继承 SimpleAgent,使用 run()、stream_run() 与 add_message() |
| ReAct 真实角色生成 | app/agent/real_god.py |
使用 ReActAgent、ToolRegistry、标准 Tool,包含真实人物一致性与多角色顺序校验 |
| StepSearch MCP 适配 | app/agent/stepsearch.py |
负责 MCP 初始化、web_search/web_fetch 调用和搜索结果整理 |
| 论坛调度与恢复 | app/services/forum_scheduler.py |
发言公平调度、共享上下文、1800 秒时长计算、中断、停止和容器重启恢复 |
| 论坛业务入口 | app/services/forum_service.py |
权限校验,并在首次启动时写入唯一权威 start_time |
| REST 与 WebSocket API | app/api/v1/endpoints/forums.py |
论坛创建、启动、停止、历史、日志、观众插话和 WebSocket 鉴权 |
| 数据持久化 | app/crud/__init__.py、app/db/schema.sql |
论坛、参与者、消息、开始时间、时长和恢复状态的 SQLite 持久化 |
| 前端论坛状态 | frontend/src/stores/forum.ts |
REST/WebSocket 状态同步,并接收启动接口返回的权威开始时间 |
| 论坛创建与计时器 | frontend/src/views/ForumListView.vue、frontend/src/components/forum/ForumTimer.vue |
页面选择角色和 1–120 分钟时长;计时器按 start_time + duration_minutes 展示剩余时间 |
| 迁移与恢复测试 | app/tests/test_helloagents_integration.py、app/tests/test_forum_recovery.py |
验证原生 Agent API、历史恢复、30 分钟截止边界及重启不重置计时 |
from app.agent.agent import ModeratorAgent, ParticipantAgent
persona = {
"name": "林衡",
"title": "公共政策研究者",
"system_prompt": "你是林衡,请自然、审慎地参与讨论。",
}
moderator = ModeratorAgent("人工智能如何参与公共决策?")
participant = ParticipantAgent("林衡", persona, 1, moderator.theme)
opening = "".join(moderator.opening([persona]))
thought = participant.think(opening)
speech = "".join(participant.speak(thought, opening))
pytest -q
cd frontend
npm ci
npm run type-check
npm run test:unit -- --run
npm run build
exam/ 提供标准评估、基线对比和消融实验脚本;这些评估 Agent 同样通过 HelloAgents SimpleAgent 运行。
欢迎通过 Issue 和 Pull Request 提交缺陷、测试、文档与讨论策略改进。提交前请运行上面的完整验证命令,并确保敏感 API Key 未进入 Git。
感谢 Datawhale 社区、Hello-Agents 维护者与 StepFun 提供的模型和 StepSearch MCP 能力。
本项目作为 Hello-Agents 共创项目的一部分,遵循 CC BY-NC-SA 4.0 许可协议和共创项目规则;完整协议正文见仓库根目录的 LICENSE.txt。