推荐这篇文章,作者完整展示了怎么用 LLM 做一个真正好用的个人工具,重要的是,他展示了如何让 LLM 取代那些你之前觉得不好用的产品,服务,非常值得参考。
作者分享了自己的真实经验,用了个月、迭代了多个版本的产品。作者遇到的每一个坑(模型选错、prompt 架构设计、延迟优化)都是实战教训。如果你也想用 LLM 改造自己的工作流,这篇是最佳案例。
---
我取消了 $200/月的法语家教,自己写了个 LLM 替代品,效果更好
几个月前,我还在用传统方式学法语——每周一次 45 分钟私教课,每月 $200。导师学术背景扎实,教学有方。但几个月下来,我发现讲了很多,记住的却不多。
每节课前 20 分钟在对,然后花大量时间回顾已经讲过的内容。新语法点进展很慢,我越来越不耐烦。
我读过足够多关于遗忘曲线的文章,也知道 LLM 工具摆弄了挺久。所以开始想:能不能自己做一个——更好,更便宜?
问不是教学质量。是两个结构性问。
第一,复习节奏。人类导师按日历来排课。我需要的算法应该按遗忘曲线来排——在刚要遗忘之前正好复习,而不是在随机时间迟来的回顾。这叫间隔重复,背后有 40 年的记忆研究。Anki 这类 APP 已经证明了它有效。问是怎么把它应用到比闪卡更细腻的东西上。
第二,错误追踪。我的导师大概记得我哪里弱,会在合适的时候测试我。但一个类型为"Alex 在虚拟语气上挣扎"的数据点不够用。我需要的是:"Alex 在否定句中持续用 avoir 做 aller 的 passé composé 助动词。"这才够精确,解决起来才快。
我还琢磨:真的要花钱就为了对前 20 分钟,而且一周只能聊一次?我能不能随时练口语,免费或者几乎免费?
所有这些,感觉都是可以解决的软件问。
架构:两个关键组件
一个知识库导师,一个语音练习应用,互相配合。
知识库导师是一个基于 Claude 的文本工作流。它维护一个 JSON 文件,追踪我学过的每一个语法点——上一次什么时候复习、当时信心如何、具体哪里错了、什么时候又该复习了。每次 session 前,它读这个文件,找出该复习的内容,生成难度递增的练习:先选择,再填空,再翻译,最后自由输出。session 结束后,所有数据写回文件。
底层算法是 SM-2——Anki 用的同一个。每次练完一个 topic,我给自己打分 1 到 4。分数调整两个参数:这个 topic 对我来说的自然掌握程度,和下次复习的时间间隔。连续四次满分,三周后见。彻底忘了,明天见。久而久之,它构建出一个按 topic 划分的、针对我个人的遗忘曲线模型。
弱点追踪是真正有用的地方。不记录"Alex 在 passé composé 上挣扎",而是记录"否定句中运动动词用错助动词——自 2026-04-12 起"。下次这个 topic 被复习时,练习就围绕这个具体结构来出——不是泛泛的 passé composé 练习,而是精确炸那个曾经过不去的点。
语音导师叫 Causons,是一个浏览器应用。点一下麦克风,说,听到同一个语言的回复。启动时它读取同一个知识库文件,把对引导向该复习的 topic 和已知的薄弱点。它还会在对流中纠正语法错误——但只纠正那些客观上就是错的、母语者绝对不会说的东西。转录错误、标点、语域选择、口语缩略——默认忽略。
两个组件分工明确。知识库导师建立知识。Causons 在对场景中激活它。你可以理论上掌握反身代词的规则,然后在真要说出口的时候完全卡住。语音应用的作用就是打破这个壁垒。
语音管线是三次 API 调用串联:
语音转文字走 Groq,跑 Whisper-large-v3。Azure 认知服务有免费层,看起来是低成本首选。没用多久就推送到付费层——不是因为用量超标,就是开始用免费层了。体验很差。换到 Groq,同一个模型,硬件更快(200-500ms vs OpenAI 的 800-1500ms),价格约 $0.002/分钟。
对走 gpt-4o-mini。这块费了挺长时间。最初用 Groq 的 Llama 3.3 70B,因为更便宜、能力不差。日常规范法语还行,但碰到完全正常的口语表达会自信地解释为什么它错了——实际没错。花了很长时间 prompt engineering,最后结论是问不在 prompt,在前端模型对口语化法语语法的底层知识不行。切到 gpt-4o-mini 解决了。每 session 成本差异可以忽略。
文本转语音走 OpenAI tts-1,和 gpt-4o-mini 共用一把 key。Nova 和 Onyx 音色自动适配语言,无需配置。ElevenLabs 音质更好,但第三家 provider 和 $5/月起步价不值得。
总结:一次 15 分钟的 session,三道 API 总共约 4 美分。
Prompt 架构的设计思路也很有启发。
语言导师的 prompt 里有两种性质完全不同的内容。教学策略——什么时候该纠正、怎么措辞、什么语域——对每个用户基本稳定,应该跨 session 保持不变。上下文数据——今天练哪个语言、哪些 topic 该复习了、最近错了哪些东西——每次都在变,应该每次都从源重建。
第一版把两者混在一起,一个星期后 prompt 里塞着过期的 topic 列表。修复方法是把它们当两类数据来对待:稳定的教学策略存在 IndexedDB 里直接用,数据驱动的部分从真实的源(语言下拉框、知识库文件、今天日期)每次重建。还有一个组装顺序:稳定的放前面(LLM provider 可以缓存 prefix),会变的部分放后面。
还有一个明确的原则:假纠正比漏纠正更糟。 如果导师把正确的东西标错,你知道的情况下会惹恼你,你不知道的情况下是学习损害。
延迟优化方面:从 2-6 秒砍到 0.8-2.5 秒。靠的是 MediaSource Extensions——不等整个 MP3 下载完,边接收边播。再加上不等完整句子,看到 25 个字符以上就发第一段 TTS 请求。
最后:安保可以不用管。在个人设备上本地存储 key 是 fine 的,有 PIN-based 加密的草图但优先级不高。
回头看两个教训。在错误的模型上待太久了。 一旦 Llama 开始幻觉语法纠正,我应该马上切。Prompt 里不要把稳定策略和变化数据混在一起——分开处理。
两个组件都在 GitHub 上。知识库导师用 Claude 项目管理起来就行。Causons 一行 npm install,一行 deploy 到 Cloudflare Pages。
原文:Alex She, "I Canceled My French Tutor and Built an LLM Tool That Does It Better", 2026-06-21
https://alshe.substack.com/p/i-canceled-my-french-tutor-and-built
@aigc1024
 
 
Back to Top