探索提示工程的多彩世界 [译]

背景介绍

提示工程是一门让我们能够在不改变模型本身的情况下指导大语言模型(LLM)行为的技术。随着越来越多为不同场景设计的提示的出现(比如,你可以参考 @dair_ai 提供的 提示工程指南 和 Lilian Weng 写的 这篇深入浅出的综述),我们越来越需要一套系统来帮助我们管理这些提示,以便更容易地找到、共享和优化它们。为此,我们在一个月前推出了 LangChain Hub,一个集浏览社区提示和管理个人提示于一体的平台。接下来,我们将带你了解自从该平台上线以来,我们观察到的提示工程领域的几个主要趋势,并分享一些我们认为特别有趣的案例。

LangChain Hub 中的一些热门提示分类

推理思考

链式思考这种方法鼓励大语言模型(LLM)展开它的思维过程,通过简单的声明,比如“让我们一步一步来分析”,来展示它的工作过程。这种方法因为能显著提升许多推理任务的表现,并且实施起来相对简单,因此赢得了广泛的认可。当然,还有一些更为复杂的方法,如思考树,也值得我们考虑,不过我们需要权衡它们带来的好处和所需付出的代价(比如计算资源)。

近期,Deepmind 利用 LLM 对提示语进行了优化,并最终找到了一种表现最佳的优化提示:“深呼吸,一步一步来解决这个问题”。这为将来人类指令和 LLM 优化后的提示之间的翻译模块提供了一些有趣的可能性。

这是一个关于不同提示指令下测试准确性的统计图(数据来源:这里)。

如图所示,推理提示可以作为简单的指令添加到许多任务中,对于智能代理来说尤其重要。比如,ReAct 代理将工具使用和推理结合在一起,交替进行。代理的提示可以用不同的方式来编码多步推理过程,目标通常是根据观察结果来更新行动计划。关于代理设计和提示方法的更多细节,可以参考 Lilian Weng 的深入文章

示例链接

写作技巧提升

在大语言模型 (LLMs) 展现出的惊人创造力面前,人们普遍对提升写作技巧的建议产生了浓厚的兴趣。@mattshumer_ 推出的受欢迎的 GPT4 写作提示,为我们提供了提高文章清晰度和个性化定制文本风格的有效途径。此外,运用 LLM 进行语言翻译,同样是一个提升写作的绝佳应用场景。

一些实用的例子包括:

同时,我们还看到了越来越多用于创作各种内容的提示,比如入职欢迎邮件、博客文章、推特串、以及教育领域的学习材料等。

这里有一些精选的实例:

SQL 使用

企业数据经常储存在 SQL 数据库里,这就让利用大语言模型 (LLM) 作为操作 SQL 的自然语言界面变得非常有吸引力。你可以参考我们的博客文章获取更多信息。根据一些研究论文的报告,LLM 能够根据表的一些具体信息来生成 SQL 代码,这包括为每个表编写一个

CREATE TABLE

的描述,并在

SELECT

语句中给出三个示例行。LangChain 提供了许多工具来查询 SQL 数据库,详情可以查看我们的使用案例指南使用手册

示例链接

头脑风暴应用

很多人已经通过和大语言模型 (LLM) 的互动中获得了启发或娱乐。LLM 在头脑风暴活动中展现了极大的潜力。一个常用的技巧是创建多个用户角色,共同推进一个想法,就像 @mattshumer_ 展示的商业计划创意那样。这个方法有着广泛的应用空间。举个例子,BIDARA(生物启发式设计与研究助手)就是一个基于 GPT-4 的聊天机器人,它被设计来协助科学家和工程师从生物策略中获得灵感,以创新设计和技术。

示例链接

文本提取

大语言模型(LLM)能够成为提取特定格式文本的利器,这个过程通常得到了 函数调用 等技术的辅助。这是一个研究颇为深入的领域,并且已经开发出许多支持该领域的框架,如 @jxnlco 所创的 Instructor(详见他们关于构建有效提示的 指导手册)。我们还见证了为了特殊文本提取任务而设计的各种提示,例如知识图谱三元组的提取任务,相关工具如 Instagraph文本到图谱 工具所示。

