prompt工程策略(四:仅使用 LLM 分析数据集,不使用插件或代码)

原文:我是如何赢得GPT-4提示工程大赛冠军的
原文的原文: How I Won Singapore’s GPT-4 Prompt Engineering Competition


  • 插件:OpenAI 为 GPT-4 版本的 ChatGPT 提供的 Advanced Data Analysis(高级数据分析)插件 —— 高级(付费用户)可以使用。这让用户可以向 ChatGPT 上传数据集,然后直接在数据集上运行代码,实现精准的数据分析。

1 . LLM 不擅长的数据集分析类型

LLM 执行准确数学计算能力有限,这使得它们不适合需要对数据集进行精确定量分析的任务,比如:

  • 描述性统计数值计算:以定量方式总结数值列,使用的度量包括均值或方差。
  • 相关性分析: 获得列之间的精确相关系数。
  • 统计分析:比如假设测试,可以确定不同数据点分组之间是否存在统计学上的显著差异。
  • 机器学习:在数据集上执行预测性建模,可以使用的方法包括线性回归、梯度提升树或神经网络。

2. LLM 擅长的数据集分析类型

LLM 擅长识别模式趋势。这种能力源自 LLM 训练时使用的大量多样化数据,这让它们可以识别出可能并不显而易见的复杂模式。

  • 异常检测:基于一列或多列数值识别偏离正常模式常数据
  • 聚类:基于列之间相似特征对数据点进行分组
  • 跨列关系:识别列之间综合趋势
  • 文本分析(针对基于文本的列): 基于主题情绪执行分类
  • 趋势分析(针对具有时间属性的数据集):识别列之中时间演进的模式季节变化趋势

3. 仅使用 LLM 来分析 Kaggle 数据集

真实世界 Kaggle 数据集,是为客户个性分析任务收集整理的,其中的任务目标是对客户群进行细分,以更好地了解客户。

取用一个子集验证 LLM 的分析结果,其中包含 50 行最相关的列。之后,用于分析的数据集如下所示,其中每一行都代表一个客户,列则描述了客户信息:
在这里插入图片描述

假设你的任务:使用这个客户信息数据集来指导营销工作
这个任务分为两步:

  • 第一步,使用数据集生成有意义的细分客户群。
  • 第二步,针对每个细分群生成最好的营销策略。

现在,这个问题就成了模式发现(第一步)的实际业务问题,这也正是 LLM 擅长的能力。

下面针对这个任务草拟一个 prompt,这里用到了 4 种提示工程技术(后面还有更多!):

  1. 将复杂任务分解为简单步骤
  2. 索引每一步的中间输出
  3. 设置 LLM 的响应格式
  4. 指令数据集分离开
#System Prompt:
I want you to act as a data scientist to analyze datasets. Do not make up information that is not in the dataset. For each analysis I ask for, provide me with the exact and definitive answer and do not provide me with code or instructions to do the analysis on other platforms.

#Prompt:
# CONTEXT #
I sell wine. I have a dataset of information on my customers: [year of birth, marital status, income, number of children, days since last purchase, amount spent].
#############
# OBJECTIVE #
I want you use the dataset to cluster my customers into groups and then give me ideas on how to target my marketing efforts towards each group. Use this step-by-step process and do not use code:
1. CLUSTERS: Use the columns of the dataset to cluster the rows of the dataset, such that customers within the same cluster have similar column values while customers in different clusters have distinctly different column values. Ensure that each row only belongs to 1 cluster.
For each cluster found,
2. CLUSTER_INFORMATION: Describe the cluster in terms of the dataset columns.
3. CLUSTER_NAME: Interpret [CLUSTER_INFORMATION] to obtain a short name for the customer group in this cluster.
4. MARKETING_IDEAS: Generate ideas to market my product to this customer group.
5. RATIONALE: Explain why [MARKETING_IDEAS] is relevant and effective for this customer group.
#############
# STYLE #
Business analytics report
#############
# TONE #
Professional, technical
#############
# AUDIENCE #
My business partners. Convince them that your marketing strategy is well thought-out and fully backed by data.
#############
# RESPONSE: MARKDOWN REPORT #
<For each cluster in [CLUSTERS]>
— Customer Group: [CLUSTER_NAME]
— Profile: [CLUSTER_INFORMATION]
— Marketing Ideas: [MARKETING_IDEAS]
— Rationale: [RATIONALE]
<Annex>
Give a table of the list of row numbers belonging to each cluster, in order to back up your analysis. Use these table headers: [[CLUSTER_NAME], List of Rows].
#############
# START ANALYSIS #
If you understand, ask me for my dataset.

