前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >热门提示词资源库——promptbase

热门提示词资源库——promptbase

作者头像
山行AI
发布2024-02-06 16:46:08
1360
发布2024-02-06 16:46:08
举报
文章被收录于专栏:山行AI山行AI

前言

在人工智能盛起的当下,AI正以非常迅猛的速度重塑着很多行业。可以预见的是2024将是AI原生应用开发元年,将会涌现出数不清的AI原生应用来重塑我们的工作和生活的方方面面。“大家都在一个起跑线上,这就是一个最好的时代。”面对台下的创业者,傅盛在 AGI Playground 大会上呼吁大家投身其中,“竞争肯定很激烈,大家达成共识也很快。所以我建议大家保持好奇,深入学习,把细节做好,相信每个人都有机会成功。”

对于提示词,傅盛做了重点说明,笔者简单整理如下:

其实我觉得 Prompt 是被忽略的一个点,因为它学起来容易,所以大家觉得这东西不深入。我就想起一个比喻,这就有点像郭德纲说的相声。所有人都觉得自己能说相声,但是其实要说好不容易。因为人人都会说话,好像也都会说相声,其实里面差别很大。

从原理上说,自然语言就是一个压缩。

比如说我现在讲了 200 字的内容,但是你要知道这 200 字在我脑海里是一个很庞大的行业知识,然后贡献出来、压缩过去,到你这再一解压,就不一样了。

所以我做人工智能,最大的一个痛苦总结下来就是,招的都是中国人,但互相听不懂对方说什么。做硬件的时候,说我们跟做软件的不一样;做人工智能的时候,说我们跟互联网不一样;互联网又说我们跟他们不一样。

我说你们都不一样,就我一个人站在上面,花了大量时间去 Prompt。

所以我们为什么每天有那么多会议?为什么要写成邮件,还要大家一起讨论一下?这就是因为自然语言的压缩性。所以这种提示是非常关键的。

然后行业有专属词,一个词在你这个行业是这个意思,在我们行业就是另一个意思。大家肯定都经历过。你觉得这是好的,我也觉得好的,等到一看,我们对好的理解不一样。

所以 Prompt 就是一个桥梁,不可或缺,非常重要,而且可以做得“厚”。

还有很多AI应用也都是通过prompt的方式搭建的,这里篇幅问题就不一一列举了,感兴趣的小伙伴可以在本公众号上翻阅一下。

下面为大家介绍的也是一款prompt项目:promptbase。

基准提示

promptbase 是一个不断发展的资源、最佳实践和示例脚本收集,旨在引导基于 GPT-4 等基础模型的最佳性能。目前,我们提供了展示 Medprompt 方法论[1] 的脚本,其中包含了我们如何将这些提示技术的收集(" Medprompt+ ")扩展到非医学领域的示例:

基准测试

GPT-4提示

GPT-4结果

Gemini Ultra结果

MMLU

Medprompt+

90.10%

90.04%

GSM8K

零判断

95.3%

94.4%

MATH

零判断

68.4%

53.2%

HumanEval

零判断

87.8%

74.4%

BIG-Bench-Hard

少判断 + CoT

89.0%

83.6%

DROP

零判断 + CoT

83.7%

82.4%

HellaSwag

10次判断

95.3%

87.8%

在不久的将来,promptbase 还将提供更多关于我们在提示工程背后采取的科学过程的案例研究和结构化面试。我们还将提供专业的深入研究,重点介绍强调提示工程过程的专用工具。敬请关注!

[2]Medprompt和提示的力量

《综合基础模型是否能超过特定目的的调整?在医学中的案例研究》(H. Nori, Y. T. Lee, S. Zhang, D. Carignan, R. Edgar, N. Fusi, N. King, J. Larson, Y. Li, W. Liu, R. Luo, S. M. McKinney, R. O. Ness, H. Poon, T. Qin, N. Usuyama, C. White, E. Horvitz 2023)

