Skip to content
··阅读时间2分钟

我如何在零编程经验下做出自己的 Chatbot:实战经验总结

我从零代码基础出发,用 5 个月和 GPT API + ChatGPT 4 做出了可运行的 chatbot。这里是我作为完全新手的完整过程与经验。

Update (2026): This chatbot evolved into Sydney! After many iterations, Sydney now lives at /ask/ and focuses on blog content and products.


自从去年 chatGPT 发布后,我就一直对生成式 AI 很着迷,也想试着用现有 API 做一个属于自己的 chatbot。对一个完全没有编程经验的人来说,这当然是个野心很大的目标。但我就是想逼自己进入实战,真正获得和 AI 系统打交道的手感。我的目标不只是“用工具”,而是更深入理解这些系统到底怎么被构建出来。于是我决定利用自己已有内容,做一个能回答我博客文章相关问题的 chatbot。这个从零开始搭建的过程非常有学习价值,虽然它离我理想状态还很远。在这篇里,我会分享这段新手旅程中目前最关键的经验。

那我的挑战到底是什么?

  • 首先,我不会编程。我几乎不懂 HTML(除了 <h1><h2> 这种最基础标签),更别说 Python 或其他语言。
  • 我当然也不知道怎么把应用部署到云端,之前根本没听过 Docker、Cloud Run 这些。
    • 甚至我当时连把网站从 Bluehost 迁移到 GCP 都做不了,因为我不懂 MySQL、虚拟实例等概念。
  • 我不懂 SSH、公钥、私钥,什么都不懂 T.T
  • 我也没有机器学习或高等数学背景。
  • 而且我不是二十岁出头 :| 我已经 40 岁,还有全职工作。

但大概 5 个月后,我做出了 version 0.1 of the chatbot,用的是 OpenAI GPT API 加上大量 ChatGPT 4 的帮助。我说它是 version 0.1 不是客套,因为它离我想要的状态还差很远(非常远),但它确实“能用”(某种程度上)。目前它能做的包括:

  • 如果你问的是我以前写过的话题,它可以在多篇文章之间做内容**综合(synthesize)**并给出回答。
    • 这点对我很重要,因为我之前写过一些现成方案实测,常见问题是这些 chatbot 不能跨文章综合内容。它们更像搜索功能,而不是 chatbot。
  • 它被设计为只回答我博客相关问题,所以如果你让它回答其他主题,它大概率会拒绝。
  • 它的知识范围包含我过去 17 年、截至 2023 年 9 月底发布的全部文章,大约 500 posts

它还做不到很多事,比如:

  • 不能准确回忆我某篇文章里的具体数字。
  • 不能准确回答发布日期相关问题。
  • 我很确定它有不少安全问题 T.T(悲伤脸)
  • 还有很多

Update Feb 2024:

Version 2.1 of the chatbot is available and you can check out the post about it "Chatbot v2.10 Unveiled: Elevating User Experience with Enhanced Speed, Scalability, and Simplicity."

那在第一阶段我学到了什么?

1. ChatGPT 4 能完成大多数基础/中级编码任务

前提是你清楚自己要什么,并且 prompt/context 给得足够具体。

关键在于:你要知道该让机器做什么。只要任务足够具体,它几乎可以完成“几乎所有”编码任务。我故意说“几乎”,因为它在部分示例跟随上会反复失误。

chatGPT 4 生成的代码通常足够模块化,后续可复用性不错。它也经常在代码里给出具体注释。

2. 去补基础编程/IT 课程

如果你和我当时一样,你不会知道自己“不知道什么”。几个可行办法:

3. 把这两门 FREE 短课上完:Building Systems with the ChatGPT API

关于 chatGPT API 的这两门课会帮你省大量时间:

这两门虽然是面向新手,但我几个月前第一次打开时,基础还不够,连课程在讲什么都跟不上,10 分钟就关了。后来我自己折腾 OpenAI API 和各种 promts 一段时间后被卡住,才想起回来学这两门。基本上,它们给了我做出这个 0.1 版本所需的大部分答案。

提示词工程那门尤其有用,因为它教我如何让 chatGPT 按指定格式输出。比如,不看这门课我不会想到下面这种 system message:

Make sure to ask the user relevant follow-up questions."

这种 HTML-compatible bullet point 格式和换行方式,在答案很长时会明显改善 chatbot 的可读性。

4. 自己去读真正的 OpenAI 文档

我很懒(:D),所以一开始没认真读 OpenAI 的documentation。我只是把文档复制给 chatGPT,让它当参考源来指导我写代码。结果并不理想,浪费了不少时间。后来我决定自己把文档读一遍,再给 chatGPT 更有针对性的请求,效率才上来。

5. 对话太长,或隔了几小时再回来,ChatGPT 很容易“迷路”

这其实不该意外,和人类类似,对话太长时 chatGPT 也会更容易丢上下文。我的体感包括:

  • 它开始推荐一些不合理代码
  • 或者记不住它自己前面刚给过的代码/建议

另外你中断几小时(甚至隔夜)后再回来,即使已经让 chatGPT 通读历史对话并确认,它还是像人一样需要你重新补大量近期上下文和代码库。不然它会“忘掉”很多之前自己说过的关键细节。

6. GPT 4 API 很贵,能用 GPT 3.5 的尽量用

举个例子,我曾在摘要任务上浪费了 $20 的 GPT 4 API 费用,而 GPT 3.5 就能做得很好。还有,一定先拿少量文件测试代码,再放到几百个文件上跑,因为 GPT API 费用累计非常快。

7. OpenAI Cookbook 是你的朋友

我又犯了一个错:一开始没有去看(准确说是不知道有)OpenAI sample cookbook。那里能找到很多关键示例:

8. 对新手来说,上下文窗口长度很难处理

不同 GPT 模型有不同 max token limits,要改代码确保不超限,对新手(像我)真的不容易。我在这部分花了很多时间,因为我的不少博客都非常长。

同时,我又希望 chatbot 在回答前能跨多篇文章综合内容,所以经常撞 token 上限。

9. 版本控制、版本控制、还是版本控制

这对专家可能非常直觉,但对我这样的编码新手,真的是交过学费才懂。还有,我也得摸索这个项目合适的 git commit 频率,毕竟目前只有我一个人开发。

Conclusion

总结一下:作为新手,这段 chatbot 搭建旅程让我真正理解了基础知识的重要性、如何把 ChatGPT 用在有针对性的任务上、为什么必须读 API 文档,以及为什么版本控制是硬要求。虽然还有很多明显可改进空间,但我现在已经有了一个基础原型,能够在我的博客文章之间做信息综合并回答问题。接下来我的重点是:扩展知识库覆盖新内容、提升对具体细节(如数字)的检索准确性,并优化响应以控制在 token 限制内。我也会继续升级自己在 prompt engineering 和云部署等方向的能力。

先写到这里。后续我会继续更新这条学习路径,也会在新版本可用时分享。

你有试过以“非开发者”身份做 OpenAI API 项目吗?很想听你在哪个环节最卡——对我来说肯定是上下文窗口限制和版本控制 :P

One week after

在一周冲刺后,我又完成了 chatbot 的额外更新。详细内容在这里:"Evolving My Chatbot: A One-Week Sprint to Smarter Interactions"。

致敬,

Chandler

继续阅读

我的旅程
联系
语言
偏好设置