翻译:

#System Prompt:
我想让你扮演数据科学家的角色来分析数据集。不要编造数据集中没有的信息。对于我要求的每一项分析,都要向我提供准确而明确的答案,不要向我提供在其他平台上进行分析的代码或说明。

#Prompt
#上下文#
我卖葡萄酒。我有一个关于我的客户的信息数据集:[出生年份、婚姻状况、收入、子女数量、自上次购买以来的天数、消费金额]#############
#目标#
我希望您使用该数据集将我的客户分组,然后就如何将我的营销工作针对每个群体给出想法。使用此分步过程,不要使用代码:
1.CLUSTERS:使用数据集的列对数据集的行进行聚类,使得同一集群内的客户具有相似的列值,而不同集群中的客户具有明显不同的列值。确保每一行只属于一个集群。
对于找到的每个聚类,
2.CLUSTER_INFORMATION:根据数据集列来描述集群。
3.CLUSTER_NAME:解释[CLUSTER_INFORMATION]以获得该集群中客户组的短名称。
4.营销创意:产生创意,将我的产品推向这个客户群。
5.理由:解释为什么[MARKETING_IDEAS]与该客户群体相关且有效。
#############
#风格#
业务分析报告
#############
#语气#
专业、技术
#############
#受众#
我的商业伙伴。让他们相信你的营销策略是经过深思熟虑的,并且有充分的数据支持。
#############
#响应:降价报告#
<对于[CLUSTERS]>中的每个集群
--客户组:[CLUSTER_NAME]
--配置文件:[CLUSTER_INFORMATION]
--营销理念:[Marketing_Ideas]
--理由:[理由]
附件
给出属于每个集群的行号列表,以支持您的分析。使用以下表格标题:[[CLUSTER_NAME],行列表]#############
#启动分析#
如果你理解,请向我索取我的数据集。

GPT-4 的回复如下,我们继续以 CSV 字符串的形式向其传递数据集。
在这里插入图片描述
之后,GPT-4 以我们要求的 markdown 报告格式回复其分析结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 验证 LLM 的分析结果

为了简单起见将选取 LLM 生成的 2 个客户群来进行验证,即年轻家庭(Young Families)和高品位爱好者(Discerning Enthusiasts)。

4.1 年轻家庭
  • LLM 分析出的人群画像:1980 年后出生,已婚或同居,中低收入,频繁进行小额购买。
  • 被 LLM 聚类到这一分组的行:3, 4, 7, 10, 16, 20
  • 深入研究这些数据集,这些行的完整数据为:

在这里插入图片描述
其刚好对应于 LLM 识别出的人群画像。它甚至能在不事先预处理的情况下聚类空值行!

4.2 高品位爱好者
  • LLM 分析出的人群画像:年轻范围广,任意婚姻状况,高收入,不同的子女情况,购物支出高。
  • 被 LLM 聚类到这一分组的行:2, 5, 18, 29, 34, 36
  • 深入研究这些数据集,这些行的完整数据为:
    在这里插入图片描述
    这同样与 LLM 识别出的人群画像非常符合!
    这个例子彰显了 LLM 发现模式的能力,其能从多维度的数据集中解读提炼出有意义的见解,这能确保其分析深深植根于数据集的事实真相。

