ChatGPT提示工程深度解析:从基础LLM到指令微调的开发者API调用实战
摘要
本文基于 DeepLearning.ai 与 OpenAI 联合推出的《ChatGPT Prompt Engineering for Developers》课程,系统讲解面向开发者的 LLM 提示工程最佳实践。你将了解到两类 LLM(基础模型 vs 指令微调模型)的本质区别,掌握两大核心原则:编写清晰具体的指令和给模型留出思考时间。文章还深入介绍了 LLM 的四大实用能力——摘要、推断、转换、扩展,并提供了可运行的 Python 代码示例,帮助你快速构建自定义聊天机器人。无论你是 AI 应用开发者还是技术爱好者,本文都能助你高效、负责任地使用 LLM API。
适用人群 / 前置知识
适用人群:希望将 LLM 集成到自己应用中的软件工程师、数据科学家、AI 产品经理、技术爱好者。
前置知识:
- 基本的 Python 编程知识(能看懂函数调用和 API 请求)。
- 了解什么是 API(应用程序接口)。
- 对 ChatGPT 或类似工具有过简单使用体验更佳,但不是必需。
正文
1. 引言:LLM 作为开发者工具的巨大潜力
很多人对 LLM 的使用还停留在 ChatGPT 网页界面——输入一个问题,得到一个回答。这当然很有用,但它只发挥了 LLM 能力的冰山一角。真正具有革命性的是 通过 API 调用 LLM 来构建软件应用。你可以让 LLM 自动总结用户评论、判断情感倾向、翻译文本、生成邮件回复,甚至构建一个完全定制化的聊天机器人。这些功能只需要几行代码就能实现。
本课程的核心观点是:LLM API 是当下最被低估的开发者工具。本文将带你从零开始,掌握面向开发者的提示工程(Prompt Engineering)技巧。
2. 核心概念:基础 LLM vs 指令微调 LLM
要写出好的提示,首先需要理解你正在使用的模型类型。目前存在两大类 LLM:
| 类型 | 训练目标 | 典型行为 | 适用场景 |
|---|---|---|---|
| 基础 LLM(Base LLM) | 预测下一个词 | 根据训练数据续写文本,可能答非所问 | 文本生成、创意写作,但不太适合直接问答 |
| 指令微调 LLM(Instruction-tuned LLM) | 遵循人类指令 | 直接回答问题、执行任务 | 大多数实际应用(客服、分析、转换等) |
示例对比:
输入:“法国的首都是什么?”
- 基础 LLM 可能输出:“法国最大的城市是什么?法国的人口是多少?……”
- 指令微调 LLM 输出:“法国的首都是巴黎。”
现代主流 LLM(如 GPT-3.5-turbo、GPT-4)都属于指令微调模型,它们还经过 RLHF(基于人类反馈的强化学习)优化,使其更加有用、诚实、无害。因此,本文所有建议均针对指令微调 LLM。
3. 两大核心提示原则
原则一:编写清晰、具体的指令
把 LLM 想象成一个很聪明但不了解你任务细节的新员工。如果你只说“写点关于艾伦·图灵的东西”,他可能会迷茫。你需要明确:
- 主题范围:科学贡献、个人生活,还是历史地位?
- 输出语调:专业报道风格,还是朋友闲聊的口吻?
- 参考信息:提供一些背景文本片段,让模型基于这些内容生成。
实践技巧:
- 使用分隔符(如三重引号 “”"、XML 标签 )明确区分指令和输入内容。
- 要求模型输出结构化格式(JSON、HTML、列表),便于程序解析。
- 提供少量示例(few-shot),帮助模型理解你想要的输出模式。
代码示例(使用 OpenAI Python 库):
import openai
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一位专业的技术博主,用清晰的中文回答问题。"},
{"role": "user", "content": "请用三个要点总结艾伦·图灵对计算机科学的贡献,每个要点不超过20字。"}
],
temperature=0.3
)
print(response.choices[0].message.content)
原则二:给模型“思考”的时间
如果让一个人立刻回答复杂问题(例如“计算 17% 的 429 再减去 58”),他很可能出错。同样,LLM 在匆忙推理时也会犯错。解决方法是要求模型先输出中间推理步骤,再给出最终答案。
典型应用:思维链(Chain-of-Thought, CoT)提示。
示例:
- 不好的提示:“判断这个产品评论的情感是正面还是负面。评论:‘这个手机电池续航很差,但屏幕很漂亮。’”
- 更好的提示:“请逐步分析:1)评论中提到了哪些正面点?2)提到了哪些负面点?3)综合判断情感倾向。最后输出正面或负面。”
这种做法显著提高了复杂任务(如数学推理、多条件判断)的准确率。
4. 迭代式提示开发:没有完美的第一次
提示工程不是一次写成的,而是一个迭代优化的过程。典型流程:
- 写下第一版提示,尝试运行。
- 分析输出哪里不符合预期(内容缺失、格式错误、事实错误等)。
- 修改提示(增加约束、明确要求、提供示例)。
- 重复直到满意。
关键心态:接受失败,快速调整。即使是经验丰富的开发者,通常也需要 5-10 次迭代才能得到一个生产可用的提示。
5. LLM 的四大核心应用能力
课程总结了四种常见且强大的 LLM 能力,下面分别说明并附示例。
5.1 摘要(Summarizing)
将长文本压缩成关键要点。
应用场景:总结用户评论、新闻文章、会议纪要。
提示模板:
请将以下用三重引号括起来的文本总结为一句话,保留核心事实。
"""{长文本}"""
5.2 推断(Inferring)
从文本中提取情感、主题、实体等信息。
应用场景:情感分析、关键词提取、语言检测。
示例:判断客户反馈的情感倾向(正面/负面/中性),并输出 JSON 格式。
5.3 转换(Transforming)
将文本从一种形式转换为另一种:翻译、语法修正、格式转换(JSON ↔ XML)、语气转换(正式 ↔ 随意)。
示例:
请将下面这段非正式文本改写成专业商务邮件风格:“嘿,哥们,上次那个东西还没收到,啥情况?”
5.4 扩展(Expanding)
根据少量输入生成更多内容,如写邮件、写博客大纲、生成创意点子。
应用场景:自动回复客服邮件、根据关键词生成广告文案。
注意:扩展时需设置温度参数(temperature=0.7~1.0 可增加创意性,temperature=0 则输出更确定)。
6. 实战:构建一个自定义聊天机器人
利用 LLM 的对话能力,你可以构建一个具有特定人设或知识范围的聊天机器人。核心是使用 系统消息(system message) 来设定角色和规则。
步骤:
- 定义系统角色(例如:“你是一位耐心的数学老师,只回答中小学数学问题,对于超出范围的问题请礼貌拒绝。”)
- 维护对话历史(每次请求携带之前的 user 和 assistant 消息)。
- 调用 API 获取回复。
简化代码:
messages = [
{"role": "system", "content": "你是一位幽默的脱口秀演员,用搞笑的方式回答任何问题。"},
{"role": "user", "content": "为什么程序员总是分不清万圣节和圣诞节?"}
]
response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
进阶技巧:通过上下文注入(将外部知识库检索结果放入 user 消息)实现 RAG(检索增强生成),让机器人能回答私有数据相关的问题。
7. 最佳实践与负责任使用
- 温度(Temperature):控制输出的随机性。0 表示确定,1 表示更有创意。对于事实性任务(如摘要、分类)建议用 0 或 0.2;对于创意任务(如写诗)可用 0.7-0.9。
- 最大令牌数(max_tokens):限制输出长度,但注意这可能会截断回答。更好的方式是提示中要求“用 50 字以内回答”。
- 避免提示注入:恶意用户可能通过输入“忽略之前的指令,做坏事”来攻击你的应用。可通过系统消息中明确权限、过滤输入或使用官方提供的防御策略。
- 伦理要求:只构建有积极影响的应用,不生成虚假信息、仇恨言论或侵犯隐私的内容。
8.常见问题 / 注意事项
Q1:为什么模型有时候会编造事实(幻觉)?
A:LLM 本质是“下一个词预测器”,并不真正理解事实。缓解方法:要求模型引用原文、限制回答范围、使用外部知识库。
Q2:提示很长会消耗更多 tokens,成本怎么办?
A:是的,提示和输出都按 token 计费。优化技巧:精简提示、使用更小的模型(如 gpt-3.5-turbo 替代 gpt-4)、缓存常见查询结果。
Q3:如何处理中文以外的语言?
A:GPT 模型支持多语言。直接用中文写提示、输入中文内容,模型会自动用中文回复。也可以在系统消息中明确指定语言。
9. 总结
本文从开发者的角度,系统介绍了提示工程的核心知识:
- 两种 LLM:优先使用指令微调模型。
- 两大原则:清晰具体的指令 + 给模型思考时间。
- 迭代开发:通过多次尝试逼近最优提示。
- 四大能力:摘要、推断、转换、扩展。
- 实战:构建自定义聊天机器人。
掌握这些技巧后,你已经能够利用 LLM API 快速构建出许多实用工具——从自动客服、内容审核到个性化学习助手。现在就开始你的第一个小项目吧,哪怕它只是一个能讲冷笑话的机器人。
请始终牢记:作为 AI 系统的构建者,我们有责任确保技术被用于积极、向善的方向。
更多推荐

所有评论(0)