Prompt本质解密及Evaluation实战(一)

news2025/1/13 15:56:17

一、基于evaluation的prompt使用解析

基于大模型的应用评估与传统应用程序的评估不太一样,特别是基于GPT系列或者生成式语言模型,因为模型生成的内容与传统意义上所说的内容或者标签不太一样。

       以下是借用了ChatGPT官方的evaluation指南提出的对结果的具体的评估步骤:

       Compare the factual content of the submitted answer with the context. \

I      gnore any differences in style, grammar, or punctuation.

Answer the following questions:

    - Is the Assistant response based only on the context provided? (Y or N)

    - Does the answer include information that is not provided in the context? (Y or N)

    - Is there any disagreement between the response and the context? (Y or N)

    - Count how many questions the user asked. (output a number)

    - For each question that the user asked, is there a corresponding answer to it?

      Question 1: (Y or N)

      Question 2: (Y or N)

      ...

      Question N: (Y or N)

- Of the number of questions asked, how many of these questions were addressed by the answer? (output a number)

所谓的factual content是指显性表达出来的(有明确文字说明的)内容,另外需要忽略掉写作风格,语法,标点符号等带来的差异,因为大多数情况下不同的用户表达同样的意思会有差异,这对于比较模型生成结果和你指定的正确答案来说很重要,否则会失去语言的灵活性。” Answer the following questions”部分说明了评估必须经过的步骤,另外也说明了不能简单地说“Y”或者“N”,而是需要给出一些中间的reasoning process或者说intermediate steps,这样的设计很具有技巧,考验你对业务的理解能力,包括对数据的理解能力以及对模型的理解能力等等。

在下面这个评估方法中,有用户的信息,上下文的信息以及对话机器人返回的信息,其中system_message如下:

You are an assistant that evaluates how well the customer service agent \

answers a user question by looking at the context that the customer service \

agent is using to generate its response.

一般来说,系统级别的信息就是上下文(context),从模型的角度来说,所有输入的东西都是在context的支配下工作的。

上面这个方法基于传入的system_message和user_message,调用方法get_completion_from_messages获得返回的response:

调用方法并打印response如下:

二、关于prompt内部工作机制

       训练GPT系列大模型时,一个基本的能力是预测下一个词(word),那模型为什么能根据我们提供的prompt做出响应?譬如GPT-3,它是根据前面的内容来产出下一个word,前面的内容你都可以认为是prompt。

这个问题的本质是GPT-3/GPT-4是如何训练的,在已有的一个基础的大模型(base LLM)的前提条件下,会经历以下几个核心步骤:

-以一问一答的方式提供样例数据给这个base LLM

-由data contractor人工检查LLM的输出(即human-rating操作),看什么是有用的,什么是没用的

-使用RLHF来调整模型对产生更高rating的输出增加概率

经过上述步骤后会导致我们输入一个prompt(譬如上面说到的evalution使用的看起来有点复杂的prompt)后,会产生相应的结果。

用户在不断地与对话机器人进行交互时,对话机器人在产出结果时至少要考虑两个层面的东西:一是用户输入的内容,二是系统的设定。

Prompt的使用形式有如下几种:

-问答的形式,给一个输入,返回一个输出

-Chain of Thought(CoT)

-Self Consistency with CoT(CoT-SC)

-Tree of Thoughts(ToT),根据用户的输入产生一个树状结构,每一层表示针对上面的节点的prompt或者step产生的结果,譬如第一层针对输入可能会产生不同的结果,然后层层递推,其中存在一个evaluation system,就是判断哪个路径是最相关或者说产出的结果最能够完成用户指定的问题或者任务。

三、从一篇论文来剖析prompt

我们需要思考在一个prompt中,有哪些因素能够影响到一个prompt的功能,另外也要考虑如何使一个prompt最小化,因为这涉及到tokens的使用数量,另外如果信息太多也会干扰到模型对信息的“理解”(这里的“理解”指的是一种形式上的理解,本质上来说模型是无法像人类一样真正理解我们提供的信息的)。

下面这篇论文很重要,提出了几个核心的论述:

-在输入的一个prompt中,“factual patterns”的存在对于CoT的成功来说并不重要

-对于模型来说,中间的步骤(intermediate steps)会作为灯塔信号,让模型参照用户输入中的符号(symbols)构成的patterns来产出结果,模型表现出的仅仅是一种形式上的推理论证

-模型在训练时会获得commonsense knowledge and meaning,从而帮助模型在用户输入的文本形式的prompt中找到patterns

-通过试验分析揭示了在text和patterns之间存在类似生物间相互依赖的一种关系,模型会从文本中基于常识获取patterns,patterns反过来会强化模型对任务进行形式上的理解和指导结果信息的生成

-你能够尽量去裁剪prompt,只留下关键的信息,基于常识依旧能够表达patterns,这些patterns能够指导模型“理解”prompt指定的任务来生成结果

-prompt中的符号的具体形式(exact type of symbols)不影响模型的表现

-CoT帮助模型以prompt为例来学习其中的patterns,然后为任务生成正确的tokens

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

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

相关文章

Http2.0协议深入解析

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

ChatGPT、Google Bard、Claude2、新BING哪一款人工智能聊天机器人适合自己

人工智能聊天机器人正在提高数无数专业人士的工作效率。下面我们就来看看目前最流行的几款强大的人工智能工具,以及它们具体如何帮助到你。 今年7月AI圈最大的动静之一便是AI初创公司Anthropic发布了其AI聊天机器人Claude最新版本——Claude2。该聊天机器人对标Open…

AP9235 dc-dc升压恒流电源驱动IC 2000ma SOT23-6

