news 2026/9/11 12:03:17

generative-ai-for-beginners 高级提示词工程实战:七大核心技术、温度调参与自优化工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
generative-ai-for-beginners 高级提示词工程实战:七大核心技术、温度调参与自优化工作流

generative-ai-for-beginners 高级提示词工程实战:七大核心技术、温度调参与自优化工作流

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

本篇文章基于 generative-ai-for-beginners 课程第 5 课《Creating Advanced Prompts》编写,深入讲解从"会写提示词"到"理解提示词为什么更优"的进阶路径,覆盖 zero-shot、few-shot、chain-of-thought、generated knowledge、least-to-most、self-refine、maieutic 七大提示词技术,以及如何通过 temperature 等参数控制输出的确定性与多样性。读者学完后,将能够针对任意 LLM 构造高质量提示词,并掌握一套可复用的"构造—验证—优化"迭代方法论。


1. 从基础提示词到工程化思维

上一课(第 4 课 04-prompt-engineering-fundamentals)给出了提示词工程的核心定义:

提示词工程(Prompt Engineering)是通过提供更有用的指令或上下文,引导模型产生更相关回答的过程。

在此基础上,写提示词包含两个步骤:构造(constructing)——提供相关上下文搭好提示词骨架;优化(optimization)——逐步改进提示词以获得期望结果。本课不再停留在"能写出提示词",而是回答"为什么一个提示词优于另一个",并给出可套用到任何 LLM 的基础技术集合。

1.1 一个看似简单实则丰富的例子

生成 10 道地理题。

这个单行提示词其实已经隐式应用了两类技术:

  • 上下文(Context):限定了主题是"地理";
  • 限制输出(Limiting the output):明确要求不超过 10 道题。

1.2 简单提示词的局限

即使如此,你可能仍得不到想要的结果,原因有两个:

  • 主题过大:你无法确定生成的是国家、首都还是河流相关的问题;
  • 格式不可控:如果你希望问题按特定格式呈现,单靠这句话无从约束。

这正是提示词工程的价值所在——好的提示词需要在上下文、格式、范围等多个维度上精确表达意图。


2. 七大提示词核心技术

首先需要建立一个认知:提示词能力是 LLM 的涌现属性(emergent property),它不是模型内置的功能特性,而是我们在使用模型过程中"发现"出来并加以利用的能力。下面按从基础到进阶的顺序逐一展开。

2.1 Zero-shot prompting(零样本提示)

这是最基础的提示形式:单个提示词,完全依赖 LLM 的训练数据作答,不提供任何示例。

  • 提示词:"什么是代数?"
  • 回答:"代数是数学的一个分支,研究数学符号及操作这些符号的规则。"

适合开放式问答、概念解释等场景,是入门 LLM 时最常使用的技巧。

2.2 Few-shot prompting(少样本提示)

在请求之外附带 1 个或多个示例,用示例给 LLM 提供期望输出的上下文、格式或风格:

  • 提示词:"用莎士比亚的风格写一首诗。以下是几首莎士比亚体十四行诗示例: 第 18 首:'我可否将你比作夏日?你比它更可爱也更温婉……' 第 116 首:'让我承认,两颗真心的结合,容不得任何阻碍……' 第 132 首:'我爱你的眼睛,它们怜悯着我……' 现在,写一首关于月亮之美的十四行诗。"
  • 回答:"月亮在天空柔柔地发光,银色的光芒洒下温婉的恩泽……"

示例的作用是让模型理解具体任务,从而生成更准确、更相关的响应——尤其适合风格模仿、格式固定类任务。

2.3 Chain-of-thought(思维链)

思维链的核心是带着 LLM 走一系列步骤,教会它"怎么做"。先看一个反例:

  • 提示词:"爱丽丝有 5 个苹果,扔掉 3 个,给鲍勃 2 个,鲍勃又还回 1 个,爱丽丝还剩几个苹果?"
  • 回答:5(错误)

正确答案是 1(5 − 3 − 2 + 1 = 1),但 LLM 直接"跳步"给出了错误结果。应用思维链需要三步:

  1. 给 LLM 一个相似示例;
  2. 展示计算过程,教它如何正确计算;
  3. 再给出原始问题。
  • 提示词:"丽莎有 7 个苹果,扔掉 1 个,给巴特 4 个,巴特还回 1 个: 7 − 1 = 6 6 − 4 = 2 2 + 1 = 3 爱丽丝有 5 个苹果,扔掉 3 个,给鲍勃 2 个,鲍勃还回 1 个,爱丽丝还剩几个苹果?"
  • 回答:1

