注意,传统的提示工程对新模型o1可能失效:来自OpenAI官方的4条提示词建议!

news2024/9/19 9:22:27

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普AI工具测评AI效率提升AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。

基于当下的大语言模型(LLM)根据注意力机制随机生成的特点,AI幻觉是一个无法绕开的话题。而要想使AI模型输出的内容更加稳定,更符合我们的要求,我在《『深度长文』4种有效提高LLM输出质量的方法!》一文中详细介绍了4种提高AI模型输出质量的方法,其中提示工程(prompt engineering)是针对个人用户最易上手的方法,没有之一。

我在之前关于提示词的文章里,介绍过很多种提示工程技术,比如零样本提示(Zero-Shot Prompting)少样本提示(Few-Shot Prompting),以及思维链提示(Chain-of-Thought Prompting)

在OpenAI推出新一代推理模型o1系列后,官方针对如何更有效地使用这些模型给出了四条提示词建议以及三个提示词示例。然而,根据OpenAI官方的描述,这些传统的提示工程技术对于o1模型可能已经失效,过度依赖甚至可能会造成适得其反的效果,降低o1模型的表现。

四条o1提示词建议

1. 保持提示词简单直接

o1系列模型具有强大的理解和推理能力,它们能够通过简短、清晰的提示词准确地抓住核心问题并做出回应。相比于传统模型,o1模型并不需要过多的引导或复杂的上下文提示。举例来说,如果你想让模型解答一个数学问题,你可以直接提出问题,如“计算5的平方是多少?”而不需要额外的描述或指导。这意味着复杂的多步提示或引导式对话,反而可能会使模型的表现变得不如预期。

因此,在撰写提示词时,应该回归问题的本质,优先简化问题,保持问题本身的直接性。这样可以让o1模型充分发挥其强大的推理能力。

2. 避免使用链式推理提示

链式推理chain-of-thought)技术在传统的提示工程中常被用于鼓励模型一步步展开思考并解释其推理过程。然而,o1系列模型在其内部已经具备了自主展开复杂推理的能力,因此不再需要通过提示词要求模型“逐步解释”或“详细展开思路”。

例如,在传统模型中,你可能会提示“请逐步解释如何求解这个问题”,但在o1模型中,这样的提示可能会适得其反,导致模型的回答变得冗长而不必要。o1模型已经经过强化学习,可以自行生成内部的推理链条并直接提供答案,因此无需显性引导

3. 使用分隔符增强提示词清晰度

为了帮助模型更好地理解提示词中的不同部分,建议使用明确的分隔符。分隔符如三重引号、XML标签或章节标题可以让模型更好地识别提示词中的结构,特别是在涉及多个问题、长段文本或需要额外信息的情况下。

举例来说,假设你想要模型先解释一段理论背景,然后再回答一个具体问题,你可以使用如下提示词格式:

"""理论背景:狭义相对论的核心思想是..."""
问题:基于以上理论,相对论中的时间膨胀效应是如何发生的?

这种清晰的结构有助于模型区分不同信息块,确保它能够准确理解和处理每一部分内容。

4. 在RAG(检索增强生成)中限制额外上下文

RAGRetrieval-Augmented Generation,检索增强生成)是一种将外部文档或信息作为提示的一部分传递给模型的方法(我在之前的文章中详细介绍过RAG,感兴趣的小伙伴可以查找翻看)。然而,o1模型在处理这类任务时,建议只提供最相关的信息。提供过多的上下文或冗余信息,可能会导致模型过度复杂化其回答。

例如,当你向模型提供一段与问题相关的参考文档时,只需包括核心内容,删除不相关的背景信息或细节。过量的额外上下文不仅会增加模型处理负担,反而可能导致它忽视关键信息或在回答时“走偏”。

三个o1提示词示例

在介绍了如何提高o1模型的输出质量后,OpenAI还给出了一些实际提示词示例,以帮助用户更好地理解如何在不同场景下使用这个全新的推理模型。这些案例涵盖了代码重构、项目规划以及科学研究,展示了o1模型在这些领域的应用能力。

1. 让o1模型重构代码

在这个示例中,用户要求o1模型对一段React代码进行重构,要求将“非虚构类”书籍的文字颜色变为红色。这一提示展示了o1模型在代码编写和重构方面的能力,尤其适用于开发者希望快速进行代码优化和修改的场景。

具体提示词如下:

Instructions:
- Given the React component below, change it so that nonfiction books have red
  text.
- Return only the code in your reply.
- Do not include any additional formatting, such as markdown code blocks.
- For formatting, use four space tabs, and do not allow any lines of code to 
  exceed 80 columns.

const books = [
  { title: 'Dune', category: 'fiction', id: 1 },
  { title: 'Frankenstein', category: 'fiction', id: 2 },
  { title: 'Moneyball', category: 'nonfiction', id: 3 },
];

