本篇博客主要总结了 DeepLearning AI 公开课程 Prompt Engineering 提示词工程 第八章节 ChatBot 聊天机器人的内容,也可以理解为该章节的笔记。
现在我们常用的大预言模型工具,如豆包,deepseek,ChatGPT等,都是以聊天机器人的形式提供服务。用户可以在web页面与AI创建一组对话。在之前几章的基础上,可以发现,调用 LLM 的API并构建一个自定义的聊天机器人,并不是一件难事。在这个章节,我们将学习如何做一个聊天机器人。
1. 聊天格式的设计
首先,我们需要设计聊天格式。定义如下两个辅助函数,可以看到,第一个辅助函数就和我们在之前几章使用得差不多,而第二个函数则封装得更完备一些,直接以messages为输入,而不是prompt,这更有利于我们输入多组对话,让整个对话看起来更有连续性。
1 | def get_completion(prompt, model="gpt-3.5-turbo"): |
值得注意的是 messages 中的 role 的作用。以下面的一组 messages 示例,这组对话中有三个角色,分别是系统,用户和助理。通常,用户就是使用大语言模型的人,助理则是 LLM 扮演的角色,系统作为一个更高级的第三方,充当画外音的角色,用来组建聊天框架,在用户感知不到的地方引导“助理“的回复。
1 | messages = [ |
我们来实际运行一下,看看这样的设定效果如何。在这组对话中,我们通过系统这个角色身份,将LLM设定为一个友善的聊天机器人。可以看到,LLM 给出的回复也的确很友善。
1 | messages = [ |
2. 构建上下文
想要实现一组完整、顺畅的聊天,上下文是很重要的。如果希望这段对话能够前后文呼应,那么,之前的对话信息也要作为 messages 传入,否则 LLM 没法知道之前都聊了什么,这会让每一次对话都变成单组的任务,失去连贯性。让我们看如下两个示例对比。
在前文,我们已经告诉 LLM 我们的名字叫 Isa,那么现在,我们直接问 LLM 是否记得我们的名字,可以看到,它没有办法回忆出用户的名字。这是自然的,因为我们只是调用了 LLM 的 API,大模型不会存储我们的对话内容。
1 | messages = [ |
现在,我们把完整的对话传入,再来看回复。可以看到,LLM 已经能够通过上下文推理得到我们的名字了。
1 | messages = [ |
大多数聊天机器人的web页面都会开放一些参数供用户调整,其中就包含了对话组数。通常默认情况下,会将最近的三组对话传入给聊天机器人。
3. 实践:点餐机器人
现在,我们来实践一下,构建一个自定义的点餐机器人。
首先,定义一个辅助函数,这个函数会帮助我们从建立的用户界面收集信息,将用户的输入和 LLM 的反馈都追加到对话内容中,这样我们就不用手动地添加 prompt 了。
1 | def collect_messages(_): |
然后,我们来定义一个简易用户面板(UI),并提供一个初始的上下文。可以看到,context 中的初始内容,即系统设定中,我们将 LLM 定义成了一个在披萨店工作的点餐机器人,会自动收集订单,同时设定了它的工作流程,先迎接顾客收集订单,然后询问是到点取餐还是外送等等,直到最后还有收费环节。并且,在这里,我们还提供了各种菜单项目的定价。
1 | import panel as pn # GUI |
这是在 Jupyter Notebook 上运行以后,得到的简易用户界面(UI)。

现在,我们试着在这个界面上开展对话。在这组对话中,我们要了一个 small cheese pizza,可以看到这个点餐机器人询问得很细致。

只是这样聊天还不够,我们实际需要的是点餐机器人主动引导顾客点餐,并收集点餐信息,将点餐的订单信息通过代码易传递的方式传给我们的订单后台,因此,我们还需要机器人在顾客完成订单以后,整理出订单数据。如下所示,我们再插入一条系统指令,让点餐机器人返回 JSON 格式的订单信息。
1 | messages = context.copy() |
结语
至此,DeepLearning AI 公开课程 Prompt Engineering 提示词工程 的课程笔记已经完结。利用这几个章节的 prompt 知识,基本可以应对大多数使用场景了。结合一些轻量脚手架,如 flask,我们可以快速搭建起属于自己的 AI 聊天机器人。更进一步,在游戏等内容丰富的场景中,也可以结合 LLM 强大的内容生成能力,创造独一无二、不可复制的内容体验。
Prompt Engineering 提示词工程笔记汇总
- 第一、二章:编写指示的几个指导原则
- 第三章:迭代 Iterative
- 第四章:摘要 Summarizing
- 第五章:推理 Inferring
- 第六章:转化 Transferring
- 第七章:扩充 Expanding
- 第八章:聊天机器人 ChatBot
参考资料
ChatGPT Prompt Engineering for Developers - DeepLearning.AI
B站可以找到搬运翻译的中文版本👆:《吴恩达 x OpenAI Prompt课程》
- 本文作者: Berry
- 本文链接: https://wuxinberry.github.io/2025/03/02/Prompt-tips7/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!