在最近的研究[3]中,我们展示了如何将几种提示策略组合成一种我们称之为Medprompt的方法,可以有效地引导GPT-4等综合模型达到顶级性能,即使与专门针对医学进行微调的模型相比。

Medprompt将三种不同的策略-包括动态少样本选择、自动生成的思维链和选择-洗牌集成-组合在一起,从GPT-4中引发专家级的性能。下面我们简要描述这些策略: [4]

动态少样本: 少样本学习——为基础模型提供几个任务和响应的示例,使模型能够迅速适应特定领域并学会遵循任务格式。为简化起见并提高效率,通常在提示特定任务时应用的少样本示例是固定的,即在测试示例之间不会改变。这就需要选择广泛代表性和与各种文本示例相关的少样本示例。满足这些要求的一种方法是由领域专家仔细手工制作示例。然而,即使如此,这种方法也不能保证精心策划的、固定的少样本示例能够适当地代表每个测试示例。然而,有了足够的可用数据,我们可以为不同的任务输入选择不同的少样本示例。我们将这种方法称为使用动态少样本示例。该方法利用一种机制根据其与待处理情况的相似度来确认示例。对于Medprompt,我们采取以下步骤来确定代表性的少样本示例:给定一个测试示例,我们使用k-NN聚类在嵌入空间中选择语义上相似的k个训练示例。具体来说,我们首先使用OpenAI的text-embedding-ada-002模型对候选示例进行嵌入表示以进行少样本学习。然后,对于每个测试问题x,我们从训练集中检索其嵌入空间中最近的k个邻居x1、x2、...、xk(根据text-embedding-ada-002的嵌入空间中的距离)。这些示例——在嵌入空间中与测试问题最相似的示例——最终被记录在提示中。•自动生成的思维链 (CoT): 思维链 (CoT) 使用自然语言语句,比如“我们一步一步地思考”,明确地鼓励模型生成一系列中间推理步骤。这种方法被发现显著提高基础模型进行复杂推理的能力。大多数思维链的方法都集中在使用专家手动构建少量示例和思维链来进行提示。与依赖人类专家不同,我们追求一种机制来自动创建思维链示例。我们发现,我们可以简单地要求 GPT-4 为训练示例生成思维链,通过适当的保护措施来降低产生错误推理链的风险。•多数投票集成:集成学习[5] 是指将多个算法的输出组合在一起,以产生比任何个别算法更好的预测性能。像 GPT-4 这样的前沿模型受益于对其输出进行集成。一种简单的技术是使用多种提示或者使用多种温度来生成单个提示,并报告集成成员中最频繁出现的答案。对于多项选择题,我们使用一种增加集成多样性的进一步技巧,称为 选择打乱,即在生成每个推理路径之前打乱答案选项的相对顺序。然后选择最一致的答案,即最不受选择打乱敏感的答案,从而增加了答案的鲁棒性。这三种技术的结合在Medprompt的医学挑战问题中实现了突破性的表现。这些技术的实现细节可以在此处找到:https://github.com/microsoft/promptbase/tree/main/src/promptbase/mmlu

[6]Medprompt+ | 扩展提示功能的能力

在这里,我们提供一些关于如何扩展medprompt提示框架以在MMLU(测量大规模多任务语言理解)基准测试中获得更强的域外表现的直观细节。MMLU是作为测试大型语言模型的一般知识和推理能力的一项测试而建立的。完整的MMLU基准测试包含了来自基础数学到美国历史、法律、计算机科学、工程学、医学等57个领域的成千上万个不同形式的挑战问题。

我们发现,将Medprompt应用到整个MMLU而没有进行任何修改,得分达到了89.1%。对于一个可以解决各种问题的单一策略来说,这个成绩不错!但是我们能不能进一步改进Medprompt呢?简单地将MedPrompt的规模扩大,可能会带来更多的好处。作为第一步,我们将集成调用的次数从五次增加到二十次。这将性能提升到了89.56%。

在进一步完善Medprompt的过程中,我们注意到MMLU的特定题目表现相对较差。MMLU包含了各种各样的问题类型,这取决于学科和具体的评估标准。考虑到问题的多样性,我们如何能够让GPT-4在MMLU上表现得更好?