export default function BookList() {
  const listItems = books.map(book =>
    <li>
      {book.title}
    </li>
  );

  return (
    <ul>{listItems}</ul>
  );
}

这个提示词示例中,最核心的一点就是简洁明确的指令,完全符合之前提到的“保持提示词简单直接”的原则。它清晰地列出了任务要求,明确指出了要实现的功能(非小说类书籍的红色文本显示),并且指示模型只返回代码,而不需要包含额外的格式化信息,如代码块或解释。这样的设计有效避免了无关信息对模型的干扰,使模型能够聚焦于任务本身

2. 让o1模型规划和创建Python项目

在第二个示例中,用户希望构建一个Python应用程序,该应用可以处理用户提问,并通过数据库查找匹配的答案。如果没有找到合适的答案,它将提示用户添加新答案并存储这个问题/答案对。这个示例展示了o1模型在项目规划和代码生成方面的能力,非常适合需要从头搭建项目结构的场景。

具体提示词如下:

I want to build a Python app that takes user questions and looks them up in a 
database where they are mapped to answers. If there is close match, it retrieves 
the matched answer. If there isn't, it asks the user to provide an answer and 
stores the question/answer pair in the database. Make a plan for the directory 
structure you'll need, then return each file in full. Only supply your reasoning 
at the beginning and end, not throughout the code.

这个示例很明显是一个多步骤的复杂任务,要求o1模型不仅要规划项目的文件结构,还需要完整地实现代码。o1模型没有被要求详细解释每一步推理过程,而是只需在开头和结尾提供简单的说明,符合了避免使用链式推理提示的建议。通过这种方式,模型能够专注于生成代码和设计项目结构,而不是过度展开推理。

3. 让o1模型回答科研问题

最后一个示例展示了o1模型在科学研究领域的表现。用户询问模型关于抗生素研究中需要重点关注的三种化合物,并要求模型解释选择这些化合物的原因。这类提示适合科研人员和学者,希望模型能够提供深入的研究建议或支持科学探讨。

具体提示词如下:

What are three compounds we should consider investigating to advance research 
into new antibiotics? Why should we consider them?

在这个提示词设计上,用户只需提出简明扼要的问题,并未提供额外的上下文或长篇解释,这与前面讨论的保持提示词简单直接的建议一致。o1模型能够基于其内部知识推理出相关的化合物,并给出清晰的理由。

结语

通过OpenAI官方给出的针对o1模型的提示词建议和样例可以看出,o1模型的提示词设计与以往的LLM存在显著差异。不再需要像之前那样通过复杂的提示工程来引导模型推理,相反,简洁、清晰的提示词将能让o1发挥其强大的自主推理能力。


精选推荐

  1. 免费的新模型o1 mini即将到来:OpenAI正在逐步开放!

  2. 【深度分析】OpenAI o1是最强的推理模型,却不是最强模型!

  3. 重磅!OpenAI正式发布博士水平的推理模型o1!附详细说明

  4. ChatGPT Pro都来了,ChatGPT Pro Max还会远吗?


都读到这里了,点个赞鼓励一下吧,小手一赞,年薪百万!😊👍👍👍。关注我,AI之路不迷路,原创技术文章第一时间推送🤖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink系列知识之:Checkpoint原理

Flink系列知识之&#xff1a;Checkpoint原理 在介绍checkpoint的执行流程之前&#xff0c;需要先明白Flink中状态的存储机制&#xff0c;因为状态对于检查点的持续备份至关重要。 State Backends分类 下图显示了Flink中三个内置的状态存储种类。MemoryStateBackend和FsState…

linux设置常见开机自启动命令

本文介绍了三种开机自启的方式&#xff0c;重点介绍使用systemctl的方式自启动的 方式一、修改 /etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话&#xff0c;可以将自己脚本路径加到…

Kubernetes从零到精通(12-Ingress、Gateway API)

Ingress和Gateway API都是Kubernetes中用于管理外部访问集群服务的机制&#xff0c;但它们有不同的设计理念和适用场景。它们的基本原理是通过配置规则&#xff0c;将来自外部的网络流量路由到Kubernetes集群内部的服务上。 Ingress/Gateway API和Service Ingress/Gateway API…

边缘计算智能网关的功能应用与优势-天拓四方

在物联网的世界中&#xff0c;数以亿计的设备不断产生、传输和处理数据。然而&#xff0c;传统的云计算架构在面对这些实时性要求高、数据量庞大的物联网数据时&#xff0c;常常面临着网络延迟、带宽限制和安全风险等问题。这时&#xff0c;边缘计算智能网关作为一种新兴的技术…

图书馆座位预约系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;图书馆管理&#xff0c;座位信息管理&#xff0c;预约选座管理&#xff0c;签到信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;论坛&#xf…

【Harmony】轮播图特效,持续更新中。。。。

