Press "Enter" to skip to content

优化提示堆栈

优化提示堆栈 四海 第1张

编辑注:迈克.泰勒(Mike Taylor)将于今年10月30日至11月2日期间担任ODSC West演讲嘉宾。一定要参加他的演讲,主题是“通过GPT-4和Langchain进行提示优化”!

普通人使用人工智能和提示工程师之间的区别在于测试。大多数人运行一条提示2到3次,找到一个足够好的结果即可。但是,提示工程师会运行相同的提示数百次,并通过与其他变体的A/B测试来确定它满足关键评估标准的频率、是否产生了大量成本或提供了不良反应。

The Prompt Optimization Stack

我将提示工程定义为“发现可靠产生有用或期望结果的提示的过程”,而可靠性是其中难的一部分。在某些任务上,人工智能几乎可以复制人类水平的智能,但不幸的是,可靠性的缺失似乎是智能增长的必然现象。

生成型人工智能模型的回应具有我们在计算机编程中从未见过的随机性。你可以连续运行同样的提示100次,然后在第101次尝试时它给出了种族主义的回应,编造了某件事情,或者完全未能完成任务。随着模型越来越大,对GPU的需求也增加,优化提示还可以帮助你节约大量资金。

记录这些边界案例、删除不必要的标记以及测试如何改进提示是令人兴奋的工作,尤其是在这个领域进展如此迅速的情况下。尽管创新的速度惊人,但我发现自己随着时间流逝越来越倾向于使用一些标准工具,这些工具帮助我进行A/B测试提示并扩大规模,以了解它们在何时何地出现问题。

LangChain

The Prompt Optimization Stack

许多人工智能工程师对开源框架LangChain有着一种爱恨交织的关系,我知道一些人在最初将其从产品中剥离出来,但后来决定将其重新引入。对于一个行业而言,拥有标准化的组件是重要的,即使这个标准有时并不完美。

异步调用

这是我一开始并没有意识到价值的东西,但现在我一直在使用。如果你按顺序(一个接一个)运行100个提示,则可能需要超过10分钟的时间(如果你被限制了速率,则需要更长的时间)。我并没有指望通过异步方式(同时运行所有提示)会有多大加速效果,但实际上可以快6倍!OpenAI可以同时处理多个调用,即使每个单独的调用需要一些时间。

活动 – ODSC West 2023

线下和虚拟会议

10月30日至11月2日

加入我们,深入探索最新的数据科学和人工智能趋势、工具和技术,从语言模型到数据分析,从机器学习到负责任的人工智能。

重试逻辑

LangChain的内置重试逻辑是我特别喜欢的功能。在时间就是金钱的行业中,这个功能非常宝贵。如果一个提示失败或产生了不期望的结果,LangChain会自动运行重新运行的过程,消除了手动干预的需求。当你运行数百个调用时,特别是在异步调用时,这是绝对必要的。特别是考虑到这项服务存在的可靠性问题,如果没有这个功能,这是完全无法工作的。

标准约定

LangChain遵循行业标准的编码实践。这听起来可能是理所当然的事情,但你会惊讶地发现这在人工智能开发领域常常被忽视。该库使用标准约定使其更容易与其他工具和服务集成,阅读其文档就像是获得了一项提示工程学位。作为一个初出茅庐的提示工程师,这是你可以学到的少数几个人人皆知的可转移技能。作为雇主,采用一种流行框架比培训新员工使用定制设置更具优势。

抽象组件

LangChain的最后一项特色是其能够抽象化您的提示工程任务的组件。这意味着您可以在不同的项目中重用代码块,简化开发过程并提高效率。就像拥有一个乐高积木套装,每个积木都是兼容和有目的的。将您使用的模型抽象化,并将您的提示放入标准模板中,通常是进行大规模测试的第一步。在最初几次使用时,这可能会感到费力且过度,但请相信,它会逐渐适应您。

LangSmith

优化提示堆栈 四海 第4张

毕加索曾说过,优秀的艺术家们在一起时不谈论风格、趋势和意义,而是谈论哪里可以买到好的松香。对于优秀的提示工程师来说,讨论的话题是日志记录,这就是为什么 LangChain(beta版本免费)的第一款商业产品是一个日志记录和评估工具,这一点并不让人惊讶。

日志记录

LangSmith 提供详细的日志记录,不仅捕捉输出,还记录了有价值的元数据。这使您能够分析成功和失败的情况,并得出帮助优化提示的见解。这就像您的AI项目的飞行数据记录器,一切都被记录下来,不留任何模糊的空间。

