毕业项目选题:先写评测集,再写代码
12 个候选题的可行性打分 + 一套把范围砍到能做完的方法
最后一章,你要做一个自己的东西——公网能访问、别人能用、你敢发出去。
这一节只解决一件事:选一个你两周内真能做完的题。
绝大多数毕业项目死在同一个地方:题选大了。"做一个 AI 客服系统"听起来很棒,做到第三天你会发现自己在写用户登录、工单流转、后台管理——而 AI 的部分一行都没动。
还有一条反直觉的建议,来自这门课的全部内容:先写评测集,再写代码。
新手厨师最容易犯的错不是手艺差,是菜单太长。
一个只做三道菜、每道都做到位的小馆子,活得比一个有八十道菜、每道都马马虎虎的餐厅久得多。你的毕业项目要做那家小馆子。
一、好题的四个特征
| 特征 | 说明 | 反例 |
|---|---|---|
| 输入输出都很窄 | 一句话说清"给它什么、它给你什么" | "一个能聊天的助手"——输入输出都是开放的 |
| 有客观的对错 | 你能标注出标准答案(AP5 的前提) | "写一篇好文案"——好坏说不清 |
| 数据你手上就有 | 不需要爬、不需要采购、不需要授权 | "分析全网评论"——数据从哪来 |
| 一个人两周能做完 | 减掉登录、后台、支付,核心链路 ≤ 3 步 | "AI 客服系统"——大半时间在做非 AI 部分 |
第二条最容易被忽略,也最致命:没有客观对错的题,你没法做评测;没有评测,AP5 到 AP8 的一切都用不上——你会退回到"我觉得这样更好"的状态,而这门课的全部价值就是帮你离开那个状态。
二、12 个候选题(按可行性打分)
打分维度:窄(输入输出是否明确)、可评(能否标注对错)、数据(是否手上就有)、工期(一个人两周)。★ 越多越好做。
| 题目 | 窄 | 可评 | 数据 | 工期 | 用到的章节 |
|---|---|---|---|---|---|
| 合同关键条款抽取(甲乙方/金额/期限/违约) | ★★★ | ★★★ | ★★★ | ★★★ | AP3 主线 |
| 报销单据合规检查(对照公司制度判合规) | ★★★ | ★★★ | ★★★ | ★★★ | AP3+AP4 |
| 产品文档问答(基于你自己的文档) | ★★★ | ★★★ | ★★★ | ★★★ | AP4 主线 |
| 客服工单分类 + 建议回复 | ★★★ | ★★★ | ★★ | ★★★ | AP2+AP3 |
| 简历与岗位匹配打分 | ★★ | ★★ | ★★ | ★★★ | AP3+AP5 |
| 会议纪要 → 待办事项抽取 | ★★★ | ★★★ | ★★ | ★★★ | AP3 |
| 论文/报告的结构化摘要 | ★★ | ★★ | ★★★ | ★★★ | AP2+AP3 |
| 代码 diff 的风险提示 | ★★ | ★★ | ★★★ | ★★ | AP3+AP5 |
| 电商评论的诉求归类 + 优先级 | ★★★ | ★★★ | ★★ | ★★★ | AP2+AP5 |
| 政策文件问答(带引用) | ★★★ | ★★★ | ★★ | ★★ | AP4 全套 |
| 表格数据的自然语言查询 | ★★ | ★★★ | ★★★ | ★★ | AP3 |
| 通用聊天助手 | ✗ | ✗ | — | ✗ | 别选 |
最推荐前四个:它们都满足"窄 + 可评 + 数据现成",而且每一个都能直接用上本课的完整链路(评测→提示词→结构化→检索→门禁→上线→定价)。
最后一行认真的:通用聊天助手是最诱人也最不该选的题——它没法评测、没有边界、也没有人会为它付钱。
三、把范围砍到能做完
砍范围的三刀:
第一刀:砍功能。只做一条主链路。用户从进来到得到结果 ≤ 3 步。
第二刀:砍非 AI 部分。
| 常见时间黑洞 | 毕业项目里怎么办 |
|---|---|
| 用户登录/注册 | 不做。用一个 URL 参数或简单口令区分用户 |
| 后台管理 | 不做。直接看数据库/日志 |
| 支付 | 不做。AP8 的定价写成方案,不实现收款 |
| 精美 UI | 不做。一个输入框 + 结果区 + 停止按钮就够(ap7.3) |
第三刀:砍数据规模。知识库 20-50 篇文档就够验证一切(ap4.3 实测过:切分策略的差别在 10 条样本上就能看出来)。
砍完之后,你的项目应该长这样:
一个输入框 → 一次调用(可能带检索)→ 一个结构化结果 + 引用
配套:评测集 50 条、门禁脚本、成本流水、降级兜底、审核、监控
看起来很小?那正是重点。前面那半行是"功能",后面那一行才是这门课教的东西——也是把玩具和产品分开的东西。
四、先写评测集,再写代码
这是本节最反直觉、也最该照做的一条。
顺序:
为什么必须是这个顺序:
- 标注的过程会逼你想清楚产品定义。ap5.1 说过:标注时纠结超过 10 秒的样本,通常暴露了你的产品定义本身模糊——这些问题在写代码前发现,比写完再发现便宜十倍;
- 没有基线,你没法判断任何改动。先写代码的人,会在"感觉好像好了一点"里浪费掉整整两周;
- 评测集本身就是交付物的一部分。你交出去的不只是一个能跑的东西,是一个"有证据说明它有多好"的东西——这才是专业版和业余版的差别。
🔧 动手做:定题并写出评测集(60 分钟)
- 从上面的表里选一个题(或者按四个特征自己想一个),写下你选它的理由。
- 一句话写清输入输出,贴在文档最上面——后面每次想加功能时,回头看这句话。
- 收集 30-50 条真实样本。真的去找你手上的文档/工单/记录,别用编的。
- 写标注标准(一页纸),然后标注。记下你纠结超过 10 秒的那些。
- 另留 10 条保留集,单独存,承诺开发期间不看(ap5.1)。
- 写下"我不做什么":登录、后台、支付、精美 UI……明确写出来,防止自己手痒。
✅ 做到这里你应该有:一句话的项目定义 + 50 条标注好的评测集 + 10 条保留集 + 一份"不做清单"。
为什么:这一节没有一行代码,但它决定了你后面两周是在做产品还是在挣扎。
选题选窄一点、范围砍狠一点、评测集写在前面——这三件事做对了,毕业项目就成功了一半。而这三件事,恰好也是你以后每次开新项目都该做的。
你会在第 5 天冒出这个念头,而且它听起来非常合理:"加个历史记录用户体验会好很多"、"顺便支持一下 PDF 吧"、"要不要做个多轮对话"。
三条防线:
① 写下来,不做。开一个 IDEAS.md,想到什么写进去——写下来这个动作本身就能缓解冲动,而且这份清单是你项目的第二阶段路线图。
② 回头看那一句话。"给它 X,它返回 Y"——新功能改变这句话了吗?改变了就别做。
③ 用评测集判断。真觉得某个改动重要?先加 5 条能测出这个改动价值的样本,跑一下。跑不出差别的功能,不做(本课已经实测了四次"改了但没用")。
记住 ap2.4 那个实测:多写 127 个字的提示词,成本涨 43%,分数一点没动。功能也一样——不能被测出价值的功能,大概率没有价值。
我想做的毕业项目是【描述】。请帮我:1) 用「窄/可评/数据/工期」四个维度给它打分,指出最大的风险;2) 如果太大,给我三个逐级收窄的版本(两周版、一周版、三天版),每个都说明砍掉了什么;3) 一句话写清最终版的输入输出;4) 列出这个题的评测集该包含哪些类型的样本(含边界和「不该答」),给出 10 条示例;5) 写一份标注标准草稿(一页纸);6) 列出我应该明确「不做」的东西。
选题四句话:好题要窄、可评、数据现成、两周能完、砍三刀(功能/非 AI 部分/数据规模)、先写评测集再写代码、"我想加个功能"写进 IDEAS.md 而不是写进代码。
下一节讲怎么把它真的做出来:和 AI 结对的两周工作流——每天做什么、怎么让 AI 帮你写而不是帮你埋坑。
🔎 来源与核验· 1 条,点开核对
