如何写出好的Prompt提示词

本文将介绍大模型处理文本的基本单位Token及其优化技巧,详细阐述了提示词(Prompt)的分类和基础写法,包括明确任务角色、提供详细示例、结构化格式等核心技巧。同时分享了7个进阶提示技巧,如思维链提示、少样本学习、多视角分析等,并介绍了Prompt模板(PromptTemplate)的动态变量替换功能及其在复杂场景中的应用。最后强调了提示词优化是一个持续迭代的过程,建议参考官方指南和现成提示词库进行学习改进。

Token

什么是token呢?token是大模型处理文本的基本单位,不同的大模型对于token的划分不同,如Open AI,规定一个token相当于4个字符或0.75个英文单词,一到二个token相当于1个汉字,空格和标点、特殊符合也计入token数,输入输出都会算token,可以用OpenAI Tokens在线计算工具来计算。

Token成本优化技巧:精简系统提示词、定时清理对话历史、使用向量检索(RAG)代替直接输入、结构化代替自然语言(如,表格、列表)。

基础提示词的写法技巧

提示词的常见种类:

  • 按角色分类:用户提示词( User Prompt)、系统提示词(System Prompt)、助手提示词(Assistant Prompt)
  • 按功能分类:指令型提示词、对话型提示词、创意型提示词 、角色扮演提示词、少样本学习提示词
  • 按复杂度分类:简单提示词、复合提示词、链式提示词、模板提示词

Prompt基础提示技巧:1.明确指定任务和角色、2.提供详细说明和具体示例、3.使用结构化格式引导思维、4.明确输出格式要求

1. 明确指定任务和角色

核心理念:告诉AI“你是谁”和“你要做什么”

  • 指定角色:给AI分配专业身份(如“你是一位资深后端程序员”、“你是数据分析师”)
  • 明确任务:清晰定义需要完成的具体工作
  • 目的:设定上下文,引导AI采用特定领域的知识和表达方式
  • 示例:从“翻译这段话”变为“作为一名英语翻译专家,请将这段中文翻译成英文”

2. 提供详细说明和具体示例

核心理念:消除模糊性,展示期望的结果

  • 详细说明:包括目标、约束条件、风格要求、长度限制等
  • 具体示例:提供输入-输出的样例对,展示理想格式和质量
  • 目的:减少AI的猜测空间,确保输出符合预期
  • 示例:不仅说“写一个产品描述”,而是提供示例:“像这样:‘产品x采用创新技术,提升效率50%...’”

3. 使用结构化格式引导思维

核心理念:用清晰的格式组织提示内容

  • 常用格式:使用标题、编号、分点、分隔符等
  • 逻辑分组:将相关信息分组呈现
  • 目的:帮助AI理解信息结构和优先级

示例

任务:[具体任务]
背景:[相关背景信息]
要求:[具体要求1、2、3...]
输出格式:[指定格式]

4. 明确输出格式要求

核心理念:指定输出的具体形式

  • 格式类型:JSON、Markdown、表格、列表、特定段落结构等
  • 细节要求:包括字段、长度、语言风格等
  • 目的:确保输出可直接使用,无需二次格式化
  • 示例:“请以JSON格式输出,包含title、key、value三个字段”

提示词的常用七个进阶技巧

Prompt进阶提示技巧:1.思维链提示法、2.少样本学习、3.分步骤指导、4.自我评估和修正、5.知识检索和引用、6.多视角分析、7.多模态思维。

1、思维链提示法

要求模型在给出最终答案前,先展示其逐步推理的过程。关键是使用 “让我们一步步思考” 这类触发语。将复杂的“黑箱”计算转化为透明的、可审查的逻辑链。这显著提升了模型在数学、逻辑推理、常识判断等需要多步处理问题上的准确性。

2、少样本学习

在Prompt中提供少量(通常1-5个)高质量的输入和输出示例,作为模型完成新任务的“样板”。通过示例,明确地向模型展示了您期望的任务格式、风格、深度和标准,极大地减少了歧义。特别适用于格式固定、风格独特或定义模糊的任务。

3、分步骤指导

将一个庞大复杂的任务,分解为多个清晰、有序、可管理的小步骤,并依次要求模型执行。模仿了人类处理复杂项目的方法(如项目管理和烹饪食谱),防止模型因任务过于复杂而“不知所措”,导致遗漏关键环节或产出混乱。

4、自我评估和修正

要求模型在生成答案后,从特定角度(如事实准确性、逻辑一致性、是否满足所有要求等)对自己的答案进行批判性检查,并根据评估进行修正。引入了“反思”和“迭代”的机制,能有效发现和纠正模型在第一次生成时可能犯下的错误或疏忽,显著提升结果的可靠性和完整性。

5、知识检索和引用

