GOCLAWLLM ENGINEERING
GoClaw 首页

18. 最终综合项目的目录模板

综合项目2~4 周
学习目标
  1. 定义问题、基线和成功指标
  2. 实现数据—模型—评估—服务闭环
  3. 形成可复现、可审查的技术报告
前置知识
  • 完成训练或 RAG 主线
  • 掌握评估与服务基础

本章产物完整仓库、模型或索引产物、评估报告、服务演示和复盘。

综合项目不是把前面所有技术堆在一起,而是围绕一个清晰问题建立最小、可证明的闭环。推荐题目是“带精确引用的技术文档助手”,因为它同时覆盖检索、生成、工具、评估、服务和权限,又不要求从零训练大模型。

18.1 先写项目契约

实现前在 README 顶部回答:

用户:谁会使用?
任务:输入和期望输出是什么?
范围:只支持哪些文档、语言和问题?
不做:哪些能力明确排除?
成功:质量、延迟、安全分别达到什么?
失败:何时拒答、转人工或回滚?

示例成功标准:

维度指标门槛示例数据来源
检索Recall@5预先定义人工标注 query—document
回答关键事实正确率预先定义独立 test cases
引用claim 被引用支持预先定义双人复核或明确 rubric
拒答无证据问题正确拒答预先定义不可回答集
性能TTFT/P95目标硬件实测固定长度与并发基准
安全越权读取必须为 0跨 Workspace 测试

门槛应在看最终结果之前确定;否则容易根据已有结果移动目标。

18.2 推荐目录

llm-capstone/
├── README.md
├── pyproject.toml
├── configs/
│   ├── train.yaml
│   ├── inference.yaml
│   └── eval.yaml
├── data/
│   ├── README.md
│   ├── train.jsonl
│   ├── valid.jsonl
│   └── test.jsonl
├── src/
│   ├── data.py
│   ├── train.py
│   ├── infer.py
│   ├── rag.py
│   ├── tools.py
│   └── server.py
├── eval/
│   ├── cases.jsonl
│   ├── run_eval.py
│   └── rubric.md
├── tests/
│   ├── test_data.py
│   ├── test_tools.py
│   └── test_api.py
├── artifacts/
└── reports/

每个目录的责任:

18.3 四个里程碑

M1|可测量基线。 不做微调,只完成关键词检索、固定模型或规则回答和 30 条测试集。提交原始输出与错误分类。

M2|检索闭环。 加入 chunk、embedding 或 rerank 之前先保留 BM25;分别报告检索和生成指标。权限过滤必须发生在候选返回之前。

M3|服务闭环。 提供健康检查、生成接口、超时、取消、错误 schema 和基本指标。使用固定请求集测量 P50/P95,不只手工点一次。

M4|发布评审。 比较 M1 与最终方案,运行不可回答、安全、性能和回归集;根据预设门槛给出发布或不发布结论。

每个里程碑都必须能单独演示和回退。若 M2 失败,M1 仍应可运行;这比最后一天才集成所有组件更容易教学和排错。

18.4 最小 API 与测试契约

GET  /healthz          进程与模型是否就绪
POST /v1/query         问题、Workspace、检索参数
GET  /metrics          本地或受保护的指标

POST /v1/query 至少测试:正常问题、空问题、超长输入、无证据、非法参数、取消、超时和跨 Workspace 文档。若工具包含写操作,还要增加幂等键、审批和重复请求测试。

18.5 项目纪律

18.6 最终评分 Rubric

项目权重满分标准
问题与边界10用户、范围、风险和成功门槛明确
数据与检索15来源可追溯、无泄漏、检索独立评估
模型与方法15有 baseline,架构选择有证据而非堆技术
评估20逐样本、对照、失败类型和不确定性完整
系统工程15API、错误路径、超时、权限和可观察性
安全与隐私10越权、注入、敏感日志与回滚经过测试
可复现性10新环境可按 README 重建关键结果
技术表达5结论准确,清楚区分事实、实验与推断

一票否决:测试数据泄漏、使用无许可数据、凭据写入仓库、跨 Workspace 越权,或无法说明最终结果来自哪个模型/索引/配置版本。

18.7 答辩问题

  1. 为什么你的问题需要 LLM,而不是搜索、规则或普通分类器?
  2. 哪个 baseline 最强?最终方案在哪些样本上仍然更差?
  3. 如果删除 RAG、Adapter 或 Agent 循环,指标分别怎样变化?
  4. 一个回答的引用如何证明支持具体 claim?
  5. 并发增加时瓶颈首先出现在哪里?
  6. 如何证明用户 A 不能检索用户 B 的文档?
  7. 明天模型仓库或文档更新,怎样回归和回滚?

能够用仓库中的原始证据回答这些问题,才算完成综合项目。

参考实现:技术文档助手离线 M1/M2。它可以先在无模型、无 GPU 的条件下完成检索与证据链,再按 M3/M4 清单接入真实生成和服务。