还不会写WorkFlow?“讲课“即工作流,摩根大通用一段Prompt诱导LLMs自主生成

随着各种自动生成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如何实现?

01

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的主要含义是:

1.假设正在开发一个文档分析机器人,它的任务是根据用户提供的查询信息进行相应的搜索和响应。

2.提示中列举了该机器人可用的几个主要函数,包括获取报告、报告分段、提取特定信息等。这些函数的输入输出和功能都有明确的定义。

3.机器人需要等待用户输入具体的查询,然后利用给定的这些函数,编写模块化的Python代码来处理用户的查询并给出恰当的响应。

4.当机器人准备好接受用户查询时,它应该给出提示,表明可以开始交互了。

这种将任务细节抽象成统一接口函数的方式,可以让机器人更灵活地適应不同的应用场景和需求变化。同时面向普通用户的查询交互,也让整个系统更加人性化和实用化。

图片

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函数来查询所需信息。函数的基本逻辑是:

\1. 用get_report函数根据基金名称获取相应的N-CEN报告

\2. 用fetch_block函数从报告中提取出该基金对应的文本块

\3. 根据问题所问的具体信息,用extract_entity或extract_value函数从文本块中提取出相应的实体名称或数值

\4. 返回提取出的结果

主程序则是直接调用生成的函数,传入问题中提到的基金名称,获取所需信息,并打印输出结果。

这段代码展示了FlowMind根据不同问题灵活生成定制化查询函数的能力。生成的代码逻辑清晰,恰到好处地利用了"讲座"环节引入的一系列API函数,代码模块化程度高,可读性强,安全性也越强。同时,FlowMind生成的代码直接就能运行,并输出正确结果,证明其代码的高完整性和有效性。

FlowMind的研究结果

02

研究人员在他们创建的一个名为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.消融实验显示了"讲座"提示中每个组成部分的重要性:

· 去掉上下文(FlowMind-NCT)后性能有所下降

· 函数描述不包含语义化的参数名(FlowMind-BA)使性能大幅下降

· 不明确要求生成代码(FlowMind-NCP)的性能最差

3.引入用户反馈后,FlowMind+feedback将所有难度的准确率进一步提高到接近100%。

这些结果定量地验证了FlowMind方法的有效性,以及"讲座"提示各组分和用户反馈机制的价值。FlowMind的另一个创新方面是它能够接受用户反馈来改进生成的工作流。通过向用户提供工作流的高级描述,他们可以审查它并提供建议,FlowMind然后将其纳入以在需要时更新代码。在启用用户反馈的情况下,FlowMind将所有问题类型的准确性提高到接近100%。

FlowMind对于我们有何意义?

03

让我们先总结一下,FlowMind在实现工作流方面主要采用了以下方法:

\1. 首先通过"讲座"提示来教育语言模型,为其提供上下文信息、可用API的描述以及编写工作流代码的要求。

\2. LLM根据"讲座"中的信息,利用提供的API自动生成工作流代码。生成的代码是模块化的,能够恰当地调用API完成任务。

\3. 将生成的工作流代码提供给用户审阅,并允许用户给出反馈意见。LLM根据用户反馈对代码进行优化和调整。

\4. 优化后的工作流代码可以执行以可靠地完成用户要求的任务,并给出结果。

这种工作流的实现方式对我们日常构建Agent和工作流有很大的借鉴意义:

\1. 利用提示工程对LLM进行必要的知识灌输和任务指导。精心设计的提示可以让LLM更好地理解任务要求,并基于已有的工具生成问题解决方案。

\2. 将LLM与外部API和工具相结合,避免大模型直接接触原始数据。API可以封装专家知识和复杂细节,LLM则负责根据需求组装和编排API完成任务。

\3. 让用户参与到工作流生成的闭环中。用户反馈可以帮助优化和纠正工作流,提高其可靠性和适用性。要让用户易于理解和评判工作流逻辑。

\4. 自动化地端到端生成工作流代码。利用LLM的代码生成能力,我们可以大幅提高构建Agent和工作流的效率,让系统根据高层需求自主设计实现方案。

FlowMind为我们展示了一种强大的范式,让语言模型与外部工具智能协作,并持续吸收人类反馈优化,以灵活可靠地解决各种任务。伴随着大模型能力的不断进步,FlowMind为我们如何更好地利用它们创造变革性的人工智能系统照亮了前进的方向。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/752420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS 核心知识点 - grid

思维导图 参考网址: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_grid_layout 一、什么是 grid? CSS Grid布局是在CSS3规范中引入的一种新的布局方式,旨在解决传统布局方法(如浮动、定位、表格布局)存在的许多问题。C…

【STM32修改串口波特率】