注意提示词显著变长——多了一个示例、一段计算过程,再加原始问题,最终得到正确结果。思维链适用于需要多步推理的任务(算术、逻辑、规划等),是提升准确率非常有效的技术。

2.4 Generated knowledge(生成知识注入)

很多时候我们希望提示词的一部分来自公司数据、另一部分是具体诉求。典型做法是使用模板 + 变量占位符

{{company}}: {{company_name}} {{products}}: {{products_list}} Please suggest an insurance given the following budget and requirements: Budget: {{budget}} Requirements: {{requirements}}

模板中的{{variable}}由公司 API 提供的真实数据替换。例如填入保险业务数据后:

Insurance company: ACME Insurance Insurance products (cost per month): - Car, cheap, 500 USD - Car, expensive, 1100 USD - Home, cheap, 600 USD - Home, expensive, 1200 USD - Life, cheap, 100 USD Please suggest an insurance given the following budget and requirements: Budget: $1000 Requirements: Car, Home, and Life insurance

模型输出:

Given the budget and requirements, we suggest the following insurance package from ACME Insurance: - Car, cheap, 500 USD - Home, cheap, 600 USD - Life, cheap, 100 USD Total cost: $1,200 USD

问题来了:它把不需要的 Life 保险也推荐进来了。经过反复试错(trial and error),优化后的提示词为:

Insurance company: ACME Insurance Insurance products (cost per month): - type: Car, cheap, cost: 500 USD - type: Car, expensive, cost: 1100 USD - type: Home, cheap, cost: 600 USD - type: Home, expensive, cost: 1200 USD - type: Life, cheap, cost: 100 USD Please suggest an insurance given the following budget and requirements: Budget: $1000 restrict choice to types: Car, Home

这次输出:

Given the budget and requirements, we suggest the Car, Cheap insurance product which costs 500 USD per month.

关键改动有两处:一是为每个条目显式标注typecost字段,二是使用restrict关键字明确约束可选范围。这个例子的核心启示是:即使使用了基础技术,多数情况下仍要持续优化提示词才能得到期望结果。

2.5 Least-to-most(由易到难分解)

思路与思维链类似但更偏"分治":把大问题拆成一系列子问题,再按顺序逐一求解,帮助 LLM "征服"大问题。数据科学场景示例:

提示词:如何用 5 个步骤完成数据科学?

回答:

  1. 收集数据
  2. 清洗数据
  3. 分析数据
  4. 绘制数据
  5. 呈现数据

适合复杂任务拆分、多阶段流水线等场景。

2.6 Self-refine(自我精炼:批判式迭代)

对生成式 AI 的输出不能盲目信任——LLM 只是输出"下一个最可能说的词",不代表"正确"。因此让 LLM 自我批判是很好的实践。流程:

  1. 初始提示词,要求 LLM 解决问题;
  2. LLM 作答;
  3. 你对答案提出批评,要求 AI 改进;
  4. LLM 参考批评再次作答,给出改进后的方案。

该过程可按需反复循环。示例:

提示词:"创建一个包含 products 和 customers 路由的 Python Web API"

AI 初版回答:

import flask app = Flask(__name__) @app.route('/products') def products(): return 'Products' @app.route('/customers') def customers(): return 'Customers'

提示词:"针对上述代码提出 3 处改进建议"

AI 的批评意见:

Sure, here are three suggestions to improve the code: Import the correct module: The first line should import Flask instead of flask. The correct import statement should be from flask import Flask. Add a main function: Add a if __name__ == '__main__': block to the end of the file to run the application when the file is executed. Use f-strings: Use f-strings to format the return statements in the route functions. For example, return 'Products' can be changed to return f'This is the {request.path} page'.

改进后的代码:

from flask import Flask, request app = Flask(__name__) @app.route('/products') def products(): return f'This is the {request.path} page' @app.route('/customers') def customers(): return f'This is the {request.path} page' if __name__ == '__main__': app.run()

可以看到,正是"批判第一次回答"这一步,让第二轮输出质量显著提升。

