# 5.1 项目选题与架构设计

> **第5周 | 第1课 | 项目选题与架构设计 | 预计时长：30分钟**

---

## 学习目标

- 了解5个综合项目选项的特点、难度和技术要求
- 掌握AI Agent系统的架构设计方法论
- 能够独立完成项目选题并填写架构设计文档
- 明确各组件之间的数据流向和交互关系

---

## 一、项目选题

综合项目是整个实战营的收官之作，目的是将你前四周学到的知识（单Agent、多Agent、MCP工具、记忆系统）融会贯通，搭建一个完整的自动化工作流。以下是5个选题供你选择：

### 选项1：内容营销自动化（Content Marketing Automation）

**难度：** 中等

**做什么：** 给定一个主题或关键词，自动完成"搜集素材 -> 撰写文章 -> 生成配图提示词 -> 排版发布"的全流程。

**需要的技术：**
- 搜索引擎/新闻API（获取素材）
- LLM 文本生成（撰写草稿）
- 图片生成API或提示词生成（配图）
- 社交媒体发布API（可选：微博、微信公众号等）
- 记忆系统（存储用户偏好、品牌调性）

**预期产出：**
- 输入一个主题，输出一篇完整的营销文章（含标题、正文、标签、配图建议）
- 可配置文章风格（专业、轻松、营销向）
- 支持多平台格式适配

**预估工作量：** 3-5小时

### 选项2：股票分析助手（Stock Analysis Assistant）

**难度：** 中等

**做什么：** 输入股票代码，自动获取行情数据、财务数据、新闻舆情，生成综合分析报告，并给出投资建议。

**需要的技术：**
- 金融数据API（如Tushare、AKShare、Yahoo Finance）
- LLM 分析推理
- 数据可视化（matplotlib 或生成图表描述）
- 记忆系统（保存关注的股票、历史分析记录）
- 定时任务（可选：每日自动推送）

**预期产出：**
- 输入股票代码 -> 输出分析报告（技术面+基本面+舆情面）
- 支持多股票对比
- 可设置价格预警

**预估工作量：** 3-5小时

### 选项3：智能客服系统（Smart Customer Service）

**难度：** 中等

**做什么：** 模拟企业客服场景，能够理解用户问题、查询知识库、处理常见工单、升级复杂问题。

**需要的技术：**
- 向量数据库（FAQ知识库检索）
- 多Agent协作（分类Agent + 检索Agent + 回复Agent）
- MCP工具（工单系统、CRM系统接口）
- 记忆系统（对话历史、用户画像）

**预期产出：**
- 用户输入问题 -> 自动分类 -> 检索答案 -> 生成回复
- 无法回答时自动升级人工
- 记录服务质量和常见问题统计

**预估工作量：** 4-6小时

### 选项4：文档处理Agent（Document Processing Agent）

**难度：** 中等

**做什么：** 接收文档（PDF/Word/Excel），自动完成"解析 -> 提取关键信息 -> 摘要 -> 格式化输出 -> 归档"。

**需要的技术：**
- 文档解析库（PyPDF2、python-docx、openpyxl）
- LLM 信息提取和摘要
- 文件存储系统（本地或云存储）
- MCP工具（OCR服务、翻译API）
- 记忆系统（处理记录、模板偏好）

**预期产出：**
- 上传文档 -> 自动解析 -> 提取关键信息 -> 生成摘要报告
- 支持批量处理
- 可自定义提取模板

**预估工作量：** 3-5小时

### 选项5：会议助手（Meeting Assistant）

**难度：** 较难

**做什么：** 会前自动准备议程和资料，会中实时记录要点和行动项，会后自动生成会议纪要并分发任务。

**需要的技术：**
- 语音转文字API（如Whisper）
- LLM 摘要和结构化提取
- 日历/邮件API（日程集成）
- 多Agent协作（记录Agent + 摘要Agent + 任务分配Agent）
- 记忆系统（历史会议、项目上下文）

**预期产出：**
- 会前：自动收集相关资料，生成议程草案
- 会中：实时转录，标记关键决策和行动项
- 会后：生成结构化会议纪要，自动发送邮件和任务