补充:对于 3 中的prompt分解关键性prompt技术

技术 1:将复杂任务分解为简单步骤

比如上面prompt中的 OBJECTIVE 模块

#############
# OBJECTIVE #
I want you use the dataset to cluster my customers into groups and then give me ideas on how to target my marketing efforts towards each group. Use this step-by-step process and do not use code:
1. CLUSTERS: Use the columns of the dataset to cluster the rows of the dataset, such that customers within the same cluster have similar column values while customers in different clusters have distinctly different column values. Ensure that each row only belongs to 1 cluster.
For each cluster found,
2. CLUSTER_INFORMATION: Describe the cluster in terms of the dataset columns.
3. CLUSTER_NAME: Interpret [CLUSTER_INFORMATION] to obtain a short name for the customer group in this cluster.
4. MARKETING_IDEAS: Generate ideas to market my product to this customer group.
5. RATIONALE: Explain why [MARKETING_IDEAS] is relevant and effective for this customer group.
#############

翻译:

#############
#目标#
我希望您使用该数据集将我的客户分组,然后就如何将我的营销工作针对每个群体给出想法。使用此分步过程,不要使用代码:
1.CLUSTERS:使用数据集的列对数据集的行进行聚类,使得同一集群内的客户具有相似的列值,而不同集群中的客户具有明显不同的列值。确保每一行只属于一个集群。
对于找到的每个聚类,
2.CLUSTER_INFORMATION:根据数据集列来描述集群。
3.CLUSTER_NAME:解释[CLUSTER_INFORMATION]以获得该集群中客户组的短名称。
4.营销创意:产生创意,将我的产品推向这个客户群。
5.理由:解释为什么[MARKETING_IDEAS]与该客户群体相关且有效。
#############

这里没直接简单地给 LLM 提供一个整体的任务描述,比如「将客户聚类成不同的客户群,然后针对每个客户群给出营销见解。」
通过使用逐步指示,LLM 更有可能给出正确结果。

技术 2:索引每一步的中间输出

在为 LLM 提供逐步过程时,给出了每一步的中间输出结果,其中用的大写变量名指代,即 CLUSTERSCLUSTER_INFORMATIONCLUSTER_NAMEMARKETING_IDEASRATIONALE

使用大写可以将这些变量名指令主体区分开。然后,可以通过加方括号的形式 [变量名] 索引这些中间输出。

技术 3:设置 LLM 的响应的格式

上面要求输出 markdown 报告格式,这能美化 LLM 的响应结果。在这里,中间输出的变量名再次派上用场,可以更方便地指定报告的结构。

# RESPONSE: MARKDOWN REPORT #
<For each cluster in [CLUSTERS]>
— Customer Group: [CLUSTER_NAME]
— Profile: [CLUSTER_INFORMATION]
— Marketing Ideas: [MARKETING_IDEAS]
— Rationale: [RATIONALE]
<Annex>
Give a table of the list of row numbers belonging to each cluster, in order to back up your analysis. Use these table headers: [[CLUSTER_NAME], List of Rows].

事实上,你之后也可以让 ChatGPT 提供可下载的报告文件,让其直接完成你的最终报告。
在这里插入图片描述

技术 4:将任务指令与数据集分离开

可以看到,我们从未在第一个 prompt 中向 LLM 提供数据集。相反,该 prompt 只给出了数据集分析的任务指令,最后再加上了以下内容:

# START ANALYSIS #
If you understand, ask me for my dataset.

然后,ChatGPT 答复它理解了,然后我们再在下一个 prompt 中以 CSV 字符串的形式将数据集传递给它。
在这里插入图片描述

4.1 但为什么要将任务指令与数据集分离开?