我们的重点是基于以下观察,对投资组合方法进行扩展。我们观察到,有些主题领域往往提出需要经过多个推理步骤和可能需要草稿纸记住解决方案的多个部分的问题。而其他领域则寻求更直接从问题中得出的事实性答案。Medprompt采用了“思维链”(CoT)推理方法,与多步骤解决方法相 resonating。我们疑惑的是,复杂的Medprompt-classic方法在非常简单的问题上可能效果不佳,如果对事实性查询使用更简单的方法,系统可能会更好。

根据这个论证,我们发现通过向MedPrompt增加一个简单的两种方法的提示组合,可以提高在MMLU上的表现。在经典的MedPrompt中,我们增加了一组10个简单、直接的少量提示,直接征求答案而不需要思维的连贯性。然后我们请GPT-4帮助我们决定每个主题领域和问题的最佳策略。作为一个筛选调用,对于每个问题,我们首先问GPT-4:

代码语言:javascript
复制
# Question
{{ question }}

# Task
回答上面的问题是否需要草稿纸?
A. 是
B. 否

如果GPT-4认为问题需要草稿本,则集合中的思维链组件的贡献加倍。如果不需要,则将该贡献减半(并让集合更多地依赖直接的几次性提示)。在集合中动态利用适当的提示技术进一步提高了MMLU的性能,提升了0.5%。

我们注意到Medprompt+依赖于从GPT-4获取置信度分数(对数概率)。当前API接口未公开提供这些分数,但将在不久的将来为所有人启用。运行脚本

注意:这里托管的一些脚本仅供参考方法论,可能不能立即在公共API上执行。我们正在努力使管道在接下来的几天内更容易“开箱即用”,感谢您在此期间的耐心等待!

首先,克隆仓库并安装 promptbase 包:

代码语言:javascript
复制
cd srcpip install -e .

接下来,决定您想要运行的测试。您可以选择以下内容:

•bigbench•drop•gsm8k•humaneval•math•mmlu 在运行测试之前,您需要从原始来源(见下文)下载数据集,并将其放置在src/promptbase/datasets目录中。

在下载数据集并安装promptbase软件包之后,可以使用以下命令运行测试:

代码语言:javascript
复制
python -m promptbase dataset_name

例如:

代码语言:javascript
复制
python -m promptbase gsm8k

数据集链接

要运行评估,请下载这些数据集并将它们添加到/src/promptbase/datasets/目录中。

•MMLU: GitHub - hendrycks/test: 测量大规模多任务语言理解 | ICLR 2021[7]•HumanEval: openai_humaneval · Hugging Face上的数据集[8]•DROP: https://allenai.org/data/drop•GSM8K: GitHub - openai/grade-school-math[9]•MATH: hendrycks/competition_math · Hugging Face上的数据集[10]•Big-Bench-Hard: GitHub - suzgunmirac/BIG-Bench-Hard: 挑战BIG-Bench任务及思维链接的解决方案[11] 将该仓库内容放入名为BigBench的目录中,放在datasets目录中。其他资源:

Medprompt博客:提示的力量 - 微软研究[12]

Medprompt研究论文:[2311.16452] 通用基础模型能够超越特定目的的调优吗?医学案例研究[13]

Medprompt+:在边界上驾驭:扩展提示的力量 - 微软研究[14] 微软引入Prompt Engineering:Azure OpenAI服务 - Azure OpenAI | Microsoft Learn[15]

微软高级Prompt Engineering指南:使用Azure OpenAI的Prompt engineering技术 - Azure OpenAI服务 | Microsoft Learn[16]

本文由山行翻译整理自:https://github.com/microsoft/promptbase,如果感觉对您有帮助,请帮忙点赞、收藏、关注,谢谢~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山行AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • [2]Medprompt和提示的力量
      • [6]Medprompt+ | 扩展提示功能的能力
        • 数据集链接
        相关产品与服务
        腾讯云服务器利旧
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档