MiniAgent 是一个轻量级的智能代理框架,采用简洁的架构设计实现完整的智能代理功能。这是一个教学型项目,用约620行代码(包含文档)实现了完整的 ReAct(推理-行动)智能代理系统,具有良好的可扩展性和易读性。
mini_agent/
├── mini_agent/ # 核心模块包
│ ├── __init__.py # 模块初始化和导出 (20行)
│ ├── schema.py # 数据结构定义 (59行)
│ ├── tools.py # 工具系统实现 (187行)
│ ├── llm.py # LLM接口实现 (85行)
│ └── agent.py # 智能代理核心 (171行)
├── main_mini.py # 主运行文件(交互模式)(65行)
├── examples.py # 使用示例 (75行)
├── test_mini.py # 功能测试
├── requirements_mini.txt # 项目依赖 (3行)
├── README_MiniAgent.md # 项目说明文档 (203行)
├── LEARNING_GUIDE.md # 学习指南
└── PROJECT_FILES.md # 本文件清单
- 数据结构层 (
schema.py):统一的消息格式和状态管理
- 工具执行层 (
tools.py):可扩展的工具系统和执行器
- LLM接口层 (
llm.py):语言模型调用和响应处理
- 智能代理层 (
agent.py):ReAct执行循环和任务协调
| 文件 |
行数 |
主要功能 |
核心类/组件 |
mini_agent/schema.py |
59 |
数据结构定义 |
Message, Memory, AgentState, Role |
mini_agent/tools.py |
187 |
工具系统实现 |
BaseTool, ToolCollection, 3个具体工具 |
mini_agent/llm.py |
85 |
LLM接口封装 |
SimpleLLM, LLMResponse |
mini_agent/agent.py |
171 |
智能代理核心 |
MiniAgent 及 ReAct 执行循环 |
mini_agent/__init__.py |
20 |
模块导出 |
统一的API接口导出 |
| 工具类 |
功能描述 |
主要方法 |
PythonExecutor |
Python代码执行,支持输出捕获 |
execute(code) |
FileEditor |
文件读写和目录操作 |
execute(action, path, content) |
BashExecutor |
命令行执行,30秒超时保护 |
execute(command) |
| 文件 |
行数 |
主要功能 |
特色内容 |
main_mini.py |
65 |
交互式运行入口 |
支持持续对话和任务执行 |
examples.py |
75 |
使用示例集合 |
文件操作、Python执行、数据处理三类示例 |
test_mini.py |
~60 |
功能测试套件 |
无需API密钥的基础功能验证 |
| 文件 |
行数 |
主要内容 |
学习价值 |
README.md |
192 |
项目介绍、使用方法、功能特性 |
全面了解项目背景和功能 |
docs/learning-guide.md |
217 |
详细的代码学习路径和设计模式解析 |
深入理解架构设计 |
requirements.txt |
10 |
项目依赖列表 |
极简依赖:仅openai和pydantic |
# 1. 安装依赖
pip install -r requirements.txt
# 2. 设置API密钥
export OPENAI_API_KEY="your-openai-api-key"
| 运行模式 |
命令 |
说明 |
需要API密钥 |
| 功能测试 |
python test_mini.py |
验证基础功能 |
❌ |
| 交互模式 |
python main_mini.py |
持续对话执行任务 |
✅ |
| 示例演示 |
python examples.py |
三类典型用例 |
✅ |
while self.state == AgentState.RUNNING and self.current_step < self.max_steps:
# Think: 分析当前状态,选择工具
should_continue = await self.think()
# Act: 执行选定的工具
if should_continue:
await self.act()
- 抽象基类设计:统一的工具接口
BaseTool
- 自动转换:支持 OpenAI Function Calling 格式
- 错误处理:超时保护和异常恢复
- 插件式架构:易于添加新工具
- 现代化设计:基于 Python asyncio
- 并发支持:支持异步工具执行
- 性能优化:非阻塞的 LLM 调用
| 类别 |
行数 |
占比 |
说明 |
| 核心功能 |
522 |
85% |
实际业务逻辑 |
| 示例代码 |
75 |
12% |
使用演示 |
| 配置文件 |
23 |
3% |
依赖和导出 |
| 总计 |
620 |
100% |
包含文档在内 |
- 核心依赖:
openai>=1.10.0, pydantic>=2.0.0
- Python版本: 3.8+
- 编程范式: 异步编程 + 面向对象
- 架构模式: 分层架构 + 插件系统
- 概览理解 → 阅读
README_MiniAgent.md
- 环境验证 → 运行
test_mini.py
- 实际体验 → 运行
examples.py
- 交互尝试 → 使用
main_mini.py
- 架构理解 → 阅读
schema.py 理解数据结构
- 工具系统 → 分析
tools.py 的设计模式
- LLM集成 → 学习
llm.py 的API封装
- 核心逻辑 → 深入
agent.py 的ReAct实现
- 扩展开发 → 尝试添加自定义工具
- 完整阅读 → 通读所有源码和文档
- 性能分析 → 分析代码性能和优化点
- 功能扩展 → 实现新的工具和功能
- 架构优化 → 改进现有设计
- 生产部署 → 考虑生产环境适配
- 概念学习: 理解 ReAct 模式和智能代理原理
- 代码研读: 学习现代Python异步编程
- 架构设计: 了解分层架构和插件系统
- 工程实践: 掌握LLM集成和工具调用
- 快速原型: 验证新的代理策略和工具
- 基线实现: 作为研究对比的基准
- 扩展平台: 在此基础上开发专门化代理
- 教学演示: 课堂教学和技术分享
- 自动化脚本: 文件处理和系统管理
- 数据处理: 简单的数据清洗和分析
- 代码生成: Python程序编写和调试
- 学习助手: 编程学习和实验
总结: MiniAgent 成功地将复杂的智能代理概念浓缩到了约620行易读的代码中,是理解现代智能代理系统的绝佳起点,既保持了概念的完整性,又避免了不必要的复杂度。