AI系统性学习02-OpenAI官方提示工程

OpenAI官方提供了提示词工程指南。在这里将他们总结来指示LLM返回更好的结果。

策略1:撰写清晰的指令

如果输入的内容过于杂乱,模型无法读取你的思想。一般来说可以拥有以下的战术

  • 在查询中包含技术细节以获得相关答案;
  • 要求模型扮演某种角色;
  • 只用定界符清楚地表示输入的不同部分;
  • 指定完成任务所需的步骤;
  • 提供示例;
  • 指定输出的期望长度;

策略2:提供参考文本

语言模型可以自信地虚构答案,特别是在涉及深奥话题、引用和网址时,因为模型更新成本比较高,互联网上的新内容更新太快了,模型不知道就会胡说八道。

  • 指示模型使用参考文本回答问题;
  • 指示模型使用参考文本中的引用;

策略3:将复杂任务拆分为简单任务

复杂任务的错误率往往比简单任务要高。此外,复杂任务通常可以重新定义为一系列简单任务的工作流程,其中较早任务的输出用于构建后续任务的输入。

  • 针对需要非常长的对话应用,总结或过滤之前的对话;
  • 递归得对长文档进行逐段摘要和构建完整摘要;

策略3:给模型构建时间⭐️

如果被要求计算17乘以28,你可能不会立刻知道答案,但是可以通过时间算出来。同样地,模型在试图立即回答问题时容易出现更多推理错误,而不是花时间思考出一个答案。在得出答案之前要求进行“思维链”有助于模型更可靠地推理出正确答案。

  • 要求模型在做出结论之前自行解决问题;
  • 使用内心独白或者一系列查询来隐藏模型的推理过程;
  • 询问模型是否在之前的处理中有遗漏任何内容;

策略4:使用外部工具⭐️

通过向模型提供其他工具的输出来弥补模型的缺陷。例如,文本检索系统(有时称为RAG或检索增强生成)可以告诉模型相关文档的信息。像OpenAI的代码解释器这样的代码执行引擎可以帮助模型进行数学和代码运行。

  • 使用基于嵌入的搜索来实现高效的知识搜索;
  • 使用代码执行来进行更精确的技术或调用外部API;
  • 让模型访问特定功能;

策略5:系统地测试变化

我们可以通过调整提示词,观察结果是否满足预期,评估模型的输出效果。

  • 用标准答案评估模型输出

提示词实战

大多数的内容其实和我们在之前的内容差不多,在这里我们主要来说明一些和之前提示词工程不一样的内容:

使用外部工具

  • 使用基于嵌入的搜索来实现高效的知识检索
    模型可以利用外部信息来源,如果作为其输入的一部分提供。这可以帮助模型生成更为明智和更新的回复。例如,如果用户提出关于特定电影的问题,将有关电影的高质量信息(例如演员,导演等)添加到模型的输入中可能是有益的。嵌入可以用于实现高效的知识检索,从而可以在运行时动态地将相关信息添加到模型输入中。

    文本嵌入是一种可以衡量文本字符串相关性的向量。相似或相关的字符串将比不相关的字符串更接近。这一事实,再加上存在快速向量搜索算法,意味着可以使用嵌入来实现高效的知识检索。特别是,文本语料库可以被分成多个块,然后每个块可以被嵌入和存储。然后,可以对给定的查询进行嵌入并执行向量搜索,以找到与查询最相关的语料库中被嵌入的文本块(即在嵌入空间中最接近的)。

  • 使用代码执行进行更精确的计算或调用外部API
    语言模型不能单独依赖于执行算术或长时间的计算。在需要进行这种计算的情况下,可以指示模型编写和运行代码,而不是进行自己的计算。特别是,可以指示模型将要运行的代码放入指定格式(例如,三个反引号)。生成输出后,可以提取并运行代码。最后,如果需要,可以将代码执行引擎(即Python解释器)的输出作为下一个查询的模型输入。

// 系统消息您可以通过将其置于三个反引号中来编写和执行Python代码,例如 \`\`\`代码放在此处\`\`\`。使用这种方法执行计算。// 用户消息找出以下多项式的所有实根:3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10。

代码执行的另一个很好的用例是调用外部API。如果指导模型正确使用API,它可以编写使用该API的代码。可以通过提供API的文档和/或代码示例来指导模型如何使用API。

