微信扫码
与创始人交个朋友
我要投稿
随着各种自动生成Prompt的工具被开源,Prompt Engineer的生存空间也在不断被压缩,一个明显的转变已经出现:要想在ALL IN AI的状态下生存下去,你要能从Prompt Engineer切换成WorkFlow Engineer。而WorkFlow领域的竞争也是非常激烈的,其中不乏摩根大通(J.P.摩根)AI研究中心这样的金融机构。
图片由DallE生成
摩根大通的AI研究机构竟然通过一段很简短的Prompt“教会”了让LLMs自动生成工作流。摩根大通人工智能的最新研究FlowMind表明,通过自动生成利用API来可靠地回答用户查询并执行自发任务的完整工作流,FlowMind在简单和中等难度问题上达到95%以上的准确率,引入用户反馈后,FlowMind+feedback将所有难度的准确率进一步提高到接近100%,同时不牺牲安全性和隐私性。要知道99.5%和100%在金融领域意味着什么?
这篇论文(2404.13050)最初发在ICAIF ’23, November 27–29, 2023, Brooklyn, NY, USA 上,为我们揭示了一个令人兴奋的研究成果FlowMind。FlowMind的一个关键特性在于其对LLMs经常遇到的幻觉的鲁棒性有一个完美的解决办法。研究者通过应用程序编程接口(APIs)的帮助来固定LLMs的推理。这些API是由领域专家开发和测试的可靠函数,确保了它们的准确性和可靠性。工业中开发的专有软件通常由这类可靠的API组成。FlowMind能够利用提供给它的API,同时确保LLMs不直接与任何专有代码或数据互动,保护代码和数据的隐私。这种保护是通过允许LLMs仅在API的高级描述上操作来实现的,增强了安全性并确保了工作流的可靠生成。
对于重复性任务,传统RPA需要领域专家手工设计工作流程,然后部署执行。而对于自发的、不可预测的任务,就无法轻易通过预定义的流程自动化了。
Flowmind如何实现?
FlowMind利用大语言模型的能力,可以自动生成工作流程来处理自发的任务。它将可用的API函数"讲授"给语言模型,然后语言模型根据用户需求,自主编写工作流程代码,调用这些API函数来完成任务,并可以与用户交互优化工作流。
这种称为FlowMind的新方法使用一种特殊的"讲座"提示来教育LLM关于上下文、可用的API以及编写工作流代码的必要性。FlowMind框架的两个关键阶段:
阶段1:遵循提出的通用讲座配方(lecture recipe)来生成一个讲座提示(lecture prompt),向语言模型(LLM)介绍上下文、APIs,并让其准备好编写代码。
阶段2:LLM可以接收用户的查询或任务,利用引入的APIs自动生成工作流代码。工作流代码被执行以输出结果。在阶段2,我们还在FlowMind和用户之间启用了一个反馈循环,FlowMind以通俗易懂的语言提供生成的工作流的高层描述,用户可以审阅并提供反馈,FlowMind据此优化工作流。
这两个阶段恰好对应了研究者介绍的两个主要内容,即"向语言模型讲课"和"工作流生成与执行"。以下就是这个通用讲座的配方(Prompt):
想象我们正在开发一个文档分析机器人。该机器人的任务是根据用户提供的信息进行查询和响应。
你可以使用的主要函数有:
·get_all_reports():返回所有的报告。
·get_report(fund_name):返回包含指定基金名称的报告。
·segment_report(report):对输入的报告进行分段解析,每个分段描述一个基金。
·fetch_block(report, fund_name):返回报告中与指定基金对应的分段。
·extract_entity(block, entity_label):从指定的文本分段中提取出特定标签的实体名称。
·extract_value(block, value_name):从输入的文本分段中提取出value_name所指定的数值。
等待用户的查询,然后编写Python代码(应用模块化)并使用这些函数来响应查询。让我知道你什么时候准备好接受用户查询。
这个Prompt的主要含义是:
这种将任务细节抽象成统一接口函数的方式,可以让机器人更灵活地適应不同的应用场景和需求变化。同时面向普通用户的查询交互,也让整个系统更加人性化和实用化。
FlowMind处理两个NCEN-QA-Easy数据集中问题的整个过程,包括生成的工作流代码和输出的结果。让我们详细分析一下工作流代码的含义:
# Q1: Who is the custodian for the CROMWELL CENTERSQUARE REAL ESTATE FUND?
def get_custodian(fund_name):
report = get_report(fund_name) # 用基金名称获取相应的N-CEN报告
block = fetch_block(report, fund_name) # 从报告中提取出该基金对应的文本块
custodian = extract_entity(block, "Custodian") # 从文本块中提取出"Custodian"实体
return custodian
fund_name = "CROMWELL CENTERSQUARE REAL ESTATE FUND"
custodian = get_custodian(fund_name) # 调用get_custodian函数获取托管人信息
print("The custodian for the", fund_name, "is", custodian)
# Q2: What is the gross commission for the TCW ARTIFICIAL INTELLIGENCE EQUITY FUND?
def get_gross_commission(fund_name):
report = get_report(fund_name) # 用基金名获取报告
block = fetch_block(report, fund_name) # 提取基金对应的文本块
gross_commission = extract_value(block, "gross_commission") # 从文本块中提取"gross_commission"数值
return gross_commission
fund_name = "TCW ARTIFICIAL INTELLIGENCE EQUITY FUND"
gross_commission = get_gross_commission(fund_name) # 调用函数获取总佣金
print("The gross commission for", fund_name, "is", gross_commission)
可以看到,FlowMind根据问题自动生成了相应的Python函数来查询所需信息。函数的基本逻辑是:
主程序则是直接调用生成的函数,传入问题中提到的基金名称,获取所需信息,并打印输出结果。
这段代码展示了FlowMind根据不同问题灵活生成定制化查询函数的能力。生成的代码逻辑清晰,恰到好处地利用了"讲座"环节引入的一系列API函数,代码模块化程度高,可读性强,安全性也越强。同时,FlowMind生成的代码直接就能运行,并输出正确结果,证明其代码的高完整性和有效性。
FlowMind的研究结果
研究人员在他们创建的一个名为NCEN-QA的新基准数据集上测试了FlowMind。它包含600个关于N-CEN报告中发现的数据的问答对,投资公司每年提交这些报告,其中包含他们管理的基金的信息。通过为FlowMind提供用于解析和提取N-CEN报告信息的API,他们能够评估其自动生成工作流以回答NCEN-QA中问题的能力。
所有评测方法在NCEN-QA数据集上的准确率结果,包括基线方法、消融实验和完整的FlowMind方法。主要结论如下:
1.完整的FlowMind方法在所有难度级别的问题上都显著优于基线方法GPT-Context-Retrieval。FlowMind在简单和中等难度问题上达到95%以上的准确率,在困难问题上也有89.5%。
2.消融实验显示了"讲座"提示中每个组成部分的重要性:
3.引入用户反馈后,FlowMind+feedback将所有难度的准确率进一步提高到接近100%。
FlowMind对于我们有何意义?
让我们先总结一下,FlowMind在实现工作流方面主要采用了以下方法:
这种工作流的实现方式对我们日常构建Agent和工作流有很大的借鉴意义:
Reference:https://arxiv.org/pdf/2404.13050
<本文完结>
想把方法论转化为复杂提示词?Prompt心法与算法高级指南,帮你从知到行升维实践
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19