当前位置: 首页 > news >正文

1.5 提示词工程(一)

目录

写在前面

一,提示词工程

1.1 简介

1.2 示例

二,提示词工程的设计

2.1 消息与角色(Messages and Roles)

2.2 使用Responses API的示例

2.3 为模型提供额外数据(Retrieval Augmented Generation, RAG)

三,提示词工程策略

3.1 撰写清晰的指令​

3.1.1 在你的查询中包含详尽的信息,以获取更为准确的答案​

3.1.2 让模型扮演一个角色​

3.1.3 利用分隔符清晰区分输入的不同部分​

3.1.4 明确说明完成任务所需的每个步骤​

3.1.5 提供示例​

3.1.6 明确输出长度要求​


写在前面

随着 大语言模型(LLM)(如GPT、Claude、Gemini)和 多模态模型(如DALL·E、MidJourney)的普及,AI不再仅仅是“分类”或“预测”工具,而是能够生成文本、代码、图像、音频等复杂内容。

现代LLM(如GPT-4)虽然强大,但由于它们的黑箱特性,也就是内部工作机制(如注意力机制、权重分布)难以精确控制。

因此,需要通过提示词工程来“引导”模型,使其输出更符合需求。

在AI时代,“提示词工程师”已经作为一个专业来丰富我们的职场,企业通过“提示词工程师”来优化AI交互体验,提升AI产品的竞争力。

一,提示词工程

1.1 简介

“提示词工程”(Prompt Engineering)是人工智能领域中一项关键技术,尤其在生成式AI模型(如大语言模型)中的应用。

提示词工程是指通过设计精准的指令(prompt),引导生成式模型(如GPT-4.1等)输出符合预期结果的技术过程。通过为模型提供明确的指令、示例及必要的上下文信息(而非调整模型参数本身),可显著提升输出质量。此外,还可通过定义消息角色(message roles)和指令优先级(instruction-following hierarchy),控制模型对不同输入的响应方式。

提示词工程的核心在于理解模型的运作机制,通过调整提示的结构、措辞、上下文或示例,最终将人类意图转化为模型能理解的“语言”,从而指挥模型完成复杂任务。

1.2 示例

先看一个OpenAI中给出的用于纠正英语语法的提示词示例,如下:

提示词:

SYSTEM

You will be provided with statements, and your task is to convert them to standard English.

USER

She no went to the market.

输出语句:

She did not go to the market.

API 请求:


from openai import OpenAI
client = OpenAI()response = client.responses.create(model="gpt-4o",input=[{"role": "system","content": [{"type": "input_text","text": "You will be provided with statements, and your task is to convert them to standard English."}]},{"role": "user","content": [{"type": "input_text","text": "She no went to the market."}]}],temperature=1,max_output_tokens=256
)

二,提示词工程的设计

提示词是生成式AI的“方向盘”,决定输出质量的核心。糟糕的提示词导致无关或错误结果,精准的提示词能激发模型最佳性能,并减少幻觉。它取代传统编程中的“代码逻辑”,用自然语言低成本控制AI,成为人机交互的新语言。

在商业化应用中,优化提示词直接影响效率、成本与用户体验,是当前AI落地的关键技能,也是非技术人员调用AI的主要方式。未来即使模型进化,复杂场景仍依赖提示词设计。

2.1 消息与角色(Messages and Roles)

通过一组包含指令的messages数组构建提示词,每条消息可指定不同的role,以影响模型对输入的理解:

角色说明示例
user用户请求模型输出的指令,类似ChatGPT中的终端用户输入。Write a haiku about programming.(编写一首关于编程的俳句)
developer优先于用户消息的系统级指令,用于定义模型的基础行为(原称系统提示词)。You are a helpful assistant that answers programming questions in the style of a southern belle from the southeast United States.(你是一位以美国东南部淑女风格回答编程问题的助手)
assistant模型生成的响应消息(可能来自历史对话轮次)。提供示例对话,引导模型正确响应特定类型输入(如“敲门笑话”)。

说明:消息角色可帮助模型更好地遵循层级化指令,但非确定性,需通过实验验证效果。

2.2 使用Responses API的示例

以下代码示例展示如何通过开发者消息修改模型对用户输入的响应风格:

const response = await openai.chat.completions.create({model: "gpt-4.1",messages: [{"role": "developer","content": [{"type": "text","text": `You are a helpful assistant that answers programming questions in the style of a southern belle from the southeast United States.`}]},{"role": "user","content": [{"type": "text","text": "Are semicolons optional in JavaScript?"}]}],store: true,
});

输出示例:

Well, sugar, that's a fine question you've got there! Now, in the world of JavaScript, semicolons are indeed a bit like the pearls on a necklace – you might slip by without 'em, but you sure do look more polished with 'em in place.  Technically, JavaScript has this little thing called "automatic semicolon insertion" where it kindly adds semicolons for you where it thinks they oughta go. However, it's not always perfect, bless its heart. Sometimes, it might get a tad confused and cause all sorts of unexpected behavior.

2.3 为模型提供额外数据(Retrieval Augmented Generation, RAG)

可通过消息类型向模型补充训练数据之外的信息(如数据库查询结果、文档等),辅助生成相关响应。此技术称为检索增强生成(RAG)。

三,提示词工程策略

我们来看下如何设计提示词,然后通过一些提示词策略来提高AI的能力,提升模型输出质量。

3.1 撰写清晰的指令​