// 系统消息您可以通过将其置于三个反引号中来编写和执行Python代码。还要注意,您可以访问以下模块来帮助用户发送消息给他们的朋友:\`\`\`python
import message
message.write(to="John", message="嘿,下班后想见面吗?")\`\`\`

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

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

相关文章

SpringBoot3整合mybatis

SpringBoot3整合mybatis 一、添加mybatis的依赖二、通过XML配置三、通过yum或properties文件配置四、常用注解1.Mapper2.MapperScan 一、添加mybatis的依赖 <!--mybatis--> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>…

简单的网页制作

1网页编写格式 <!DOCTYPE html> <html><head><meta charset"utf-8"> <title>中文测试。。。。</title></head><body>这里是测试body测试内容。。。</body> </html>2标签 在body内<h1></h1&…

鸿蒙开发实现弹幕功能

鸿蒙开发实现弹幕功能如下&#xff1a; 弹幕轮播组件&#xff1a;BannerScroll import type { IDanMuInfoList, IDanMuInfoItem } from ../model/DanMuData //定义组件 Component export default struct BannerScroll {//Watch 用来监视状态数据的变化&#xff0c;包括&#…

Java代码基础算法练习-判断字符串是否为回文-2024.03.16

任务描述&#xff1a; 回文串是指一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等。要求输入 一个字符串&#xff0c;判断此字符串是否为回文。&#xff08;注&#xff1a;设字符串长度小于20&#xff09; 任务要求&#xff1a; package suanfa;import…

反弹shell的正向连接和反向连接

正向连接 解释 通常指受害主机&#xff08;被控制端&#xff09;监听一个端口&#xff0c;由控制主机&#xff08;攻击端&#xff09;主动去连接受害主机的过程。 通俗的讲&#xff0c;正向连接就是&#xff1a;攻击机主动连接被攻击机 命令 Linux服务器主动控制windows服务…

Vue:内置组件:KeepAlive(缓存组件实例)

一、作用 <KeepAlive></KeepAlive>能缓存包裹的所有组件&#xff0c;保证组件在切换时维持组件状态。 默认情况下&#xff0c;一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时&#xff0c;会创建一个只带有初…

部署一个本地的ChatGPT(Ollama)

一 下载Ollama Ollama下载地址&#xff1a;https://ollama.com/download 下载完后 二 安装运行 双击下载好的OllamaSetup.exe开发 安装Ollama: 安装完成后&#xff0c;多了一个Ollama的菜单如下图 &#xff1a; Ollama安装好默认是配置开机运行&#xff0c;如果没有运行可以在…

mysql语句中想要查询某一月每一天日期的平均值 ,SSM框架如何实现

mysql语句中想要查询某一月每一天日期的平均值 为了查询某一月份每一天的平均值&#xff0c;你可以使用以下SQL查询语句。这里假设你有一个表格data_table&#xff0c;它有一个日期时间列date_column和一个需要计算平均值的数值列value_column。 SELECTDATE_FORMAT(date_colum…

MyBatis plus自动生成代码

1.pom文件配置 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version> </dependency> <dependency><groupId>com.baomidou</groupId>…

第五十九回 公孙胜芒砀山降魔 晁天王曾头市中箭-飞桨自然语言处理套件PaddleNLP初探

公孙胜献出八卦阵&#xff0c;宋江用八员大将守阵。项充李衮进入阵里&#xff0c;被抓住了。宋江说久闻大名&#xff0c;来梁山吧。两人说誓当效力到死&#xff0c;希望能先放我们两个回去把樊瑞带来一起。见到樊瑞后把宋江讲义气一说&#xff0c;樊瑞说不可逆天&#xff0c;于…

最短路径问题(Dijkstra/Floyd)

迪杰斯特拉算法 处理一个点到所有点最短路径问题 思路&#xff0c;动态规划思想&#xff0c;创建一个数组用于存储[1,n]到初始节点的距离&#xff0c;每次从中选择未确定为最短的点中取最短的那个&#xff0c;将他确定为最短的&#xff0c;因为就算是绕路也没有比他更短的&…

力扣112、113、101--树

112. 路径总和 题目描述&#xff1a; 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。 判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。 如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c…

轻松搞定找不到vcomp140.dll无法继续执行程序的5种方法

在我们日常使用计算机的过程中&#xff0c;频繁且不可避免地会遭遇到各种类型的错误提示信息&#xff0c;这些错误信息往往会在关键时刻阻碍我们的操作进程。其中&#xff0c;有一个颇为常见的错误提示值得我们关注&#xff0c;那就是“vcomp140.dll丢失”。这个错误提示涉及到…

【计算机视觉】二、图像形成——实验:2D变换编辑(Pygame)

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)2D变换编辑器0. 程序简介环境说明程序流程 1. 各种变换平移变换旋转变换等比缩放变换缩放变换镜像变换剪切变换 2. 按钮按钮类创建按钮 3. Pygam…

Python中sys.stdin.readline()与input()的区别

Python中sys.stdin.readline()与input()的区别 文章目录 Python中sys.stdin.readline()与input()的区别1.概念上的区别2.使用上的区别2.1异常处理2.2可重定向输入2.3迭代读取2.4灵活性2.5两种循环读取方式 1.概念上的区别 在 Python 中&#xff0c;input() 和 sys.stdin 是用于…

更安全的C gets()和str* 以及fgets和strcspn的用法

#include <stdio.h>int main() {char *str;gets(str);puts(str);return(0); }可以说全是错误 首先char *str没有指向一个分配好的地址&#xff0c;就直接读入&#xff0c;危险 ps: 怎么理解char *str "Hello World" 是将一个存储在一个只读的数据段中字符串常…

c语言:一元二次方程(可能有复根)

一元二次方程&#xff08;可能有复根&#xff09; 任务描述 输入三个系数&#xff0c;求一元二次方程的解,要求输出所有可能的情况,包括复根。 输入格式: 三个实数a,b,c 输出格式: 按输出样例格式输出&#xff0c;注意输出顺序。 输入示例1 1 6 9输出示例1 x1x2-3.00000…

AI预测-一文解析AI预测数据工程

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

《操作系统实践-基于Linux应用与内核编程》第10章-Linux综合应用

前言: 内容参考《操作系统实践-基于Linux应用与内核编程》一书的示例代码和教材内容&#xff0c;所做的读书笔记。本文记录再这里按照书中示例做一遍代码编程实践加深对操作系统的理解。 引用: 《操作系统实践-基于Linux应用与内核编程》 作者&#xff1a;房胜、李旭健、黄…

复现文件上传漏洞

一、搭建upload-labs环境 将下载好的upload-labs的压缩包&#xff0c;将此压缩包解压到WWW中&#xff0c;并将名称修改为upload&#xff0c;同时也要在upload文件中建立一个upload的文件。 然后在浏览器网址栏输入&#xff1a;127.0.0.1/upload进入靶场。 第一关 选择上传文件…