这样做有助于 LLM 清晰理解每一部分降低遗漏信息的可能性;尤其是当任务更复杂时,例如例子中这个指令较长的任务。你可能经历过 LLM「意外遗忘」长 prompt 中某个特定指令的情况。
举个例子:如果你让 LLM 给出 100 词的响应,但其反馈的结果却长得多。而如果让 LLM 先接收指令,然后再接收指令处理的数据集,就能让 LLM 先消化其应当做的事情,之后再基于后面提供的数据集来执行它。

请注意,这种指令与数据集分离的操作仅适用于有对话记忆的聊天式 LLM,不适用于没有对话记忆的任务完成式 LLM。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百望云钉钉:重塑财务智能化管理,助力企业实现数字化飞跃

近年来&#xff0c;数字技术正在深刻改变着企业生产方式和组织模式&#xff0c;企业面连着业务流程再造、经营模式创新等一系列建设挑战。 其中&#xff0c;财务部门从价值守护走向价值创造的过程中&#xff0c;展现出对企业经营与业务发展的巨大影响力。叠加金税四期税务改革&…

【智能优化算法】雁群优化算法(Wild Geese Algorithm,WGA)

雁群优化算法(Wild Geese Algorithm,WGA)是期刊“Array”的2021年智能优化算法 01.引言 雁群优化算法(Wild Geese Algorithm,WGA)用于大规模全局优化&#xff0c;并利用IEEE CEC 2008和CEC 2010高维D100、500、1000特别会议的大规模测试函数验证了该算法的效率和性能。WGA的灵…

内网渗透—域信息收集防火墙策略同步不出网隧道上线

1、前言 最近在学域渗透方面的知识&#xff0c;这里就记录一下。主要涉及到什么是域&#xff0c;域的信息收集&#xff0c;防火墙的策略同步&#xff0c;以及当主机出网的协议被封杀时如何利用隧道上线。 2、什么是域 域是一个有安全边界的计算机集合&#xff0c;在域内的计…

干部选拔任用的重要性与实践策略

在当今的组织管理中&#xff0c;干部选拔任用是一项至关重要的工作。它不仅关系到组织的稳定与发展&#xff0c;更直接影响到组织的效能和竞争力。因此&#xff0c;科学、公正、有效的干部选拔任用机制对于组织的长期健康发展具有不可忽视的意义。 一、干部选拔任用的重要性 …

华为涅槃,余承东重生

最近一段时间&#xff0c;余承东甚为低调。最为明显的是&#xff0c;“遥遥领先”已经听不到了&#xff0c;“余大嘴”口中的措辞越来越克制。 今后手机相关的发布会&#xff0c;或许不再看到余承东的身影。 5月10日&#xff0c;余承东的职位正式更新&#xff0c;从终端BG CE…

xFormers

文章目录 一、关于 xFormers二、安装 xFormers三、基准测试&#xff08;可选&#xff09;测试安装 四、使用 xFormers1、Transformers 关键概念2、Repo 地图注意力机制Feed forward mechanismsPositional embeddingResidual pathsInitializations 3、主要特征4、安装故障排除 一…

POETIZE个人博客系统源码 | 最美博客

简介&#xff1a; POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。 网站分两个模块&#xff1a; 博客系统&#xff1a;具有文章&#xff0c;表白墙&#xff0c;图片墙&…

【UnityShader入门精要学习笔记】第十二章 屏幕后处理效果

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 建立一个基…

元宇宙,可能是未来经济新趋势,但不是文明的跃升

为什么说元宇宙是未来的一个经济趋势&#xff0c;甚至是一个即将来临的风口&#xff0c;说到元宇宙&#xff0c;相信大家都听说过&#xff0c;但是真正了解的人还是占少部分的。其实概率很容易理解&#xff0c;我们可以把他看成是一个虚拟世界&#xff0c;一个平行空间&#xf…

菲律宾签证照片尺寸要求,用手机生成

