ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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错误正确答案是 15 − 3 − 2 1 1但 LLM 直接跳步给出了错误结果。应用思维链需要三步给 LLM 一个相似示例展示计算过程教它如何正确计算再给出原始问题。提示词丽莎有 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.关键改动有两处一是为每个条目显式标注type与cost字段二是使用restrict关键字明确约束可选范围。这个例子的核心启示是即使使用了基础技术多数情况下仍要持续优化提示词才能得到期望结果。2.5 Least-to-most由易到难分解思路与思维链类似但更偏分治把大问题拆成一系列子问题再按顺序逐一求解帮助 LLM 征服大问题。数据科学场景示例提示词如何用 5 个步骤完成数据科学回答收集数据清洗数据分析数据绘制数据呈现数据适合复杂任务拆分、多阶段流水线等场景。2.6 Self-refine自我精炼批判式迭代对生成式 AI 的输出不能盲目信任——LLM 只是输出下一个最可能说的词不代表正确。因此让 LLM 自我批判是很好的实践。流程初始提示词要求 LLM 解决问题LLM 作答你对答案提出批评要求 AI 改进LLM 参考批评再次作答给出改进后的方案。该过程可按需反复循环。示例提示词创建一个包含 products 和 customers 路由的 Python Web APIAI 初版回答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 fThis is the {request.path} page.改进后的代码from flask import Flask, request app Flask(__name__) app.route(/products) def products(): return fThis is the {request.path} page app.route(/customers) def customers(): return fThis is the {request.path} page if __name__ __main__: app.run()可以看到正是批判第一次回答这一步让第二轮输出质量显著提升。2.7 Maieutic prompting产婆术式提问与 self-refine 相似但更强调让 LLM 解释自己通过逐层追问消除输出中的不一致确保它抵达正确结论。工作流请 LLM 回答一个问题对答案的每一部分要求 LLM 更深入地解释若发现不一致丢弃不一致的部分重复第 2、3 步直到遍历所有部分且对答案满意。示例提示词如何用 5 个步骤制定缓解疫情的危机预案1. Identify the risks 1. Identify the stakeholders 1. Identify the resources 1. Identify the actions 1. Identify the communication channels5 个步骤已给出但我们无法确定是否正确于是要求逐项深挖提示词详细解释第一步疫情中具体有哪些风险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 its 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 最确定deterministic1 最多样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 中首轮生成菜谱使用temperature0.1控制质量第二轮生成购物清单时进一步降到temperature0以获得更确定的输出而 06-text-generation-apps/python/githubmodels-app.py 展示了temperature1.、top_p1.等参数与max_tokens1000的完整组合用法。这印证了课程的核心观点在需要稳定、可复现输出的生产场景如购物清单、格式化结果应压低 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 correctlyLLM 可能给出正确回答但输入拼写正确往往能得到更好的响应。5. 动手实践Assignment 与源码级参考本课的实战任务是把 self-refine 技术应用到一段真实的 Flask 代码上。课程给出的初始代码如下from flask import Flask, request app Flask(__name__) app.route(/) def hello(): name request.args.get(name, World) return fHello, {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 个错误选项教会 LLM 如何解决问题。✅教会 LLM 在代码中找错误。指导 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),仅供参考
返回列表