**预估工作量：** 5-8小时

### 选题建议

```
┌──────────────────────────────────────────────────────────────┐
│                     选题决策树                                 │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  你有API密钥吗？                                              │
│  ├── 有 -> 你有金融数据API？                                  │
│  │       ├── 有 -> 选 [2] 股票分析助手                        │
│  │       └── 无 -> 你有社交媒体API？                          │
│  │               ├── 有 -> 选 [1] 内容营销自动化               │
│  │               └── 无 -> 选 [4] 文档处理Agent               │
│  │                                                            │
│  └── 没有 -> 你对哪个领域最熟悉？                              │
│              ├── 客服/销售 -> 选 [3] 智能客服系统              │
│              ├── 内容/运营 -> 选 [1] 内容营销自动化             │
│              ├── 办公/效率 -> 选 [5] 会议助手                  │
│              └── 数据处理 -> 选 [4] 文档处理Agent              │
│                                                              │
│  时间充裕想挑战？-> 选 [5] 会议助手（最难但最全面）             │
│  想稳妥完成？    -> 选 [1] 或 [4]（资料多，容易出成果）         │
└──────────────────────────────────────────────────────────────┘
```

---

## 二、架构设计

选定项目后，下一步是设计系统架构。无论你选择哪个项目，都可以遵循以下通用模板。

### 2.1 系统架构图模板

```
┌─────────────────────────────────────────────────────────────────┐
│                        用户接口层                                 │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐                   │
│  │ CLI 终端  │    │ Web UI   │    │ API 接口  │                   │
│  └────┬─────┘    └────┬─────┘    └────┬─────┘                   │
│       │               │               │                          │
│       └───────────────┼───────────────┘                          │
│                       ▼                                          │
│              ┌────────────────┐                                  │
│              │  协调器/路由器   │  <-- 入口，分发请求到对应Agent     │
│              └───────┬────────┘                                  │
│                      │                                           │
│       ┌──────────────┼──────────────┐                            │
│       ▼              ▼              ▼                            │
│  ┌─────────┐   ┌─────────┐   ┌─────────┐                       │
│  │ Agent A │   │ Agent B │   │ Agent C │   <-- 业务Agent层      │
│  │ (分类)   │   │ (处理)   │   │ (审核)   │                       │
│  └────┬────┘   └────┬────┘   └────┬────┘                       │
│       │              │             │                             │
│       └──────────────┼─────────────┘                             │
│                      ▼                                            │
│              ┌────────────────┐                                  │
│              │    工具/MCP层    │  <-- 外部能力                     │
│  ┌──────────┼──────────┬──────┼──────────┐                      │
│  ▼          ▼          ▼      ▼          ▼                      │
│ 搜索API    数据库     文件IO  Web抓取   其他API                   │
│  └──────────┴──────────┴──────┴──────────┘                      │
│                                                                  │
│              ┌────────────────┐                                  │
│              │   记忆/存储层    │  <-- 持久化                       │
│  ┌──────────┼──────────────────┐                                │
│  ▼          ▼                  ▼                                 │
│ 短期记忆   长期记忆向量库      文件系统                           │
└─────────────────────────────────────────────────────────────────┘
```

### 2.2 组件清单模板

填写以下表格，明确你的项目需要哪些组件：

| 组件名称 | 职责描述 | 输入 | 输出 | 依赖 |
|---------|---------|------|------|------|
| 例：分类Agent | 判断用户意图类型 | 用户输入文本 | 意图标签 | LLM |
| | | | | |
| | | | | |
| | | | | |

### 2.3 数据流模板

用文字描述一个完整的请求处理流程：

```
步骤1: 用户输入 [什么]
  -> 经过 [哪个组件]
  -> 产出 [什么结果]

步骤2: [结果] 传递给 [哪个组件]
  -> 调用 [什么工具/MCP]
  -> 获取 [什么数据]

步骤3: [数据] 交给 [哪个Agent]
  -> 结合 [什么记忆/上下文]
  -> 生成 [什么输出]

步骤4: [输出] 经过 [审核/格式化]
  -> 返回给用户 / 存储到 [哪里]
```