STM32微控制器中的串口波特率调整通常涉及到USART(通用同步接收器/发送器)模块的配置。USART模块提供了多个寄存器来设置波特率,其中关键的寄存器包括BRR(波特率寄存器)和USART_CR1(控制寄存器1&#xff09…

【数学建模】——【python库】——【Pandas学习】

专栏:数学建模学习笔记 pycharm专业版免费激活教程见资源,私信我给你发 python相关库的安装:pandas,numpy,matplotlib,statsmodels 总篇:【数学建模】—【新手小白到国奖选手】—【学习路线】 第一卷:【数学…

推荐系统中冷启动环节的设计实现

推荐系统中的冷启动分为物料冷启动和用户冷启动。用户冷启动主要是针对新用户,但有时候也用于低活用户拉活。物料冷启动主要是让优质物料得到快速下发,让模型可以迅速捕获到用户对该物料的关注。本文将详细讲解用户冷启动和物料冷启动。 1、用户冷启动 用…

SAMformer:通过锐度感知最小化和通道注意力解锁变换器在时间序列预测中的潜力

目录 摘要1. 引言当前方法的局限性变换器的可训练性我们贡献的总结 2. 提出的方法符号说明2.1 问题设置2.2 激励示例命题2.1(最优解的存在性) 2.3 变换器的损失景观现有的解决方案 2.4. SAMformer:集成所有方法 3. 实验3.1 主要收获 摘要 基…

【Linux系统编程】进程控制(创建、退出、等待、替换)

目录 再聊进程创建 进程终止 进程等待 进程程序替换 再聊进程创建 初识进程创建 关于进程创建,这里只会说结论,在上面这篇文章中对进程创建进行了比较详细的阐述,而接下来要介绍的,都是基于上文说过的来展开的 一些较为重要…

98%企业竟存N日漏洞超5年,新漏洞利用攻击时长极速缩短!

专注推动网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT),近日发布 FortiGuard Labs(Fortinet全球威胁情报响应与研究团队)《2023 下半年全球威胁态势研究报告》。本次新发布的半年度研究报告&a…

MySQL8 新特性——公用表表达式用法 with t1 as (select * from user)

MySQL8 新特性——公用表表达式用法_mysql ctes-CSDN博客 1.普通公用表表达式 MySQL8 新特性——公用表表达式用法 在MySQL 8.0及更高版本中,引入了公用表表达式(Common Table Expressions,CTEs),它是一种方便且可重…

Echarts地图实现:杭州市困难人数分布【动画滚动播放】

Echarts地图实现:杭州市困难人数分布 实现功能 杭州市地区以及散点图分布结合的形式数据展示动画轮播可进去杭州市下级地区可返回杭州市地图展示 效果预览 实现思路 使用ECharts的地图和散点图功能结合实现地区分布通过动画轮播展示数据变化实现下级地区数据的展…

深度学习论文: VanillaNet: the Power of Minimalism in Deep Learning

深度学习论文: VanillaNet: the Power of Minimalism in Deep Learning VanillaNet: the Power of Minimalism in Deep Learning PDF:https://arxiv.org/pdf/2305.12972 PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks 1 概述 提出的VanillaNet通过简化设计&…

《数字图像处理与机器视觉》案例二(基于边缘检测和数学形态学焊缝图像处理)

一、前言 焊缝是评价焊接质量的重要标志,人工检测方法存在检测标准不统一,检测精度低,焊缝视觉检测技术作为一种重要的质量检测方法,正逐渐在各行各业中崭露头角。把焊缝准确的从焊接工件中准确分割出来是焊缝评价的关键一步&…

API接口示例的设计与实现技巧?如何编写?

API接口示例怎么使用?哪些工具可以生成API接口示例? 一个良好的API接口示例可以显著提升开发效率,改善用户体验,并确保系统的稳定性和可扩展性。AokSend将探讨API接口示例的设计与实现技巧,帮助开发者构建高质量的API…

使用el-amap-info-window遇到的问题

使用的这个库https://github.com/yangyanggu/vue-amap 想要滚动amapInfoWindow里的内容,但不触发地图缩放 默认滚动amapInfoWindow里的内容,会触发地图缩放。看了C站一个大佬的文章解决了。 amapInfoWindow会自动滚动到顶部 我的amapInfoWindow里面用了…

Spring AI 接入OpenAI大模型实现同步和流式对话

接入前准备 第一,准备OpenAI API Key,如果你可以科学上网,可以参照[# 如何获得Open ai key]这篇文章在 OpenAI 官方网站上获取 OpenAI API Key。 第二,如果不能科学上网,我们可以通过一些代理商获取OpenAI API Key&a…

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单,不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化,使用之前的一些插件没能满足我发布依赖的需求,也可…

Reflexion:通过语言反馈增强的智能体

Reflexion: Language Agents with Verbal Reinforcement Learning Reflexion: language agents with verbal reinforcement learninghttps://proceedings.neurips.cc/paper_files/paper/2023/hash/1b44b878bb782e6954cd888628510e90-Abstract-Conference.html 1.概述 最近,Re…

海豚调度调优 | 如何解决任务被禁用出现的Bug

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益。 本系列教程基于 DolphinScheduler 2.0.5 做的优化。&#xff…

在 AI 公司入职一个月的体验与感悟

已经在一家 AI 公司入职了一个月,对坐班有些厌恶的我,没想到有一天也会开始通勤打卡。而经历了这一个月的工作,我对坐班的态度有所转变,开始理解这种工作方式对我的意义。是时候分享入职这期间的工作内容与感受。 背景 直入正题…

linux命令基础

1. uname 查看系统信息 2. ls 列出目录下信息 3. pwd 显示当前路径 命令全称(print working directory)打印当前工作目录 4. cd 切换目录 命令全称 (change directory,改变目录) 5. clear 清楚屏幕信息 命令:clear 可以使…

Microsoft Defender防病毒怎么关闭!详细步骤看这里!

Microsoft Defender是Windows系统中的防病毒软件,提供了实时的安全保护功能。但是,在某些情况下,用户想要需要关闭Microsoft Defender,但不知道要怎么操作才能关闭?接下来小编给大家带来详细的关闭步骤介绍。 永久禁用…