《AI大模型开发笔记》——Prompt提示词最佳实践

server/2024/11/27 10:30:17/

为什么需要提示词优化

什么是 Prompt enginnering?
提示词:解释一下什么是大语言模型的Prompt enginnering


图1. 什么是Prompt Enginnering?

通过上面ChatGPT的说明,我们可以看到,prompt工程化就是如何写prompt提示词的一些技巧。
那么,为什么需要进行提示词优化呢?

  • 第一点,对个人使用者: 提高使用大语言模型的效率,让大模型更好的为我们服务。
  • 第二点,对于开发者:改善大语言模型输出的稳定性。
    (详细解说,请参考视频: https://youtu.be/cVPFbRuXoY0 )

最近OpenAI官方发布了一个如何来写Prompt的best practices(最佳实践)。这里,给大家分享看看OpenAI都介绍了哪些prompt的方法和技巧。

共分为六个策略:

  • 给出清晰的指示
  • 提供参考文字
  • 将复杂任务拆分为更简单的子任务
  • 给GPT时间思考
  • 使用外部工具
  • 系统性的进行测试

策略一:给出清晰的指示

GPT 无法读取您的想法。如果你认为输出内容太长,可以要求简短回复。如果输出内容太简单,可以要求专家级写作。如果您不喜欢输出的格式,可以示范您想看到的格式。GPT在猜测您想要的内容方面越少,您得到想要的内容的可能性就越大。

技巧1:在查询中包含详细信息以获得更相关的答案

【观看视频解说】

为了获得高度相关的回应,请确保请求提供任何重要的细节或背景信息。否则,您就是让模型来猜测您的意思。

更好
我该如何在Excel中加数字? 视频解说我该如何在Excel中对一行美元金额求和?我想要自动地对一个工作表的所有行做这个操作,并且让所有的总数显示在右边的一个名为“总计”的列中。
谁是总统?2021年墨西哥的总统是谁,选举是多久举行一次?
编写代码来计算斐波那契数列。视频解说编写一个TypeScript函数来高效地计算斐波那契数列。请充分注释代码,解释每一部分的作用以及为什么以这种方式编写。
总结会议记录。用一段文字总结会议记录。然后用markdown列出发言人及其各自的要点。最后,如果有的话,列出发言人建议的下一步行动或待办事项。

技巧2:要求模型扮演一个角色

系统消息(system message)可以用来指定模型在回复中所扮演的角色。

  • 例子:
 系统:当我请求帮助撰写某些内容时,您将回复一份文件,在每段中至少包含一个笑话或幽默评论。用户:给我的钢螺栓供应商写一张感谢便条,感谢他们及时且在短时间内完成交货。这使我们能够完成一份重要的订单。

技巧3:使用分隔符清晰地标示输入的不同部分

像三重引号、XML标签、章节标题等分隔符可以帮助划分文本的不同部分以便进行不同的处理。

  • 例1:
  用户: 用俳句来总结用三重引号界定的文本。"""在此插入文本"""
  • 例2:
  系统: 您将获得两篇关于同一主题的文章(用 XML 标签分隔)。先总结一下每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。用户: <article>在这里插入第一篇文章</article> <article>在这里插入第二篇文章</article>
  • 例3:
  系统: 您将获得论文摘要和建议的标题。论文标题应该让读者清楚地了解论文的主题,但也应该引人注目。如果标题不符合这些标准,请提出 5 个替代方案。用户: 摘要:在此插入摘要 标题:在此插入标题

对于这种简单的任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,消除任务细节的歧义就越重要。不要让 GPTs 费力去理解你究竟要求它们做什么。

技巧4:指定完成任务所需的步骤

一些任务最好通过一系列步骤来明确指定。明确地写出这些步骤可以使模型更容易遵循它们。

系统: 按照以下分步指示来回应用户输入。步骤1 - 用户会提供三重引号内的文本。用“Summary: ”作为前缀,将这段文本总结为一句话。步骤2 - 将步骤1中的总结翻译成西班牙语,并以“Translation: ”作为前缀。
用户: """insert text here"""

技巧5:提供示例

为所有示例提供适用的通用指示通常比通过示例演示任务的所有排列更高效,但在某些情况下,提供示例可能更容易。例如,如果您希望模型模仿一种回应用户查询的特定风格,而这种风格很难明确描述。这被称为“少样本(few-shot)”提示。

系统
以一致的风格回答。
用户
教我关于耐心。
助手
雕刻最深山谷的河流源于一个朴素的泉眼;最宏伟的交响乐源于单个音符;最复杂的挂毯始于一根孤立的线程。
用户
教我有关海洋的知识。

技巧6:指定输出的期望长度

你可以要求模型生成具有给定目标长度的输出。目标输出长度可以用单词、句子、段落、项目符号等的数量来指定。然而,请注意,指示模型生成特定数量的单词的精度不高。模型更可靠地生成具有特定数量的段落或项目符号的输出。

  用户: 用大约 50 个单词总结由三重引号中的文本。"""在此插入文本"""用户: 将用三重引号界定的文本总结为两段。"""在此插入文本"""用户: 将由三引号中的文本总结为 3 个要点。"""在此插入文本"""

参考文献

  • [1] https://platform.openai.com/docs/guides/gpt-best-practices

http://www.ppmy.cn/server/145313.html

相关文章

Linux系统三剑客之SED

sed的使用方法 sed文本处理&#xff1a;正则选定文本 -> sed进行处理 sed处理后并不会改变其内容 格式 命令行格式 sed [options] command file(s)主要参数&#xff1a; options: -e,-ncommand: 行定位&#xff08;正则&#xff09; sed命令&#xff08;操作&#xff…

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…

老旧前端项目如何升级工程化的项目

因为历史的原因存在着大量的老旧前端项目&#xff0c;而在今天的开发环境中已经不再适应了&#xff0c;于是产生了升级到新的环境的需求。比如笔者当前的一个登录页面项目&#xff0c;就是以下面为技术栈的老旧项目。 基于 jQuery包管理基于 require.js&#xff0c;甚至有的没…

Error: Invalid version flag: if 问题排查

问题描述&#xff1a; 国产化系统适配&#xff0c;arm架构的centos 在上面运行docker 启动后需要安装数据库 依赖perl 在yum install -y perl 时提示&#xff1a; “Error: Invalid version flag: if”

MYSQL表的增删改查(下)

目录 修改&#xff08;Update&#xff09; 删除&#xff08;Delete&#xff09; 本文主要介绍的是表的修改的删除&#xff0c;如果需要了解新增和查询的可以看&#xff1a;MYSQL 表的增删改查&#xff08;上&#xff09;-CSDN博客 修改&#xff08;Update&#xff09; 语法…

环状DNA序列的最小表示法

问题描述 环状 DNA 又称超螺旋&#xff0c;即一段碱基序列呈现环状&#xff0c;在分析时&#xff0c;需要将相同序列的环状 DNA 分到相同组内&#xff0c;现需将环状碱基序列按照最小表示法进行排序。 一段长度为 n 的碱基序列&#xff0c;按照顺时针方向&#xff0c;碱基序列…

代码随想录算法训练营第十三天(递归遍历;迭代遍历;统一迭代;层序遍历)

递归遍历 LeetCode 144. 二叉树的前序遍历 题目链接&#xff1a;二叉树的前序遍历题目链接 代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) …

基于Java Springboot餐饮美食分享平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL8.0 …