效果预览 swiper官网例子 Swiper 高度可变化 两边等长露出&#xff0c;跟随手指滑动 Swiper 指示器导航点位于 Swiper 下方 一、官网 例子 参考代码&#xff1a; // xxx.ets class MyDataSource implements IDataSource {private list: number[] []constructor(list: nu…

python:Django与Celery配合实现定时任务

Celery是一个基于python开发的分布式任务队列&#xff0c;而做python WEB开发最为流行的框架莫属Django&#xff0c;但是Django的请求处理过程都是同步的无法实现异步任务&#xff0c;若要实现异步任务处理需要通过其他方式&#xff08;前端的一般解决方案是ajax操作&#xff0…

监控网线和电话线水晶头

监控网线 1、网络摄像机网线接口的线序与B类网线的对应关系&#xff08;表格从左到右代表线序1-8&#xff09; 表格解读&#xff1a; &#xff08;1&#xff09;请先查看摄像机网线对应的颜色&#xff0c;确定是第一种还是第二种摄像机类型 &#xff08;2&#xff09;确定好…

计算机网络基础 - 应用层(3)

计算机网络基础 应用层P2P 应用P2P 体系结构的扩展性BitTorrent 协议torrenl 洪流BitTorrent 运行的过程 P2P文件共享应用非结构化 P2PDHT 结构化 P2P&#xff08;了解&#xff09; 视频流和内容分发网视频流化服务HTTP 流和 DASH内容分发网 CDN面临挑战CDN 概述CDN 操作过程集…

MFC获取网页的html文本

使用 CInternetSession 类和 CHttpFile 类&#xff1b; 在stdafx.h中加入 #include <afxinet.h> &#xff1b; 基本的代码如下&#xff0c; void CMFCApplication3Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码try{CInternetSession session;CH…

4.事件组

事件组的本质:一个整数 里面的每一个bit,表示一类事件 任务A:可以等待这个整数的"bitx,bity,bitz....."都被设置为1. 这就是"AND"的关系 也可以等待这个整数的"bitx bity bitz..."任意一个被设置为1. 事件组有一个特别的地方在于: 1.假设任…

【QML 基础】QML ——描述性脚本语言,用于用户界面的编写

文章目录 1. QML 定义 1. QML 定义 &#x1f427; QML全称为Qt Meta-Object Language&#xff0c;QML是一种描述性的脚本语言&#xff0c;文件格式以.qml结尾。支持javascript形式的编程控制。QML是Qt推出的Qt Quick技术当中的一部分&#xff0c;Qt Quick是 Qt5中用户界面的涵…

React框架搭建,看这一篇就够了,看完你会感谢我

传统搭建框架的方式 在2024年以前&#xff0c;我们构建框架基本上采用官方脚手架&#xff0c;但是官方脚手架其实大概率都不符合我们的项目要求&#xff0c;搭建完了以后往往需要再继续集成一些第三方的包。这时候又会碰到一些版本冲突&#xff0c;配置教程等&#xff0c;往往…

C++入门基础知识九

1.string类对象的容量操作 函数名称功能说明size返回字符串有效长度length返回字符串有效长度capacity返回总空间大小empty检测字符串是否为空&#xff0c;为空返回true&#xff0c;否则falseclear清空有效字符reserve为字符预留空间number大小空间resize将有效字符改为n个&am…

Qt窗口——QToolBar

文章目录 工具栏创建工具栏设置toolTip工具栏配合菜单栏工具栏浮动状态 工具栏 QToolBar工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。 可以有多个&#xff0c;也可以没有。 创建工具栏 #include "mainwindow.h" #include "ui_mainwindow.h&qu…

【Python报错已解决】ModuleNotFoundError: No module named ‘sklearn‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

App Fiddler抓包配置

1. 概述 Android Fiddler是一个非常强大的抓包工具&#xff0c;可以用来捕获并分析Android设备上的网络请求和响应。在实现"android fiddler 抓包https"的过程中&#xff0c;我们需要进行以下步骤&#xff1a; 安装Fiddler并配置代理 配置Android设备的网络代理 在Fi…

机器人的动力学——牛顿欧拉,拉格朗日,凯恩

机器人的动力学推导方法有很多&#xff0c;常用得有牛顿&#xff0c;拉格朗日&#xff0c;凯恩等方法&#xff0c;接下来&#xff0c;简单说说他们之间的使用。注&#xff1a;这里不考虑怎么来的&#xff0c;只说怎么应用。 参考1&#xff1a;4-14动力学分析方法-牛顿—欧拉方…

linux下的日志编写

1、日志初始化创建 2、日志写入 3、日志关闭 log.c #include "log.h"static log_t LOG;//初始化日志文件&#xff0c;在当前目录创建日志文件 int log_init(char *pdirname) {time_t t;struct tm *ptm NULL;char filepath[64] {0};int ret 0;time(&t);ptm …

MySQL_表的基本操作

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…