# 100 分钟的课程，带工程师从聊天框走向代码

> 这门 2023 年课程的示例代码已过时，但把提示词当作可测试函数的核心思路，正是客户现场需要的。

原文: https://fdetimes.net/zh/books-courses/chatgpt-prompt-engineering-for-developers-review/

课程时长约 1 小时 40 分钟，包含 9 个视频和 7 个代码示例。对从没在代码里调用过大语言模型的工程师来说，这可能是第一次离开聊天窗口。DeepLearning.AI 的 *ChatGPT Prompt Engineering for Developers* 教的正是这件事，而且教得很高效。

离开聊天窗口，是每个前线部署工程师（FDE）都要迈出的一步。在客户现场，没人会因为你擅长聊天而付钱。客户需要的是能在他们的数据上运行、能反复运行、输出出错时能修的代码。

## 谁来讲，什么时候推出？

课程页面列出了两个人。Isa Fulford 是 OpenAI 的技术人员（Member of Technical Staff）。Andrew Ng 是 DeepLearning.AI 的创始人、Coursera 的联合创始人。据 I Programmer 介绍，课程由 Ng 主讲，核心内容出自 Fulford，也就是说，课程由 OpenAI 的人编写。

课程大约在 2023 年 4 月底或 5 月初上线。2023 年 5 月 3 日，OpenAI Developer Community 论坛上的一篇帖子提到，课程才推出几天。上线时，DeepLearning.AI 和 OpenAI 将其免费开放。

在这个领域，三年是很长的时间，所以不要把每一行示例代码都当作当前的 API 标准。依然成立的是思考方式。课程页面称课程面向初学者，只需 Python 基础。DeepLearning.AI 还写道，想接触提示词工程前沿的资深机器学习工程师也能从中受益。

## 课程按什么顺序展开？

课程共九节：Introduction、Guidelines、Iterative、Summarizing、Inferring、Transforming、Expanding、Chatbot 和 Conclusion，最后是一份计分测验。按 I Programmer 的描述，课程先讲编写提示词的两条原则，再讲如何通过多轮迭代改进提示词，接着介绍四类用例，最后搭建一个定制聊天机器人。

这个顺序是合理的，应该照着学。如果因为 Chatbot 一节看起来更有吸引力就直接跳过去，就会错过 Iterative，而这一节最贴近 FDE 的工作。

## 提示词写在代码里，而不是聊天窗口里

课程页面称，内容涵盖提示词的最佳实践，以及如何在应用中使用 LLM API。值得留下的是后半部分。提示词一旦放进 Python 函数，就有了输入和输出，可以在一千条记录上运行，而不只是一条。

设想一个客户每天有几百张支持工单。聊天窗口里的演示只能证明模型能处理一张工单。一个 `summarize_ticket(text)` 函数则能说明它能不能处理昨天的全部工单。这也正是客户会问你的问题。

## 别指望第一次就写对提示词

课程用整整一节讲如何通过多轮迭代改进提示词。实际的启示是：提示词需要逐步调优，而不是写一次就完事。在客户现场，这种做法需要一套固定样本，用来比较每一轮的结果。

**要点:** 好的提示词不是一次写成的，而是一轮一轮改出来的。

拿 20 张真实工单作为测试集。假设第一轮有 7 份摘要漏掉了订单号。你在提示词里加一条明确指令，再把 20 张工单全部重跑一遍。每轮记下错误数，你就有了可以汇报的数字，而不只是感觉。

## 改进提示词时，通常错在哪里？

最常见的错误是只重跑那 7 张出错的工单。它们现在也许没问题了，但新指令可能把几份原本正确的摘要弄坏了，不把 20 张全部重跑，你就不会知道。

第二个错误是一次改好几处：在同一轮里加上订单号指令、调整语气、缩短篇幅。即使错误数下降了，你也不知道是哪一处起了作用。每轮只改一处，并记录下来。

第三个错误是中途更换测试集。如果下一轮换成另外 20 张工单，第一轮的 7 就失去了比较对象。

## 每个客户都会遇到的四类工作

Summarizing、Inferring、Transforming 和 Expanding 这四节听起来像练习题，但它们对应着部署项目中会反复遇到的需求。

还是以支持团队为例：总结冗长的工单，推断情绪或问题类型，把文本转换成另一种语言或格式，以及把几个要点扩写成给客户的回复草稿。

在客户需求调研中，可以把这四类工作当作提问的方向：在他们的工作流中，目前哪里有人在靠阅读来做总结、分类、转换或起草？答案往往就是你的第一个用例。课程最后一节 Chatbot 用语言模型搭建了一个定制聊天机器人。

## 谁该学，学完做什么？

如果你是从没调用过 LLM API 的软件工程师，先学这门课，再去学任何关于智能体或检索增强生成（RAG）的课程。如果你已经熟悉 API，可以快速浏览用例部分，但 Iterative 一节仍要认真做完。

在简历上，一门 100 分钟课程的证书说明不了太多。具体成果更有说服力，比如这样一行：“用 LLM API 编写工单分类脚本，经过三轮提示词改进，错误从 7/20 降到 2/20”，并附上 GitHub 上提示词修改日志的链接。

阅读岗位描述时，留意“prototype with LLM APIs”或“iterate with customers”这类说法，这门课正是通向两者的第一步。

这门课只需一个晚上。剩下的事，即在真实数据上运行提示词、统计它出错的次数，要靠你自己。

**本周动手试试:**

- 学完 Introduction、Guidelines 和 Iterative 三节，在课程 notebook 中重跑每个代码示例，而不只是看视频
- 收集 20 条真实文本样本（工单、邮件、会议纪要），写一个调用 LLM 进行摘要和打标签的 Python 函数，记录有多少样本输出出错
- 用三轮改进提示词，每轮只改一处，每次修改记一行日志并附上错误数，然后把日志放到 GitHub 上

## 信源

- [ChatGPT Prompt Engineering for Developers - DeepLearning.AI](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)

- [Free Course On ChatGPT Prompt Engineering - I Programmer](https://i-programmer.info/news/105-artificial-intelligence/16313-free-course-on-prompt-engineering.html)

- [ChatGPT Prompt Engineering for Developers by Isa Fulford (OpenAI) and Andrew Ng (DeepLearning.AI) - OpenAI Developer Community](https://community.openai.com/t/chatgpt-prompt-engineering-for-developers-by-isa-fulford-openai-and-andrew-ng-deeplearning-ai/190861)