调试

由于您在日志中拥有所有信息,它可以作为一个强大的调试工具,让您深入分析提示响应的各个层面。这个功能对于理解每个输出背后的原因和方式至关重要,帮助您优化未来的迭代。基于这个原因,我经常一直使用它,因为如果我看到一些奇怪的情况发生,我可以在这里查看,而无需运行无休止的打印语句。

测试结果

一个很酷的功能是能够整合测试结果和评估指标。这些不仅仅是通过或不通过的成绩,它们提供了对每个提示的性能指标的深入分析,包括自动化评估指标。这与LangChain(顾名思义)高度集成,因此您也可以在此处使用所有标准的LangChain评估器。

微调数据

然后,LangSmith允许您将经过评估的提示数据导出到有用的格式,以进行定制模型的微调,当您准备迁移到OpenAI之外时。您可以根据自己的具体需求训练AI模型,确保提示对您的项目目标精确到位,并以较低的成本实现。

GPT-4

优化提示堆栈 四海 第5张

来自OpenAI的最新模型GPT-4通常是我在处理新任务时首先选择的模型。我最近倾向于更多地使用Playground,因为我的ChatGPT中充斥着自定义指令,我想获取一个没有偏见的视角。

最佳质量

尽管LangChain允许您抽象出正在使用的模型,但有一个模型在所有其他模型之上。毫无疑问,GPT-4是自然语言生成的金标准。无论您是想起草电子邮件,编写代码,还是策划下一轮营销活动,GPT-4都能提供令人难以置信的高质量输出。我见过它创作的响应如此连贯和上下文相关,以至于几乎可以与人工书写的文字媲美。

延迟较高

现在,让我们来看看其中的一个问题:延迟。GPT-4的复杂性带来了速度的一定折衷。如果您计划进行大规模的提示运行,这可能会成为瓶颈。对我而言,这就像拥有一辆被困在交通中的兰博基尼——它很好,但没有充分利用。这是对需要实时响应能力的项目的重要考虑因素。这是我转向Anthropic’s Claude的几个原因之一。

最昂贵

品质是需要付出代价的。字面上来说,从GPT-4生成响应所需的计算资源可能会迅速增加成本。如果你是一个预算有限的初创公司,或者是一家希望扩大规模的企业,这是一个不可避免的障碍。然而,考虑到其功能,你往往会发现投资回报率能够证明成本的合理性。在某些情况下,也许更好的做法是先在GPT-3.5-turbo上进行测试(因为更容易显示错误),找出所有的缺陷并解决它们,然后再切回GPT-4。

经常不可靠

虽然GPT-4提供了一流的性能,但它并不是没有运行问题的。该服务可能会令人沮丧地不一致;它容易出现停机和随机的限流情况。这种不可预测性可能不仅仅是一种不便,当你时间紧迫时,它还可能成为项目的终止因素,这是我所了解的每个建造LLM产品的人都需要认真考虑的。虽然有一些解决办法,比如在限流时切换到较低的模型,以及LangChain提供的开箱即用的重试逻辑,但我们都希望这个行业能够成熟起来。

IPyWidgets

优化提示堆栈 四海 第6张

这个简单的开源库基本上是构建界面的最快速方法。它在Jupyter Notebooks中工作,而实话实说,大多数数据科学家和提示工程师都会在其中花费时间,它会强迫你不再把时间浪费在通过屏幕调整像素来完善设计上。

Notebook界面

IPyWidget的基于Notebook的库是一种方便快捷的启动界面。当我向我的联合创始人介绍时,他问:“如果我们具备足够的技术能力来阅读和编辑代码,为什么还需要界面?”答案是,即使是最狂热的编码人员也会厌倦一整天编辑文本,而一些可视化的东西对大脑来说不那么累人。当然,你可以在命令行或电子表格中做到这一点,但计算机之所以有图形用户界面,是有原因的。

最小化样式

这个库采用极简主义的样式,将功能放在首位。这种方法使你更专注于真正重要的事情——优化你的提示和脚本,而没有任何干扰。在一个过度复杂的技术和过度设计的时代,简单常常被忽视。这个库做得很好。如果需要引入非技术评估员,你总是可以后期设计一个漂亮的React前端。

适用于Python