菲律宾签证照片尺寸要求如下图所示&#xff0c;可以用手机在微信搜索随时照小程序&#xff0c;快速生成哦。

做私域,该如何从公域向私域引流?

说到私域运营&#xff0c;很多人首先就会想到&#xff1a;私域流量。企业做私域&#xff0c;流量从哪来&#xff1f;该怎样去引流&#xff1f;又该如何保障私域流量的质量等一系列问题&#xff0c;都需要企业一一解决。所以&#xff0c;今天&#xff0c;我们就来探讨一下&#…

产品经理资料包干货

1.《产品汪》免费电子书 2016年我面试了差不多有200多位产品求职者&#xff0c;其中不乏之前做厨师编剧这些岗位的人。在这个过程中我意识到大众或许对产品经理这个岗位存在一些认知和理解上的误差&#xff0c;于是我就想着写一本产品经理相关的书。 关于本书的更多信息可查看…

dvwa靶场 Content Security Policy (CSP) Bypass(CSP绕过)全难度教程(附代码分析)

前置知识 Content Security Policy&#xff08;内容安全策略&#xff09;&#xff0c;用于定义脚本和其他资源从何处加载或者执行&#xff0c;总结的来说就时白名单。会一定程度的缓解xss脚本问题&#xff0c;也可以自己设定规则&#xff0c;管理网站允许加载的内容。 CSP 以…

简单记录下:Navicat 导出表结构至 Excel

首先我们需要通过sql语句查询出相关的表结构的结构 SELECT COLUMN_NAME AS 字段名称,COLUMN_TYPE AS 字段类型,IF(IS_NULLABLENO,否,是) AS 是否必填,COLUMN_COMMENT AS 注释FROM INFORMATION_SCHEMA.COLUMNSWHERE table_schema bs-gdsAND table_name sys_menu;查询的结构如下…

Linux下Code_Aster源码编译安装及使用

目录 软件介绍 基本依赖 其它依赖 一、源码下载 二、解压缩 三、编译安装 四、算例运行 软件介绍 Code_aster为法国电力集团&#xff08;EDF&#xff09;自1989年起开始研发的通用结构和热力耦合有限元仿真软件。Code_aster可用于力学、热学和声学等物理现象的仿真分析&…

LQ杯当时的WP

RC4 32位程序用IDA打开看看 进行反汇编 RC4提示&#xff0c;就是一个加密 在sub_401005函数中找到输出的变量&#xff0c;并且立下断点 动调 Packet 字符串搜索flag 看到是给192.168.11.128发送了cat flag的命令 看到它回传 Base64加密了 解一下密码就可以 CC 密码这…

Windows snmp++获取本地主机信息

编译snmp的包 调用snmp.lib实现信息获取_哔哩哔哩_bilibili 代码&#xff1a; #include <iostream> #include <libsnmp.h> #include <vector> #include <fstream> #include <string> #include "snmp_pp/snmp_pp.h" //#define _NO_L…

Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪

概述 本文使用最简单和快速的方式基于Gin框架搭建一个微服务的网关调用微服务的场景网关作为客户端基于RPC调用某一服务端的服务并接入熔断和限流以及链路追踪具体场景&#xff1a;通过网关API查询购物车里的数据在最后&#xff0c;会贴上网关和购物车服务的代码仓库 服务端搭…

端口号查询进程PID

情况1&#xff1a;由于 idea 突然闪退&#xff0c;导致正在 debug 的 Java 进程没结束掉&#xff0c;端口还在占用&#xff0c;重新 debug 不了&#xff0c;所以需要到任务管理器把进程结束掉 但问题是如果当任务管理器进程同时有多个 Java 进程在运行&#xff08;而且名字一样…

CSS表格特殊样式

列组样式 使用colgroup与col标签配合可以定义列祖样式&#xff1a;例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>table,tr,th,td{border: 1px solid #000;}table{border-collapse: coll…