“没人陪我写作业”这句话,乍一听像撒娇。但当它在去年某个中学生科创比赛的答辩现场被一个13岁女孩说出来时,我意识到,这是一个绝佳的产品痛点。她把这句话做成了一件获奖作品,核心不是新技术,而是把“AI陪伴”这件事想透了。这篇文章,我就拆一拆这个作品的构思、技术选型和现场表现,中学生能复现,成年人也能从中看到一套完整的AI应用落地思路。
1. 作品源起:从一个小情绪到获奖项目
1.1 为什么「没人陪我写作业」值得做一个AI作品
大多数成年人听到“没人陪写作业”,第一反应是“这孩子不够独立”。但站在13岁中学生的视角,这句话的真实含义是:遇到不会的题没人立刻解释,做完题没人帮忙检查,写累了没人说一句“差不多行了,休息一下”。这是学习场景里实实在在的陪伴缺失,不是矫情。
做AI项目,最怕选题太抽象。什么“智慧校园”“未来教育”,听着大,落到具体功能全是拼凑。而“没人陪我写作业”是高频、具体、有情绪的场景。它天然包含三类问题:知识辅导、进度督促、情感支持。这三类问题恰好分别对应了大模型的语言能力、任务拆解能力和语气控制能力。也就是说,这个选题不是硬蹭AI,而是AI天生适合干这个。
更重要的一点是,这个痛点评委能听懂。很多中学生项目评委听完一脸茫然,但这个作品讲解时,评委的第一反应是“哦,我孩子也需要这个”。共鸣感一来,项目就已经赢了一半。
1.2 这个作品到底长什么样
公开答辩时展示的核心功能有四个。第一,语音或文字输入“我今天有数学卷子、语文背诵、英语单词”,AI自动生成任务清单并预估每项时长。第二,针对单道题目,AI不是直接给答案,而是用苏格拉底式追问引导解题,比如问“这个公式里的x代表什么”。第三,完成一项任务后AI给出简短的鼓励语音,并记录到“成就本”。第四,如果超过设定时间没进度,AI会用温和语气提醒,而不是催命。
这其实就是一个典型的AI Agent雏形:理解意图、规划任务、执行调用、记忆状态、主动反馈。13岁的孩子当然不懂Agent形式化定义,但她通过产品设计自然做到了这几点。我后面详细拆技术,但大家可以先记住一个结论:中学生做AI作品,不需要去定义“什么是Agent”,只需要让AI具备“记住、规划、执行、反馈”这四种行为。
从交互形态看,她做了一个极简的网页应用,左侧是对话区,右侧是任务打卡列表。没有复杂仪表盘,没有花哨动画。她说“界面越像聊天软件,妈妈越觉得我在玩手机,但同学越觉得好用”,这个观察非常精准。目标用户是中学生,交互必须像日常聊天,而不是像学习软件。
1.3 项目拆分:一个初中生能hold住的技术栈
很多中学生一听“AI项目”就以为要训练大模型、调显卡、写PyTorch,完全被吓住。这个作品实际用到的技术栈非常克制:前端是HTML加简单JavaScript,后端是Python的Flask,模型调用的是现成大模型API,语音识别用的是现成接口,所有数据存在本地JSON文件里,没有数据库。
整套系统跑起来,核心代码量不到600行。这个体量,一个有一定自学基础的中学生完全可以在两三个月内搞定。关键是,这个技术选型是在老师引导下刻意“做小”的。她本来想搞人形机器人陪写作业,被劝住了。机器人涉及硬件成本、运动控制、多模态交互,坑太深,而且和“陪写作业”这个核心痛点关系不大。现在的方案,所有算力都在云端,本地只需要一个浏览器,稳定性反而更高。
被劝住的过程其实就是产品经理经常做的“需求收敛”。我见过太多参赛项目,败在功能花哨但核心不稳。一件作品能把“陪写作业”这一个场景做到70分,强过十个场景各做20分。
2. 核心细节解析与实操要点
2.1 大模型不是必需品,但选对接口是关键
这句话听起来反直觉,但事实确实如此。这个作品的核心竞争力不在模型,而在对话设计和记忆管理。市面上的大模型API,随便挑一个主流厂家的入门款,都能胜任“讲题、鼓励、提醒”这类轻量对话任务。真正决定体验的,是上下文怎么组织、数据怎么存、语气怎么控制。
她最初踩过一个大坑:选了一个当时很便宜的API,结果数学逻辑能力太弱,连“一元一次方程移项”都反复讲错。后来换成了中档配置的模型,成本虽然高一点,但稳定性明显提升。这个教训很适用于中学生项目:不要因为省钱选太弱的模型,也不要盲目追最新最强配置,够用就行。对学生来说,AP类的额度通常很低,挑一款在“数学推理”上口碑过关的入门级模型就是最优解。
另外要提醒一点:所有大模型API都需要联网,项目演示一定要提前准备网络备用方案。这个作品到了现场彩排时,场地Wi-Fi突然不稳定,差点翻车。最后解决办法是手机热点加本地录音演示,有惊无险。以后凡是做AI类参赛作品,一定把“离线演示预案”当成必选项。
2.2 把「陪写作业」拆成四种AI行为
整个作品的底层,其实是把“陪写作业”这个抽象动作,拆成了四种可以编程的行为。
第一种叫“任务拆解”。用户说“我有数学卷子、语文背诵、英语单词”,AI需要把它变成结构化清单,并为每个任务估算时长。这部分的实现方式是不直接让AI回复用户,而是先在内部让AI输出一个约定好的JSON结构,再渲染到页面上。这个设计非常妙,它避免了大模型自由发挥导致的格式混乱。
第二种叫“答疑引导”。当用户问一道题,AI不能直接给答案。提示词里明确写着“只提问,不解答,通过连续追问帮助用户自己找到思路”。为了防止AI偷偷直接输出步骤,还加了一个后置校验:如果回答长度超过150个字且没有问号,就判定为违规,强制重新生成。这个校验逻辑简单但非常有效,它保证了“引导”人设的一致性。
第三种叫“进度鼓励”。每次完成一个任务,AI从固定话术库里随机抽一句简短鼓励,加上任务名称一起播报。这里的细节是,话术必须短,且不能出现“真聪明”这种定性表扬,要说“这道题你用了两次移项,思路很顺”这种描述性反馈。
第四种叫“超时提醒”。如果系统发现用户在设定的番茄钟周期内没有任何操作,会主动推送一条消息,比如“你卡在数学卷子最后一道题大概十分钟了,要不要先做英语单词换换脑子”。这个行为涉及一个简单的状态判断逻辑,不复杂,但有很强的关怀感,是整场答辩最打动评委的亮点之一。
2.3 提示词设计:如何让AI像同学而不是搜索引擎
提示词是这个作品的灵魂,值得单独拿出来说。学生最初写的系统提示词是“你是一个耐心负责的老师”,结果实测效果很糟糕,AI的回应全是“首先我们需要仔细分析题目要求,然后逐步建立解题思路”这种满分废话,像极了不干正事的搜索引擎。
后来经过反复调整,最终沿用的提示词核心部分大概是这样的:
你是陪伴一个13岁初中生写作业的同学,不是老师。 你的语气要像同龄人,可以轻松、调侃,但不能轻浮。 禁止直接给出答案,只能通过提问引导。 每次回复不超过100个字,如果用户在解题中,优先追问下一步思路。 不要夸“你真聪明”,要描述具体做得对的地方。 如果用户连续三次答错同一类题,切换到“降低难度再引导”模式。这个提示词为什么有效?因为它给出了角色、禁忌、长度限制、行为偏好、异常处理五类信息。中学生常常把提示词当成一种“魔法口令”,其实提示词的本质是“给AI写产品需求文档”。把需求写清楚,AI才不跑偏。
还有一个容易被忽略的细节:系统提示词里设置了一个“身份认同”字段,告诉模型它的名字叫“小海”,用户是它的好友“小樱”。测试发现,给定具体名字之后,模型的语气明显放松下来,不再端着。这就是语言模型的社会化特质,你给它一个有温度的身份,它回应的文本也会更有温度。
3. 实操过程与核心环节实现
3.1 最小原型:一次API调用的完整链路
这个项目的起点不是界面,不是数据库,而是一个最简单的问答循环:用户在命令行输入问题,AI在命令行输出回答。整个原型只有不到30行Python,逻辑是“拼接对话内容,调用云端模型接口,打印结果”。我当时给学生的建议是,先不要碰前端,先验证“大模型能不能当好一个讲题陪练”,再考虑把它做成能给别人演示的产品。
import json import requests # 以常见的开放接口风格为例,实际以所选厂商文档为准 API_URL = "https://your-llm-endpoint/v1/chat/completions" API_KEY = "your-key-here" def ask_llm(messages): payload = { "model": "your-model-name", "messages": messages, "temperature": 0.7 } headers = { "Content-Type": "application/json", "Authorization": f"Bearer {API_KEY}" } resp = requests.post(API_URL, json=payload, headers=headers) data = resp.json() return data["choices"][0]["message"]["content"] if __name__ == "__main__": history = [] while True: user_input = input("你: ") if user_input == "退出": break history.append({"role": "user", "content": user_input}) reply = ask_llm(history) history.append({"role": "assistant", "content": reply}) print("AI:", reply)这段代码包含了三个关键点。第一,messages是一个列表,用来模拟多轮对话上下文;第二,temperature调到0.7,让回答带一点随机性,不至于每次都一模一样;第三,API返回的格式是标准的OpenAI兼容风格,现在绝大多数服务商都支持这种格式,迁移成本很低。
这个阶段最重要的一件事,不是写好提示词,而是亲身试出模型在“数学讲解”上的边界。比如让AI解一道二元一次方程组,再故意问“为什么这里要代入而不是消元”,观察模型能不能给出合理回答。只有亲自测试几十轮,才能判断这个模型适不适合自己的场景。这一步必须由学生自己完成,不能由老师代劳。AI产品的体验是一个非常主观的东西,只有目标用户亲手试过,才知道“像不像一个真人陪练”。
3.2 让AI记得“昨晚作业写到哪了”:本地记忆设计
纯API调用是“每次都失忆”的,关掉程序,再打开,它不知道你是谁,也不知道你昨天写到哪道题。这个作品对记忆提出了两个要求:一是跨天持续记忆,二是区分“短期对话状态”和“长期用户档案”。
短期状态很简单,就是把当前这一轮对话的messages列表保存在内存里。长期档案则用JSON文件存储在本地,结构大致是这样:
{ "user_name": "小樱", "preferred_subjects": ["数学", "英语"], "difficulty_nodes": [ {"subject": "数学", "topic": "分式方程", "status": "需巩固"}, {"subject": "英语", "topic": "现在完成时", "status": "掌握"} ], "tasks_today": [ {"id": 1, "content": "数学卷子最后三题", "done": false} ], "common_mistakes": [ {"question": "x/2 + 3 = 5", "wrong_answer": "x=1", "correct_step": "先移项再除"} ] }每次对话结束后,程序会做一次“记忆提取”:让大模型从本轮对话中提炼出三个字段——完成的任务、卡住的知识点、值得记录的错误。然后这个结构化的摘要覆盖写入本地JSON。下一次对话开始时,系统把JSON内容重新塞进系统提示词里,AI就“想起来”了。
这种“大模型对话时先读档,对话结束再存档”的思路,本质上就是一个非常原始的Agent记忆循环。难点不在于写代码,而在于设计“哪些信息值得记住”。如果什么细节都存,JSON文件会越来越大,对话时塞进提示词的记忆文本会无限膨胀,最终拖垮上下文窗口。所以记忆提取一定要通过结构化输出,只留下“任务完成情况、错题知识点、用户偏好”三类信息。
3.3 界面与交互:低年级学生也能用的语音入口
UI部分原本是想用现成的网页框架,后来发现对中学生来说学习成本还是太高。于是改成了一个更取巧的方案:后端用Flask提供API,前端用原生HTML加JavaScript写了一个极简聊天界面,左侧对话流,右侧任务清单,右下角一个“按住说话”按钮,调语音识别接口转成文字再发给后端。整个交互不超过20个控件,任何用户看一眼就会用。
语音入口是整个产品体验的关键。中学生写作业时,两只手通常握着笔,腾不出手打字,语音是最自然的交互方式。但语音识别在数学符号上非常拉胯,一句“y等于x平方加二x加一”识别出来可能变成“外等于艾克斯平方加爱克斯加一”。这个问题的解决方法是:显示区保留识别原文,同时后端再做一道“关键词修正”,把常见的同音词映射成数学符号后再送入大模型。这个细节虽然简单,却让整个系统在数学科目上的可用性上了一个台阶。
界面另一个被反复打磨的细节是“正在输入”的动画效果。一开始调用云端模型需要两三秒,页面没有任何反馈,用户会以为卡死了。后来加了一个简单的省略号跳动动画,配合一行字“小海正在想怎么提示你,而不是直接告诉你”,体验立刻好了很多。AI应用的响应速度不够时,一定要用界面反馈来兜底,这属于最基础的交互常识,但学生项目里很少有人注意。
4. 常见问题与排查技巧实录
4.1 大模型也会算错题,怎么拦
讲到数学题时,大模型确实会一本正经地胡说八道。有一次测试,AI把“(a+b)的平方”展开成了“a方加b方”,还振振有词地配了完整步骤。如果这个错误被评委现场抓到,整个项目可信度会大打折扣。
这个作品的应对方案是“三层防护”。第一层是提示词限制,写清楚“如果你不确定答案,请直接说‘这道题我需要想一想,我们先看一个更简单的例子’”。第二层是通过记忆文件里的“错题本”模式,用户提交答案后,系统先不判定对错,而是要求AI判断“用户的解题步骤是否合理”,将判断依据明文输出。第三层是面对复杂题目时,主动建议用户“把题目拍照发给老师”,勇敢承认AI的边界。
这个做法很实在。中学生AI项目不要试图证明“AI永远是对的”,评委反而更欣赏“项目清楚知道AI的弱点并设计了应对机制”。与其隐瞒失误,不如把失误变成你设计的亮点。
4.2 上下文窗口塞爆了怎么办
使用大模型API时,如果是免费或低配额阶段,通常上下文窗口有限。这个组件一开始把整本错题本都塞进系统提示词,结果调用直接报“上下文长度超限”。当时学生有点慌,我让她做一个实验:把错题本内容截成50条、20条、10条三个版本,分别测试回复质量。
实验发现,对“陪写作业”这种场景来说,塞进去的错题超过15条之后,AI不仅没有表现得更聪明,反而开始注意力涣散,回复开始混入不相关旧题的内容。后来设定的规则是:记忆文件最多保留最近5道错题和3个长期薄弱知识点,其他历史记录冷备到磁盘里,不参与对话。
这背后是一个直觉:“AI的记忆不是硬盘,更像是桌面。桌面上只能放正在做的任务,做完了就归档。”中学生做AI项目不需要掌握复杂向量检索,先学会做“记忆压缩和截断”,问题就解决了一大半。
4.3 未成年人项目的隐私与安全底线
这个作品的用户群体是未成年人,所以隐私安全不是加分项,而是硬门槛。所有对话记录和任务数据默认只储存在本地,不向任何第三方服务器发送。选用的云端API调用时,只发送必要对话内容,不开通“数据训练优化”选项,避免未成年人的学习数据被拿去训练模型。
尤其要注意的是,界面里不能出现任何诱导未成年人输入“学校名称、真实姓名、家庭住址”的字段。用户昵称随机生成,签到数据用“小海星数”替代真实头像和名字。我看了很多参赛作品,功能很强但隐私卫生乱七八糟,评委在这个问题上格外敏感,因为一旦出事就不是技术问题,而是伦理问题。
家长和指导老师在这个项目里也要有角色边界。家长定期查看云端调用记录,但不在孩子写作业时实时监看对话。这既保护孩子自主性,也让作品在答辩时能自信地说“我们做了全面的未成年人保护设计”,这句话的分量比任何技术指标都重。
4.4 现场评审被问到“这算不算作弊”怎么答
答辩现场几乎所有评委都会问一定类似问题:如果这个AI陪练越来越强,学生直接用AI把作业全做了,怎么区分“陪写”和“代写”?这个问题如果答不好,前面的技术工作会瞬间失去光彩。
作品给出的答案分了三层。第一层,底层提示词硬性禁止直接输出答案,整个系统的对话风格是“多问少答”,评委可以当场拿一道题测试,看AI是否遵守这个约束。第二层,系统会在每周总结中统计“独立完成率”和“求助次数变化”,如果发现独立完成率下降,主动建议用户关掉辅助模式一段时间,防止依赖。第三层,也是最打动评委的一句:“作弊的人不会搭一个AI来管着自己别抄答案,真正想学的人才会。”
这一句话讲完,全场安静了两秒,然后评委开始点头。产品设计可以模仿,技术方案可以学习,但这种对场景本质的思考,才是获奖的关键所在。
5. 从比赛到日常:这套方法的复用价值
5.1 同一套骨架还能做什么
把“陪写作业”这个壳换掉,底层的“任务拆解 + 对话引导 + 记忆反馈 + 主动提醒”骨架能迁移到非常多场景。比如“陪练口语”,AI每天给定一个英文主题,陪你聊五句话,再根据发音和流利度反馈;“陪练乐器”,用户报告今天练了什么曲子,AI给出分解练习建议;甚至还能做“陪爸妈学手机”,帮长辈把复杂操作拆成一步步指引。
这个骨架在技术上的通用性非常强,每个场景只需要换一套提示词和一套记忆字段。中学生如果想在这个基础上继续深入,有三条路径。第一条是做深记忆系统,引入向量数据库和语义检索,让AI能精准回忆起很久以前某个知识点;第二条是做多Agent协作,一个Agent负责讲题,一个Agent负责查资料,一个Agent负责监督学习状态,这属于AI Agent的进阶方向;第三条是接入更多本地能力,比如摄像头识别纸质作业,自动把错题导入系统。
对刚开始接触AI的中学生来说,不需要一上来就挑战全部。把一个骨架吃透,能把它迁移到三个不同场景,这种“元技能”比任何单点工具知识都值钱。
5.2 给中学生做AI项目的通用建议
带过几轮中学生AI项目之后,我越来越确信,这个年龄段的孩子做AI,最稀缺的不是编程能力,而是把生活问题“转译”成AI问题的能力,以及把一个想法克制落地的心性。
第一,选题一定要来自真实的“我”的痛点,不是为了比赛而编造。13岁女孩的“没人陪我写作业”为什么能打动人,因为它真实。评委和用户都厌烦那些从网上抄来的假需求。
第二,项目规模宁小勿大。400行能跑通的东西,不要为了炫技写成4000行。多一个模块就多一个出bug的地方。比赛看的是完成度和深度,不是代码量。
第三,AI项目迭代要用真实用户反馈驱动。这个作品发布了一版给班里同学试用,反馈排前三的需求是“别老催我”“说话能不能别像我妈”“能不能在我想不出的时候提示一下”。这些反馈直接决定了最终产品形态。学生要学会把一个粗糙版本扔给真实用户,然后认真听骂声。
第四,也是我反复强调的,要学会“向下卷”。如果你学有余力,比起学更多算法,不如把一个接口的完整调用链吃透,把提示词打磨到极致,把记忆管理做成一个干净的数据结构。整个行业现在最缺的不是“知道注意力机制的人”,而是“能把一个简单功能做得极其可靠的人”。
一点真实体会
这个项目做完之后,那个13岁女孩跟我说了一句让我印象很深的话:“我原本以为AI特别难,作品做完发现,难的不是AI,是搞清楚我到底想要它干什么。”她说的这句话,比我见过很多技术强的人总结更准确。
AI入门最核心的关卡,早就不是“会不会写代码”,而是“会不会定义问题”。把一个模糊的情绪变成清晰的功能,把一句话变成一个能跑的流程,把一堆反馈收敛成一个稳定的版本,这才是AI时代真正值得练习的能力。
“没人陪我写作业”只是一个起点。她真正做出来的,是一套属于自己的、把想法变成产品的思维方式。这条路一旦走通,后面的可能性会比我们想象的宽得多。