### 2.4 技术选型清单

| 技术层 | 候选方案 | 最终选择 | 选择理由 |
|-------|---------|---------|---------|
| LLM框架 | LangChain / CrewAI / AutoGen / 原生API | | |
| 记忆系统 | SQLite / ChromaDB / FAISS / 文件系统 | | |
| 工具/MCP | 自建 / MCP官方协议 / 直接调用API | | |
| 用户接口 | CLI / Streamlit / FastAPI + 前端 | | |
| 部署方式 | 本地运行 / Docker / 云端 | | |

---

## 三、动手练习

### 练习1：填写你的项目架构设计文档

根据你选择的项目，填写以下架构设计文档：

```markdown
## 我的项目：[项目名称]

### 项目描述
[用3-5句话描述你的项目做什么]

### 系统架构图
[画出你的系统架构图，参考上面的模板]

### 组件清单
[列出所有组件及其职责]

### 数据流
[描述一个完整的请求处理流程]

### 技术选型
| 技术层 | 选择 | 理由 |
|-------|------|------|
| LLM框架 | | |
| 记忆系统 | | |
| 工具/MCP | | |
| 用户接口 | | |

### 风险与难点
[列出你预见的2-3个技术难点]
```

### 练习2：画出数据流图

用下面的模板画出你项目的数据流：

```
输入 ──→ [组件1] ──→ [组件2] ──→ [组件3] ──→ 输出
           │            │            │
           ▼            ▼            ▼
         [工具A]     [工具B]      [存储C]
```

### 练习3：列出依赖清单

```bash
# 你的项目需要的外部依赖
# 格式：名称 | 用途 | 是否有API密钥

例如：
- Tushare | 股票数据 | 需要注册获取token
- OpenAI API | LLM推理 | 需要API key
- ChromaDB | 向量存储 | 本地运行，无需密钥
```

---

## 四、架构设计 Checklist

在完成架构设计后，逐项检查：

- [ ] 明确了项目要解决的核心问题
- [ ] 画出了系统架构图（至少包含3层：接口层、Agent层、工具/存储层）
- [ ] 列出了所有组件及其职责、输入输出
- [ ] 描述了一个完整的端到端数据流
- [ ] 确定了技术选型并说明了理由
- [ ] 识别了至少2个技术难点或风险点
- [ ] 确认了所有需要的API密钥和外部服务可用
- [ ] 评估了工作量，确保在规定时间内可以完成

---

## 五、本周时间安排建议

```
┌──────────────────────────────────────────────────┐
│              Week 5 时间规划                      │
├──────────────────────────────────────────────────┤
│                                                  │
│  Day 1 (今天)                                     │
│  ├── 5.1 项目选题与架构设计 (30min)               │
│  │   └── 完成：选题 + 架构设计文档                 │
│  └── 开始搭建项目骨架                              │
│                                                  │
│  Day 2                                            │
│  ├── 5.2 项目开发指南 (60min)                     │
│  │   └── 完成：核心Agent + 基础工具               │
│  └── 继续开发：工具集成                            │
│                                                  │
│  Day 3                                            │
│  ├── 5.3 中期评审与问题修复 (30min)               │
│  │   └── 完成：自测 + 问题记录                    │
│  └── 修复发现的问题                                │
│                                                  │
│  Day 4                                            │
│  ├── 5.4 项目完善与答辩准备 (60min)               │
│  │   └── 完成：README + 演示准备                  │
│  └── 录制演示视频                                  │
│                                                  │
└──────────────────────────────────────────────────┘
```

---

## 小结

本课完成了以下工作：

1. **了解了5个项目选项**：每个项目都有明确的输入输出、技术栈和工作量预估。选择时考虑你的兴趣、已有API资源和可用时间。
2. **掌握了架构设计方法**：通过系统架构图、组件清单、数据流和技术选型四个维度，建立完整的项目蓝图。
3. **填写了架构设计文档**：为接下来的开发打下了清晰的规划基础。

**下一步：** 进入 5.2 项目开发指南，开始搭建项目骨架并实现核心Agent。