2.7 Maieutic prompting(产婆术式提问)

与 self-refine 相似,但更强调"让 LLM 解释自己",通过逐层追问消除输出中的不一致,确保它抵达正确结论。工作流:

  1. 请 LLM 回答一个问题;
  2. 对答案的每一部分,要求 LLM 更深入地解释;
  3. 若发现不一致,丢弃不一致的部分;
  4. 重复第 2、3 步,直到遍历所有部分且对答案满意。

示例:

提示词:如何用 5 个步骤制定缓解疫情的危机预案?

1. Identify the risks 1. Identify the stakeholders 1. Identify the resources 1. Identify the actions 1. Identify the communication channels

5 个步骤已给出,但我们无法确定是否正确,于是要求逐项深挖:

提示词:详细解释第一步,疫情中具体有哪些风险?

The risks are the following: - Loss of life - Loss of business - Loss of reputation - Loss of customers - Loss of employees

提示词:疫情中最大的风险是什么,为什么?

The biggest risk is loss of life because it's the most important thing to protect.

提示词:疫情中最大的两个风险是什么?

The two biggest risks are loss of life and loss of business.

此时 LLM 的回答保持一致,始终把"生命"和"业务"列为前两大风险,我们可以带着较高信心进入下一步。但务必牢记:不要盲目信任 LLM,任何输出都应经过验证。


3. 控制输出的确定性与多样性

LLM 天然是非确定性的(nondeterministic):同一提示词反复运行会得到不同结果。例如反复运行提示词"为 Python Web API 生成代码",两次输出可能差异巨大——第一次生成一个简单的/api接口,第二次则生成了一个带书籍数据列表、多路由的完整 Books API。

那么输出多样化是问题吗?取决于目标:如果你需要特定响应,它是问题;如果你只想要"生成任意 3 道地理题"这类多样化结果,则完全不是问题。

3.1 temperature:确定性与多样性的调节旋钮

temperature 是介于 0 与 1 之间的数值:0 最确定(deterministic),1 最多样(varied),默认值为 0.7。文档用"生成 Python Web API 代码"做了对照实验:

  • temperature = 0.1时两次运行,输出仅在函数命名、注释措辞上有细微差异,结构几乎一致;
  • temperature = 0.9时两次运行,输出从极简接口到完整的 Books API(含数据列表、/api/v1/resources/books/all/api/v1/resources/books多路由),结果千差万别。

在仓库中可以找到实际调用 temperature 参数的示例:例如 06-text-generation-apps/python/aoai-app-recipe.py 中,首轮生成菜谱使用temperature=0.1控制质量,第二轮生成购物清单时进一步降到temperature=0以获得更确定的输出;而 06-text-generation-apps/python/githubmodels-app.py 展示了temperature=1.top_p=1.等参数与max_tokens=1000的完整组合用法。这印证了课程的核心观点:在需要稳定、可复现输出的生产场景(如购物清单、格式化结果)应压低 temperature,而在创意生成场景可调高。

注:除 temperature 外,还有 top-k、top-p、repetition penalty(重复惩罚)、length penalty(长度惩罚)、diversity penalty(多样性惩罚)等参数可以调整输出,但超出本课程范围。


4. 提示词良好实践清单

除了上述技术,编写提示词时还应遵循以下实践:

  • 指定上下文(Specify context):上下文至关重要,能多具体就多具体(领域、主题等),信息越多效果越好;
  • 限制输出(Limit the output):若需要特定数量的条目或特定长度,务必显式说明;
  • 同时指定"做什么"和"怎么做":例如"创建一个包含 products 和 customers 路由的 Python Web API,拆分为 3 个文件";
  • 使用模板(Use templates):当需要用公司数据丰富提示词时,用{{variable}}占位符模板再以真实数据替换,这也是 generated knowledge 技术的工程化落地方式;
  • 拼写正确(Spell correctly):LLM 可能给出正确回答,但输入拼写正确往往能得到更好的响应。

5. 动手实践:Assignment 与源码级参考

本课的实战任务是把 self-refine 技术应用到一段真实的 Flask 代码上。课程给出的初始代码如下:

from flask import Flask, request app = Flask(__name__) @app.route('/') def hello(): name = request.args.get('name', 'World') return f'Hello, {name}!' if __name__ == '__main__': app.run()