这些模型并不会读心术,无法猜到你的想法。如果模型的输出内容过长,你可以要求它简短回答。如果模型输出内容过于简单,你可以要求使用更专业的水平写作。如果你对输出格式不满意,可以直接展示你期望的格式。最好就是让模型不需要去猜你想要什么,这样你最有可能获得想要的结果。

3.1.1 在你的查询中包含详尽的信息,以获取更为准确的答案​

为了得到更准确的回答,确保你的提问中包含了所有重要的细节和背景信息。否则你就是在让模型猜测你的意图。

较差的提问较好的提问
我该如何在 Excel 中进行加法计算?我该如何在 Excel 中自动计算一行中的美元总额?我想要的是自动为整张表格的每行进行计算,最终所有的总计数都显示在右侧名为“总计”的列中。
当前的总统是谁?2021 年,谁是墨西哥的总统?墨西哥的选举是多久举行一次的?
编写一个计算斐波那契序列的代码。编写一个 TypeScript 函数,用以高效计算斐波那契序列。请详细注释代码,解释每部分代码的作用以及为何这样编写。
总结一下会议记录。请用一个段落总结会议记录。接着,用 markdown 列表的形式列出所有发言者及其关键观点。最后,如果有的话,列出发言者提出的下一步计划或建议的行动项。

3.1.2 让模型扮演一个角色​

通过系统消息,我们可以指定模型在回答中所扮演的角色。

系统当我请求帮助撰写某些内容时,你的回答中每个段落至少应包含一个幽默的笑话或俏皮的评论。
用户请写一封感谢信给我的钢螺栓供应商,感谢他们及时且在短时间内的急速交付。正是由于他们的及时交付,我们才能按时完成一个重要的订单。

3.1.3 利用分隔符清晰区分输入的不同部分​

使用三重引号、XML 标签、章节标题等作为分隔符,能够有效地区别并处理不同的文本内容。

用户请使用三重引号中的文本进行总结,并用俳句的形式表达。

"""输入文本"""
系统你将会接收到两篇关于相同主题的文章(用 XML 标签分隔)。首先分别总结这两篇文章的主要论点。接着评价哪篇文章的论据更具说服力,并说明理由。
用户<article> 输入第一篇文章 </article>

<article> 输入第二篇文章 </article>
系统你将获得一篇论文的摘要和一个建议的标题。论文标题应该能让读者对论文的主题有个清晰的认识,同时也要足够吸引人。如果现有的标题不够吸引人或不够明确,那么请提出五个备选标题。
用户摘要:输入摘要

标题:输入标题

对于诸如此类的简单任务,使用分隔符可能不会对输出质量产生影响。但任务越复杂,就越需要清楚地区分每个任务的细节,以避免混淆。要让模型很准确地理解你究竟需要什么。

3.1.4 明确说明完成任务所需的每个步骤​

对于某些任务,最好将其分解成一系列明确的步骤。将步骤清晰地写出来,可以帮助模型更有效地遵循指令。

系统请按照以下步骤来回应用户的输入。

第 1 步 - 用户会给你提供带有三重引号的文本。请将这段文本总结为一句话,并以“摘要:”作为前缀。

第 2 步 - 将第 1 步中的摘要翻译成西班牙语,并以“翻译:”作为前缀。
用户"""输入文本"""

3.1.5 提供示例​

通常,给出适用于所有情况的通用指导比展示各种任务示例更高效。但在某些情况下,通过提供具体示例来说明可能更直观。比如,你想让模型学习某种特定的回应方式,这种方式可能难以用语言明确描述,这就是所谓的“少样本 (Few-shot)”提示方法。

系统保持一致的回答风格。
用户大师,什么是耐心?
助手深谷自浅泉,宏曲生寂音,繁绣始孤线。
用户大师,什么是大海?

3.1.6 明确输出长度要求​

你可以要求模型按照指定的长度来生成答案。这个长度可以根据单词、句子、段落、要点等的计数来指定。但要注意,让模型精确生成特定字数的文本可能不太容易做到。模型更擅长按照指定的段落数或要点数来构建输出。

用户请用大约 50 个词概括三引号内的文本。

"""输入文本"""

参考:

https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions

相关文章:

  • USB学习【6】USB传输错误的处理
  • 基于去中心化与AI智能服务的web3钱包的应用开发的背景描述
  • 湖北理元理律师事务所债务优化体系拆解:科学规划如何实现“还款不降质”
  • [ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响
  • 使用 Java 反射动态加载和操作类
  • 【前端】【HTML】【总复习】一万六千字详解HTML 知识体系
  • 事务(理解)与数据库连接池
  • 【AI论文】作为评判者的感知代理:评估大型语言模型中的高阶社会认知
  • 【Java学习笔记】instanceof操作符
  • Quantum convolutional nerual network
  • Web开发—Vue工程化
  • stm32实战项目:无刷驱动
  • 期刊 | 《电讯技术》
  • 信息安全管理与评估索引
  • C++中什么是函数指针?
  • 嵌入式STM32学习——振动传感器
  • fast-livo2原理
  • 匈牙利算法
  • all-in-one方式安装kubersphere时报端口连接失败
  • 软件设计师-错题笔记-软件工程基础知识
  • 李强会见巴西总统卢拉
  • SIFF动画单元公布首批片单:《燃比娃》《凡尔赛玫瑰》等
  • 周启鸣加盟同济大学,曾任香港浸会大学深圳研究院院长
  • 山西省委常委李金科添新职
  • 礼来公布头对头研究详细结果:替尔泊肽在所有减重目标中均优于司美格鲁肽
  • 第一集丨《亲爱的仇敌》和《姜颂》,都有耐人寻味的“她”