与Python和Jupyter Notebooks的兼容性对我来说是一个重大胜利,因为我是用Python代码思考的。不得不从Python切换到TypeScript和React来设计一些花哨的界面,只是为了构建一个演示以查看某个功能是否有效,确实让人感到很烦琐。Python是人工智能世界的通用语言,所以将界面与你一直在编写的其他代码无缝集成是有道理的。

显示HTML

你并不局限于只显示开箱即用的小部件,你还可以显示HTML,这打开了一系列你可以显示的内容。我经常将表格和图表放入小部件中,并按自己的喜好进行格式化。对于提示优化来说,这意味着在完成评分后将测试结果内联显示出来。

Pandas

优化提示堆栈 四海 第7张

Python世界的Excel,许多数据科学家的职业生涯都始于对Pandas的良好了解。对于提示工程的分析来说,其中没有任何特别具有挑战性的部分,所以你不需要比这更复杂的东西。

数据透视表

Pandas使创建数据透视表变得非常简单,这让你可以快速查看各种提示变体在评估指标上的表现。Pandas中的数据透视表可以帮助你识别模式和趋势,提供基于数据驱动的提示。

筛选器

Pandas具有强大的筛选能力,可以让你像米其林星级厨师一样对数据进行切片和切割。无论你想找出哪些提示组件的成功率最高、响应时间最短还是其他任何指标,自定义筛选器都可以让你细致入微地揭示并发现很容易被忽视的洞察。

评估指标

衡量了就能管理。Pandas允许您对数据中的任何列运行函数,并根据输出创建新列。这使您可以将任何评估指标注入数据中,使以编程方式定义的绩效指标更易于处理。

CSV导出

Pandas还提供了直观的CSV导出功能,可以使您将洞察力跨平台或与团队成员共享。Pandas可能是Python的Excel,但有时将数据放入Excel中非常方便,而这使得这一点变得容易。

附加奖励:Thumb

优化提示堆栈 四海 第8张

Thumb是我建立的开源提示优化和测试库,它包含了上述所有内容。我经常重复使用相同的组件,所以我认为将它们打包为一个模块并以开源形式发布,让其他人受益并进行补充是有意义的。

异步测试和缓存

Thumb通过其异步测试和缓存功能超越了基本提示功能。异步测试允许您同时运行多个提示测试,大大减少了优化所需的时间。另一方面,缓存功能存储每个结果,如果您的测试被中断或由于某种原因失败,可以减少不必要的浪费令牌。这是我想构建Thumb的最重要的原因,因为我厌倦了测试中断的情况,并不得不从头再次运行整个过程!

LangChain和LangSmith集成

当然,Thumb在内部完全由LangChain组件构建,因此您可以获得重试逻辑的全部功能,而无需处理记住如何精确格式化的额外管理工作。使用LangSmith设置日志记录只需一个简单的环境变量:LANGCHAIN_API_KEY。如果您想添加其他功能或自定义它,因为它是开源的,您可以查看源代码并进行更改,将其扩展以处理更多的关键LangChain组件。

IPyWidgets界面

Thumb起初是我用于提高工作效率的一个简单的内部工具,我也一直试图保持它的简单性。这意味着您可以在Jupyter Notebook中快速运行简单的用户界面,并对一堆提示进行评分,然后转储数据并进行分析。尽管没有可共享的链接传递给团队成员,但这专注于在您构建第一个提示和将其优化投入生产之间发生的80%的工作。一旦投入生产,存在许多可用工具,比如< a href=”/?s=prodigy”> prodigy 或< a href=”/?s=brat”> brat ,用于标记和评分机器学习响应。

结论

尽管事物可能会发生变化,但一些早期的AI浪潮的领导者和受益者正在出现。即使这些工具不是最终的赢家,它们也将成为接下来的参考。今天学习这些工具将帮助推动您进入AI的未来。

ODSC West 2023上,我将在演讲“使用GPT-4和LangChain进行提示优化”中展示这个堆栈的实际测试。我将演示如何优化您的提示。如果您希望我提供更多有关Prompt Engineering的信息,可以查看我在Udemy上的课程,或在O’Reilly上早期发布的书籍。

关于作者

优化提示堆栈 四海 第9张Mike是一位数据驱动的技术营销专家,曾建立一家拥有50名员工的营销代理机构(Ladder),并有30万人参加了他的在线课程(LinkedIn、Udemy、Vexpower)。他现在自由职业地从事生成式AI项目,并正在为O’Reilly Media写一本关于Prompt Engineering的书籍。

Leave a Reply

Your email address will not be published. Required fields are marked *