任务要求:使用 GitHub Copilot 或 ChatGPT 之类的 AI 助手,运用 self-refine 技术改进这段代码。建议先把改进方向(如架构、性能、安全性)和数量(如"3 处改进")写进提示词,效果通常更好——这正是 05-advanced-prompts/README.md 中的 TIP 提示。

仓库提供了可对照的参考实现:

  • 05-advanced-prompts/python/aoai-assignment.py 是任务初始代码;05-advanced-prompts/python/aoai-solution.py 是应用 self-refine 后的示例解答,可以看到它围绕"安全性"这一明确方向迭代:从环境变量加载SECRET_KEY取代硬编码、引入 Flask-WTF 表单做输入校验、用markupsafe.escape防 XSS、用@app.errorhandler(400)处理异常——完美展示了"限定改进方向 + 限定数量"的提示策略如何产出高质量代码;
  • 05-advanced-prompts/javascript/assignment.js 与 05-advanced-prompts/javascript/solution.js 则展示了 JS/Express 版本的完整 self-refine 过程:从"CommonJS 转 ES module、去掉未用参数、优化日志文案"到"环境变量管理密钥、express-validator 输入校验、HTTPS 加密传输"两轮迭代,其中自签名证书还可用openssl req -nodes -new -x509 -keyout server.key -out server.cert生成。

知识自测

为什么使用 chain-of-thought 提示词?(1 个正确、2 个错误选项)

  1. 教会 LLM 如何解决问题。✅
  2. 教会 LLM 在代码中找错误。
  3. 指导 LLM 提出不同解决方案。

正确答案是 1:思维链的本质是向 LLM 展示"如何通过一系列步骤解决问题",并附上同类问题的解法示例。

延伸挑战

完成 Assignment 后,把你构建的任何程序拿出来,想清楚希望应用哪些改进,再使用 self-refine 技术落地这些改动,并对比改进前后结果的好坏。这个循环本身就是在训练你"构造—批判—再构造"的提示词肌肉记忆。


6. 本章小结与下一步

本课把提示词工程从"经验直觉"提升为"技术体系":seven 大技术各有适用场景——零样本适合开放问答、少样本适合风格与格式固定、思维链适合多步推理、生成知识适合企业数据注入、由易到难适合复杂任务拆分、自我精炼与产婆术式提问则承担"验证与纠错"职责;temperature 则让我们在确定性与多样性之间自由调节。下一课将把这些提示词知识落地到真实应用中——在 06-text-generation-apps 中构建文本生成应用。

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 12:01:48

FFmpeg中av_find_best_stream函数详解与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 11:57:09

Duix-Avatar 报 SQLite3 can only bind 类型错误?先查 voice_id

Duix-Avatar 报 SQLite3 can only bind 类型错误?先查 voice_id 【免费下载链接】Duix-Avatar 🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitH…

作者头像 李华
网站建设 2026/9/11 11:55:35

ESP32与FPGA驱动CYW240128图形点阵屏踩坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 11:52:54

轻羽大师:基于OCR与事件驱动的Windows桌面自动化引擎

1. 这不是“又一个定时工具”——轻羽大师的本质是一套面向Windows桌面场景的智能任务调度引擎 你搜“轻羽大师”,首页跳出的大多是“免费定时关机软件”“自动点击小工具”这类描述。但如果你真把它当成Windows自带任务计划程序(Task Scheduler&#x…

作者头像 李华
网站建设 2026/9/11 11:51:46

SCI期刊晋升1区TOP与版面费变革分析

1. 学术期刊动态:从2区晋升1区TOP的变革分析 最近学术圈流传着一个值得关注的现象:某知名期刊从SCI二区跃升为一区TOP期刊后,突然宣布将从2026年开始收取版面费。这个消息在科研人员中引发了广泛讨论,也折射出当前学术出版生态的某…

作者头像 李华
网站建设 2026/9/11 11:51:13

Django实战:社区爱心养老图书借阅管理系统开发详解

去年我在帮社区服务中心做内部管理系统时,接到一个特别的需求:社区里有一批退休老人,平时喜欢到活动室借书看,但原来的登记方式还是手工记在一个本子上。谁借了什么书、什么时候该还、哪些书被借走很久没回来,全靠管理…

作者头像 李华