基于 OpenAI Agents SDK 的智能助手系统,实现 ReACT 推理和行动模式,支持多轮工具调用、对话历史管理、流式响应、MCP 工具集成以及现代网页用户界面。
🧠 ReACT 推理模式
🔧 多轮工具调用
💾 对话历史管理
⚡ 流式响应
🔌 自定义模型提供者
🛠️ MCP 工具集成
🌐 网页界面
┌─────────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 命令行界面 CLI │ │ Web 界面 │ │
│ │ (main.py) │ │ (React + TS) │ │
│ └──────────────────┘ └──────────────────┘ │
└────────────────────────┬───────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ WebSocket │ │ CLI 接口 │ │ Web API │
│ 服务器 │ │ │ │ (web_api) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└───────────────┼───────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Agent 核心层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ ReACT 推理 │ │ 工具调用 │ │ 流式输出 │ │
│ │ 引擎 │ │ 管理器 │ │ 处理器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 模型提供者 │ │ 会话管理 │ │ MCP 工具集成│
│ (Custom │ │ (Redis) │ │ (stdio/sse/ │
│ Provider) │ │ │ │ http) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└───────────────┼───────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 配置管理层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ .env 配置 │ │ mcp_config │ │
│ │ 加载器 │ │ .json 加载器 │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
git clone <repository-url>
cd react-agent-assistant
# Windows(使用 Chocolatey)
choco install redis-64
# macOS(使用 Homebrew)
brew install redis
brew services start redis
# Linux(Ubuntu/Debian)
sudo apt-get install redis-server
sudo systemctl start redis-server
# 验证 Redis 是否运行
redis-cli ping
# 应该返回: PONG
# 创建虚拟环境(推荐)
python -m venv .venv
# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
cd web
npm install
cd ..
# 复制示例配置文件
cp .env.example .env
# 编辑 .env 文件,设置您的 API 密钥和配置
# 复制示例配置文件
cp mcp_config.example.json mcp_config.json
# 编辑 mcp_config.json,配置您的 MCP 服务器
python main.py
python web_main.py
服务器默认运行在 ws://localhost:8000
cd web
npm run dev
前端默认运行在 http://localhost:5173(Vite 默认端口)
打开浏览器访问 http://localhost:5173
创建 .env 文件(从 .env.example 复制):
# OpenAI API 配置
OPENAI_API_KEY=your_api_key_here # 必需:您的 API 密钥
OPENAI_BASE_URL=https://api.openai.com/v1 # 必需:API 基础 URL
OPENAI_MODEL=gpt-4 # 必需:使用的模型名称
# Redis 配置(必需)
REDIS_URL=redis://localhost:6379/0 # 必需:Redis 连接 URL
# Web 服务配置(可选)
WEB_PORT=8000 # WebSocket 服务器端口(默认 8000)
WEB_HOST=localhost # WebSocket 服务器主机(默认 localhost)
配置说明:
| 配置项 | 描述 | 示例 |
|---|---|---|
OPENAI_API_KEY | OpenAI API 密钥或兼容服务密钥 | sk-... |
OPENAI_BASE_URL | API 端点 URL | https://api.openai.com/v1 |
OPENAI_MODEL | 模型名称 | gpt-4, gpt-4-turbo, gpt-3.5-turbo |
REDIS_URL | 必需 Redis 连接 URL | redis://localhost:6379/0 |
WEB_PORT | (可选)WebSocket 服务器端口 | 8000 |
WEB_HOST | (可选)WebSocket 服务器主机 | localhost |
使用其他 API 服务:
如果您使用的是与 OpenAI 接口兼容的其他服务,只需修改 OPENAI_BASE_URL:
OPENAI_BASE_URL=https://your-api-service.com/v1
创建 mcp_config.json 文件(从 mcp_config.example.json 复制):
{
"servers": [
{
"name": "filesystem",
"protocol": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
},
{
"name": "weather",
"protocol": "sse",
"url": "http://localhost:8000/sse",
"timeout": 30
},
{
"name": "calculator",
"protocol": "streamablehttp",
"url": "http://localhost:8000/mcp",
"timeout": 30
}
]
}
协议说明:
| 协议 | 描述 | 必填字段 | 可选字段 | 适用场景 |
|---|---|---|---|---|
stdio | 通过标准输入/输出通信 | command, args | env | 本地命令行工具 |
sse | 通过服务器发送事件通信 | url | timeout, env | 支持 SSE 的 HTTP 服务 |
streamablehttp | 通过 HTTP 流式请求通信 | url | timeout, env | 标准 HTTP API 服务 |
超时配置:
timeout 超时(秒),仅对 SSE 和可流式传输 HTTP 协议有效注意: 如果不需要 MCP 工具,可以删除 mcp_config.json 文件或将 servers 数组设为空 []。
启动后,您将看到欢迎界面:
============================================================
欢迎使用 ReACT 智能助手!
============================================================
这是一个基于 ReACT 推理模式的智能助手,能够:
• 观察和理解您的问题
• 思考解决方案
• 使用工具执行操作
• 记住对话历史
输入 'exit' 或 'quit' 退出程序
输入 Ctrl+C 也可以随时退出
============================================================
您:
Enter 键或点击“发送”按钮发送消息助手消息支持以下 Markdown 格式:
# H1, ## H2, ### H3> 标记引用内容**粗体**, *斜体*react-agent-assistant/
├── src/ # 后端源代码
│ ├── agent_core.py # Agent 核心逻辑(ReACT 推理)
│ ├── cli.py # CLI 交互界面
│ ├── config.py # 配置管理
│ ├── mcp_manager.py # MCP 工具管理器
│ ├── model_provider.py # 模型提供者
│ ├── session_manager.py # 会话管理器
│ └── web_api.py # WebSocket API 服务
├── web/ # 前端源代码
│ ├── src/
│ │ ├── components/ # React 组件
│ │ │ ├── ChatWindow.tsx # 聊天窗口组件
│ │ │ ├── MessageInput.tsx # 消息输入组件
│ │ │ └── SessionList.tsx # 会话列表组件
│ │ ├── services/ # 服务层
│ │ │ └── websocket.ts # WebSocket 客户端
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── App.tsx # 主应用组件
│ │ └── main.tsx # 入口文件
│ ├── package.json # 前端依赖配置
│ └── vite.config.ts # Vite 构建配置
├── tests/ # 单元测试
├── openspec/ # OpenSpec 规范文档
├── main.py # CLI 入口
├── web_main.py # Web 服务入口
├── requirements.txt # Python 依赖
├── mcp_config.json # MCP 工具配置
└── README.md # 项目文档
pytest
项目使用 Python 标准代码风格,建议使用 black 或 autopep8 格式化代码。
cd web
npm run dev
cd web
npm run build
cd web
npm run preview
cd web
npm run lint
mcp_config.json 中间添加服务器配置