使用说明
AI学习助手代理
一个基于Python的现代AI学习助手代理,使用 快速API 和 MongoDB。生成全面的学习材料,包括任何主题的总结、要点、问题和答案。
主要特点
- REST API –用于生成和检索研究材料的FastAPI端点
- MongoDB存储 –研究交互的持久键值存储(键:主题,值:响应)
- 全文搜索 –按主题搜索存储的研究材料(部分/不区分大小写)
- 法学硕士论文摘要 –支持两者 假LLM (离线)和 OpenAI法学硕士 (真正的AI)
- 代理架构 –基于工具的流程,用于生成研究内容
- Docker支持 –使用Docker Compose容器化MongoDB
- 综合测试 –API端点和存储层的全面测试覆盖范围
快速开始
先决条件
- Python 3.10+
- Docker和Docker Compose(适用于MongoDB)
- 诗歌(用于依赖管理)
1.设置
克隆存储库并安装依赖项:
poetry install
2.配置.env
创建一个 .env 根目录中的文件:
# LLM Configuration
USE_OPENAI=false # Use 'true' for OpenAI, 'false' for offline mode
# OPENAI_API_KEY=sk-xxxxxxxx # Uncomment and add your key if USE_OPENAI=true
# OPENAI_MODEL=gpt-3.5-turbo # Specify model (optional)
# MongoDB Configuration
MONGO_URL=mongodb://admin:password@localhost:27017/ai_agent_db?authSource=admin
3.启动MongoDB
docker-compose up -d
这将启动MongoDB localhost:27017 使用凭据: admin:password
4.运行服务器
uvicorn app.web:app --reload --host 0.0.0.0 --port 8000
API将于 http://localhost:8000
Swagger 用户界面 (交互式API文档): http://localhost:8000/docs
API终点
1.生成学习材料
发布 /study
为某个主题生成学习材料并保存到MongoDB。
curl -X 'POST' 'http://localhost:8000/study' \
-H 'Content-Type: application/json' \
-d '{"topic": "What is AWS S3?"}'
答复:
{
"summary": "AWS S3 is a cloud storage service...",
"key_points": ["Point 1", "Point 2", ...],
"questions": ["Q1", "Q2", ...],
"answers": ["A1", "A2", ...]
}
2.列出所有研究材料
获取 /interactions
列出所有存储的研究材料(有限制支持)。
curl -X 'GET' 'http://localhost:8000/interactions?limit=100'
答复:
[
{
"id": "507f1f77bcf86cd799439011",
"topic": "What is AWS S3?",
"created_at": "2026-03-25T17:22:10.123456"
}
]
3.检索特定的研究材料
获取 /interactions/{topic}
通过精确的主题匹配检索完整的学习材料。
curl -X 'GET' 'http://localhost:8000/interactions/What%20is%20AWS%20S3?'
答复:
{
"summary": "AWS S3 is a cloud storage service...",
"key_points": [...],
"questions": [...],
"answers": [...]
}
4.搜索学习材料
获取 /interactions/search
按主题搜索存储的研究材料(部分匹配,不区分大小写)。
curl -X 'GET' 'http://localhost:8000/interactions/search?q=AWS&limit=10'
答复:
[
{
"id": "507f1f77bcf86cd799439011",
"topic": "What is AWS S3?",
"created_at": "2026-03-25T17:22:10.123456"
}
]
存储体系结构
MongoDB集合
数据存储在MongoDB中,结构如下:
db.interactions.insertOne({
_id: ObjectId("..."),
topic: "What is AWS S3?", // Key for search/retrieval
response: {
summary: "...",
key_points: [...],
questions: [...],
answers: [...]
},
created_at: ISODate("2026-03-25T17:22:10.123456Z")
})
数据流
- POST/研究 → 通过代理生成内容→ 保存到MongoDB
- GET/交互 → 全部从MongoDB获取
- GET/交互/{主题} → MongoDB中的精确匹配查找
- GET/交互/搜索 → MongoDB中的正则表达式搜索(不区分大小写)
运行测试
运行综合测试套件:
pytest tests/ -v
测试覆盖范围:
- 研究终点(有效/空主题、边缘案例)
- 列表端点(空、单个、多个项目、限制)
- 获取端点(现有、不存在、特殊字符)
- 搜索端点(完全匹配、部分匹配、不区分大小写、限制)
- 完整集成工作流程
项目结构
app/
├── agent/ # Core agent and planner logic
│ ├── agent.py
│ ├── planner.py
│ ├── llm_fake.py # Offline LLM mock
│ └── llm_openai.py # OpenAI LLM integration
├── api/
│ └── study.py # FastAPI endpoints
├── storage/
│ └── mongodb_store.py # MongoDB integration
├── tools/ # Agent tools (summary, questions, answers)
│ ├── summary_tool.py
│ ├── question_tool.py
│ └── answer_tool.py
├── export/
│ └── pdf_exporter.py # PDF export utility
├── rag/ # RAG/embeddings (optional)
├── domain/ # Data models
│ └── study_material.py
├── main.py # LLM factory
└── web.py # FastAPI app entry point
环境变量
| 变量 | 描述 | 默认值 | 必填 |
|---|---|---|---|
USE_OPENAI |
使用OpenAI LLM而不是离线 | false |
没有 |
OPENAI_API_KEY |
您的OpenAI API密钥 | - | 仅当 USE_OPENAI=true |
OPENAI_MODEL |
OpenAI模型名称 | gpt-3.5-turbo |
没有 |
MONGO_URL |
MongoDB连接字符串 | mongodb://admin:password@localhost:27017/ai_agent_db?authSource=admin |
没有 |
开发&离线模式
假LLM (默认)生成逼真的学习材料 没有API调用,非常适合:
- 本地开发
- 测试
- 不需要API密钥的演示
只要保持 USE_OPENAI=false 在 .env
使用OpenAI
要实现真正的AI响应:
- 集
USE_OPENAI=true在.env - 添加您的OpenAI API密钥:
OPENAI_API_KEY=sk-xxxxxxxx - (可选)指定型号:
OPENAI_MODEL=gpt-3.5-turbo
Docker编写服务
这 docker-compose.yml 包括:
- MongoDB 7.0 –用于存储交互的数据库
- 端口:
27017 - 用户名:
admin - 密码:
password - 数据库:
ai_agent_db
- 端口:
未来改进
- []用户身份验证和授权
- []研究材料版本
- []批量主题处理
- []PDF导出端点
- []每个工具的自定义提示
- []速率限制
许可证
MIT许可证-有关详细信息,请参阅许可证文件
问题或议题? 在GitHub上发布一个问题!