概述 AP9235B 系列是一款固定振荡频率、恒流输出的升压型DC/DC转换器,非常适合于移动电话、PDA、数码相机等电子产品的背光驱动。输出电压可达30V ,3.2V输入电压可以驱动六个串联LED, 2.5V输入电压可以驱动两路并联LED(每路串联…

机器学习简介

文章目录 引言1. 从找规律说起2. 机器学习应用2.1 有监督学习2.2 无监督学习2.2.1 聚类2.2.2 降维 3. 机器学习一般流程4. 机器学习常用概念5. 深度学习简介5.1 引入 -- 猜数字5.2 深度学习5.2.1 隐含层/中间层5.2.2 随机初始化5.2.3 损失函数5.2.4 导数与梯度5.2.5 梯度下降5.…

【linux kernel】linux内核中的debugfs

文章目录 一、👉相关文件二、👉简介三、👉debugfs的API1、在debugfs中创建目录2、在debugfs目录中创建文件3、创建一个具有初始大小的文件4、创建包含单个整数值(十进制)的文件5、创建包含单个十六进制值得文件&#x…

AI Agent在家务场景下的AgentBench基准测试

近日,来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计了一个测试工具——AgentBench,用于评估LLM在多维度开放式生成环境中的推理能力和决策能力。研究者对25个LLM进行了全面评估,包括基于API的商业模型和开源模型。 他们发现,顶级商业LLM在复杂环境中表现出…

文件内容搜索工具 - Python实现

在本篇文章中,我们将介绍如何使用 wxPython 库创建一个简单的文件搜索工具。这个工具允许用户选择一个文件夹,并在该文件夹中的所有 .py 文件中查找指定的文字,并显示匹配的位置。 C:\pythoncode\blog\searchwordinpyfile.py 代码实现 我们首…

Apipost数据模型功能详解

在API设计和开发过程中,存在许多瓶颈,其中一个主要问题是在遇到相似数据结构的API时会产生重复性较多的工作:在每个API中都编写相同的数据,这不仅浪费时间和精力,还容易出错并降低API的可维护性。 为了解决这个问题&a…

Android SDK 上手指南||第四章 应用程序结构

第四章 应用程序结构 本教程将主要以探索与了解为主要目的,但后续的系列文章则将进一步带大家深入学习如何创建用户界面、响应用户交互操作以及利用Java编排应用逻辑。我们将专注于大家刚刚开始接触Android开发时最常遇到的项目内容,但也会同时涉及一部…

ICCV2023 | 基于动作敏感性学习的时序动作定位

淘天集团-内容理解算法团队与浙江大学杨易教授团队合作的关于视频时序定位的论文被ICCV2023录取。 本文在业界首次将视频帧级别的细粒度信息引入至时序动作定位领域(Temporal Action Localization,TAL),对于时序动作定位任务&…

iFlyCode 智能编程助手:提升编码效率的人工智能工具

一,介绍 iFlyCode 智能编程助是一款基于人工智能的编程辅助工具,旨在提高开发者的编码效率和准确性。它能够与多种编程语言和集成开发环境(IDE)配合使用,为开发者提供代码建议、自动完成和重构等功能。 以下是 iFlyC…

ethers.js1:ethers的安装和使用

ethers官方文档:Documentation 1、ethers简介: ethers.js是一个完整而紧凑的开源库,用于与以太坊区块链及其生态系统进行交互。如果你要写Dapp的前端,你就需要用到ethers.js。 与更早出现的web3.js相比,它有以下优点…

2023-8-23 滑动窗口

题目链接&#xff1a;滑动窗口 #include <iostream>using namespace std;const int N 1000010;int n, k; int a[N], q[N];int main() {scanf("%d%d", &n, &k);for(int i 0; i < n; i) scanf("%d", &a[i]);int hh 0, tt -1;for(…

Java注解和自定义注解以及应用。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;微信小程序、页面跳转、移动端、前端☀️每日 一言&#xff1a;追求潮流&#xff0c;其本身一点都不潮流&#xff01; 一、前言 使用 Java 注解&#xff08;Annotations&#xff09;可以在代码中…

读书笔记-10张不同的思维导图

用思维导图做的读书笔记 当我们阅读一本书时&#xff0c;需要整理和记录书中的关键信息和观点&#xff0c;如果用传统的笔记方法&#xff0c;不仅会信息凌乱&#xff0c;而且效率低下。思维导图可以帮助我们更好地理解和组织一本书中所读内容。 一、我们先来了解一下什么是思…

Stable Diffusion 系列教程 | 文生图 - 提示词

目录 1.提示词 基本的规则 2.提示词分类 2.1内容性提示词 2.2 画风艺术派提示词 2.3 画幅视角 2.4画质提示词 3 反向提示词 3.1 内容性反向提示词 3.2 画质性反向提示词 4 实例分析 5 权重 5.1 方法一 5.2 方法二 6.参数 7. 学习and 技巧 7.1 辅助写提示词的网…

c++ 虚函数类对象模型

一、复杂的菱形继承及菱形虚拟继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承。 多继承&#xff1a;一个子类有两个或以上直接父类时称这个继承关系为多继承。 菱形继承&#xff1a;菱形继承是多继承的一种特殊情况。 菱形继承的问题&#xff1a;从…

从零开始学习YOLOv5 保姆级教程

一、前言 YOLO系列是one-stage且是基于深度学习的回归方法&#xff0c;而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。 YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度与精度都得…

【C++】vector类的模拟实现(SGI版本)

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、vector类的模拟实现1.1 vect…

SpringCloud Alibaba实战和源码(7)Skywalking

什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是&#xff1a;支持多种插件&#xff0c;UI功能较强&#xff0c;支持非侵入式埋点。目前使用厂商最多&#xff0c;版本更新较…