背景
Prompt flow和LangChain都是LLM时代,为高效地构建LLM应用而生。
Prompt flow是Microsoft开源的,其诞生时,LangChain已经很有名气了。
所以作为后生的Prompt flow会为我们带来哪些新的东西呢?
Prompt flow带来新的设计理念
概述:
Prompt flow提供了一套开发工具,并通过实验来构建高质量的LLM应用程序,而不是一套框架(LangChain)。
可见其重点是聚焦在LLM应用程序的效果(质量)。
而这正是因LLM的不确定的特点所引发的新的思考方式。
所有用到的Prompt都要显示出来
当前的LLM应用,最重要的一个特点是围绕"prompt"提示词。
任何为了构建LLM应用而提供的工具or框架,都应该优先专注于prompt设计以及prompt的调优。
Prompt特点
Prompt的特点是不稳定(不确定)。
同一套Prompt在不同的LLM里,其效果是不一样的。
甚至是对于同一个LLM的不同版本,其效果也是无法保证一致的。
Prompt显示
所以在实际构建LLM应用时,任何用到Prompt的地方,都要能方便的调优。
由此可以推导出,在实际构建LLM应用时,任何用到Prompt的地方都需要显示出来,可以被修改,可以被调优。
而那些将Prompt隐藏在框架里的方式,很大概率会导致LLM应用的效果不一致,这时候就只能去修改框架了。
以效果评估为中心的工作方式
因Prompt的不稳定性,所以在LLM应用构建时,需要重点关注效果。
类似算法的常见评估指标:准确率、召回率等。
LLM应用的质量(效果)也需要一套评估标准。
Prompt flow为评估任务提供了很多的工具:
- 将评估程序转化为评估流
- 基于SDK/CLI的实验及评估管理(会记录每次评估的过程)
- 可将评估集成到CICD中
增强可视化
LLM应用中使用到的ReAct、RAG等模式,本身并不是新发明的。
其更多的是表达与外部系统的交互,例如与Search Engine的交互,与知识库的交互,与本地数据的交互等。
交互可以认为就是API调用。
在LLM应用构建以效果评估为中心时,我们需要明确的知道每一个交互步骤具体是怎么样的,每一个步骤的效果如何。
因此交互步骤级别的可视化就很有必要,可极大的提升研发和评估效率。
以上便是Prompt flow和LangChain的区别。
显而易见,更多的是理念上区别。
Prompt flow更像是实战派,通过在实战中总结经验,通过第一性原理,找到本质的地方,然后对齐抽象和封装。