AI学习助手

一款基于Python的AI学习助手,使用FastAPI和MongoDB构建,可生成包含摘要、关键点、问题和答案的学习材料。

  • by peterbartahu
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 peterbartahu/ai-agent-mcp-server

使用说明

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")
})

数据流

  1. POST/研究 → 通过代理生成内容→ 保存到MongoDB
  2. GET/交互 → 全部从MongoDB获取
  3. GET/交互/{主题} → MongoDB中的精确匹配查找
  4. 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响应:

  1. 集 USE_OPENAI=true 在 .env
  2. 添加您的OpenAI API密钥: OPENAI_API_KEY=sk-xxxxxxxx
  3. (可选)指定型号: OPENAI_MODEL=gpt-3.5-turbo

Docker编写服务

这 docker-compose.yml 包括:

  • MongoDB 7.0 –用于存储交互的数据库
    • 端口: 27017
    • 用户名: admin
    • 密码: password
    • 数据库: ai_agent_db

未来改进

  • []用户身份验证和授权
  • []研究材料版本
  • []批量主题处理
  • []PDF导出端点
  • []每个工具的自定义提示
  • []速率限制

许可证

MIT许可证-有关详细信息,请参阅许可证文件


问题或议题? 在GitHub上发布一个问题!