在提问前或要求模型回答时,先提供相关的背景知识、数据片段或明确要求模型引用其内部知识库中的信息,并可要求注明来源(对于支持联网或文件上传的模型)。将回答“锚定”在具体、可靠的信息源上,而非依赖模型的“记忆”或“幻觉”,大幅提升答案的准确性和可信度。对于专业、实时或需要溯源的问题至关重要。

6、多视角分析

要求模型从不同角色(如生产者、消费者)、不同学科(如经济学、心理学、伦理学)或不同立场(支持、反对、中立)对同一问题进行剖析。强制模型打破单一思维模式,产出更全面、辩证、富有洞见的分析。特别适用于战略决策、议题辩论、创意生成等需要多维度思考的场景。

7、多模态思维

对于支持多模态输入的模型(如能处理图像、音频、PDF等),将问题与这些非文本信息结合,进行综合推理和创作。即使对于纯文本模型,也可以要求其用文字描述、设计或分析非文本内容。极大地扩展了模型的应用边界,使其能够完成看图说话、图表分析、根据描述生成草图、视频脚本创作等复杂任务,更贴近真实世界的交互方式。

Prompt调试与优化技巧

好的提示词很难一步到位,我们要学会如何持续调试优化,可以通过以下几点进行优化:

1.迭代式优化

2.边界测试

3.提示词模板化

4.错误分析与修正

总而言之就是任务越复杂,给Prompt的提示细节就要越多。

可以去搜索Prompt Engineering Guide提示工程指南、OpenAI提示词工程指南、Spring AI提示工程指南、Authropic提示词工程指南等等来阅读学习优化技巧,当然除了可以通过这些官方文档自己深入学习提示词优化技巧外,还可以通过Prompt提示词库(如,文本对话:Authropic提示词库:Midjourney提示词库等)来自主优化参考现成提示词。

写好提示词的关键:

  1. AI是出色的执行者,但需要明确的指令:AI不知道你的隐含需求,必须显式说明
  2. 格式是思考的脚手架:清晰的格式要求能显著提升输出质量
  3. 示例是最直接的教学:给AI展示“好的样子”比描述更有效
  4. 复杂问题需要拆解:人类思考的步骤化也能帮助AI思考
  5. 优化是循环过程:很少有一次完美的提示,需要测试-反馈-改进

Prompt模板(Prompt Template)

PromptTemplate 是 Spring AI 中用于生成结构化提示词的核心工具。它通过模板化的方式简化提示词的创建,并支持动态内容的插入。

PromptTemplate 的关键功能:

  1. 模板渲染:通过占位符 {} 定义动态变量,使用 render() 方法生成最终提示词。

  2. 灵活配置:支持自定义分隔符(如 < 和 >),避免与 JSON 等格式冲突。

  3. 多种创建方式:支持从字符串或资源文件创建模板,并通过 Map 提供动态内容。

用于构建和管理提示词的核心组件,允许开发者创建带有占位符的文本模板,运行时动态替换这些占位符。类似Spring MVC中的视图模板或(JSP),最基础的功能就是支持变量替换,在模板中定义占位符,然后运行时提供这些变量的值,如,你好,{name},今天是{day}模板思路在编程中经常用到,如数据库的预编译语句、记录日志时的变量占位符、模板引擎等。案例代码如下:

// 定义带有变量的模板
String template = "你好,{name}。今天是{day},吃{food}。";
// 创建模板对象
PromptTemplate promptTemplate = new PromptTemplate(template);
// 准备变量映射
Map<String, Object> variables = new HashMap<>();variables.put("name", "小楼");
variables.put("day", "星期六");
variables.put("food", "汉堡炸鸡");
// 生成最终提示文本
String prompt = promptTemplate.render(variables);
// 结果: "你好,小楼。今天是星期六,吃汉堡炸鸡。"

Prompt Template在开发复杂场景下特别有用,常用的如:

1、动态个性交互:根据用户信息、上下文或业务规则定制提示词

2、多语言支持:使用相同变量,但不同的模板文件支持多种语言

3、A/B测试:轻松切换不同版本的提示词进行效果比较

4、提示词版本管理:将提示词外部化,便于版本控制和迭代优化,使用Prompt Template的核心原因:支持从外部文件加载模板内容,很适合管理复杂的提示词,如:

// 从类路径资源加载系统提示模板
@Value("classpath:/prompts/system-message.st")
private Resource systemResource;

// 直接使用资源创建模板
SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource);

Prompt Template实现原理

底层使用了OSS StringTemplate专注于文本的引擎,通过分别实现不同的接口来实现创建不同类型的模板字符串对象、Prompt模板、Message对象,如,render()通过模板生成prompt字符串、create()通过模板生成prompt、createMessage()通过模板生成Message。

Spring AI提供了几种专用的模板类:1、SystemPromptTemplate 2、AssistantPromptTemplate 3、FunctionPromptTemplate

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