来自 @yoheinakajima 的知识图谱三元组可视化展示

示例链接

检索增强生成(RAG)

RAG 是 LLM 应用中的热门技术,它通过提示将相关上下文信息传递给语言模型。RAG 在进行事实记忆提取方面表现出了巨大的潜力,它将 LLM 的推理能力与外部数据源的丰富内容结合在了一起,特别是在处理企业数据时,其效果更是 卓越

upload in progress, 0
upload in progress, 0

RAG 技术概览

示例链接

指令优化的大语言模型(LLMs)

在过去的一年里,开放源代码的指令优化大语言模型(LLMs)领域呈现爆炸性增长。随之而来的是一系列受欢迎的 LLMs,它们各自都有独特的指令提示,例如可以查看 LLaMA2Mistral 的使用指南。像检索增强生成(RAG)这类热门任务能够通过使用针对特定 LLM 设计的提示来提升性能。

这是一个按照基础模型的大小和指令的数量来组织的开源 LLMs 的概览
这是一个按照基础模型的大小和指令的数量来组织的开源 LLMs 的概览

图 1:这是一个按照基础模型的大小和指令的数量来组织的开源 LLMs 的概览

示例链接

利用大语言模型进行评分

运用大语言模型(LLM)作为评分工具是个创新且实用的想法。这一想法在 OpenAI 的示例教程 和各种 开源项目 中得到了广泛的展示和应用。其核心理念是利用大语言模型的判断能力,将一个回答与标准答案或参考材料进行比较,从而进行打分或排序。在 LangSmith 这个平台上,已经有大量的工作致力于提供评价和反馈支持

示例链接

生成合成数据

对大语言模型(LLM)进行微调是指导其行为的主要方法之一(另一个方法是 RAG),但获取用于微调的训练数据却是一项挑战。目前,已经有不少研究工作在探索如何利用大语言模型生成合成训练数据集。

示例链接

引导词的优化运用

来自 Deepmind 的研究表明,大语言模型(LLM)能够对引导词进行优化,这为在人类指令和经过 LLM 优化的引导词之间建立 翻译模块 提供了极大的可能性。我们已经见识到了很多有趣且富有创造力的引导词示例,其中 Midjourney 就是一个绝佳的例子,它通过巧妙运用引导词和参数设置,展现了惊人的创造潜力。比如对于这样一个通俗的输入想法:“弗雷迪·摩克瑞(Freddie Mercury)在 2023 年旧金山骄傲游行上的高度逼真表演”,它能够生成一系列的 N 个引导词,为这个想法增色添彩,如下例所示:

弗雷迪·摩克瑞在旧金山骄傲游行舞台上表现得如电般激动人心,身着熠熠生辉的金色服装,手中拿着他标志性的麦克风架,将 Caravaggio 风格的超高写实风格演绎得淋漓尽致,场景生动活泼 --ar 16:9 --q 2)

以上引导词生成的 Midjourney 作品

示例链接

理解与生成代码

代码分析已经成为 LLM 应用最广泛的领域之一,这一点从 GitHub co-pilotCode Interpreter 的流行,以及诸如 Code LLaMA 这样经过特殊调整的 LLM 中都可以看出。以下是一些与代码分析和生成相关的引导词示例:

示例链接

简介

通过这篇文章,我们了解到使用大语言模型(LLM)进行内容总结是一个非常实用的应用场景。例如,Anthropic Claude2 这种能处理长篇文章的 LLM,它能够一次性直接总结超过 70 页的文档。此外,类似密度链这样的高级提示技巧也能提供帮助,它们能生成既紧凑又符合人类阅读习惯的文本摘要。

实例链接

另外,这种总结技术还能广泛应用于各种内容,比如聊天对话(例如,将聊天内容压缩后作为上下文输入到聊天 LLM 中)或者是特定领域的数据,比如财务报表的总结。

实例链接

结语

你可以通过点击“尝试一下”按钮,亲自测试这些示例:

这会打开一个实验室环境,让你可以使用各种不同的大语言模型来修改和调试提示语,而且其中许多是免费提供的: