通过微软开源项目GoTFlow了解Flow Engineering

论文《CodeGenerationwithAlphaCodium》提出FlowEngineering,一种通过迭代生成和测试反馈改进大模型性能的新方法。LLM应用不再局限于单次prompt,而是转向更复杂的流程和模型自我迭代。GoTFlow作为实践案例,展示了如何利用图结构管理任务流程,提高任务执行的灵活性和准确性。
摘要由CSDN通过智能技术生成

近期,一篇名为《Code Generation with AlphaCodium: From Prompt Engineering to Flow Engineering》的论文得到广泛关注,得到了OpenAI技术大佬Andrej Karpathy的关注和点评。

324a59e1382c779b82ad9af8adfb33fb.png

Flow engineering的提出

这篇论文中,引入了一种名为"Flow engineering"的范式,它的核心思路是,利用多次生成测试反馈迭代的方式替代原有精心构造Prompt一次性生成的方式,最终在验证集上,GPT-4的准确率(pass@5)从使用单个精心设计的Prompt的19%提高到使用AlphaCodium流程的44%。

dddf0c4c77bf2b88eb4df3ff2d9ef922.png

Flow engineering这一概念,指出了未来LLM应用开发者应该重点关注的方向,在过往的大模型开发中,应用核心开发重点在于prompt engineering,这多见于一些RAG应用,也就是整个过程围绕如何精心构造Prompt,再利用Prompt诱导大模型生成一个好的答案,而这一过程往往是单次的,它们往往难以系统解决大模型存在的幻觉、不一致等问题,但这一模式显然在未来无法满足人类对于大模型的期待。

LLM应用从趋势上看,逐渐朝复杂的流程组织,以及模型基于环境反馈的自我迭代循环纠错的方向发展,而这就是Flow Engineering。从应用模式上看,其实就是我们所谓的Agents和多agents的应用。

Flow engineering的两个阶段

从某种意义上讲,大模型应用开发变得更加务实,从一个模型算法问题转变成为一个工程问题,如何将复杂问题拆解为多个子任务或者子agent执行,如何编排协调,如何处理数据,如何选择合适工具,如何迭代优化,如何人机协作成为了做好LLM应用的关键。

这种模式整体上分为两个阶段, pre-processing阶段和code iterations阶段, pre-processing阶段主要目标是对任务进行推理,明确具体的要求和细节, code iterations阶段是生成code, 运行code, 根据测试case结果进行反馈迭代。

3ef1f1dbfaf99b72cabcb4b8a906fad5.png

在处理不同的LLM任务时,prompt engineering是一种有效利用资源的方法。简单来说,它涉及在发送给LLM的输入中包含任务描述。如果能以适当的形式描述任务,LLM就能利用其基于自回归token的机制生成文本来解决任务。这样的prompt可能包含带有示例解答的任务(少样本prompt设计,也称为上下文学习ICL),也可能完全不包含示例任务(零样本prompt设计)。近年的研究和应用表明,这一机制可用于解决涉及数学、常识或符号推理的多种类型任务。

思维图的提出过程

思维链(CoT: Chain-of-thoughts)是一种用于设计prompt的方法,除了任务的输入和输出外,还包含推理的中间步骤(中间思维)。研究表明,CoT能大大提升LLM的能力,使其无需任何模型更新即可解决一些难题。而一些研究者对CoT进行了改进,提出了使用CoT实现自我一致性的方法(CoT-SC);该方案涉及生成多个CoT,然后选择其中最佳结果。

更进一步提出了思维树(ToT: Tree-of-thoughts),它通过树结构来建模LLM的推理过程。这使得模型能够使用不同的思维路径,并提供全新的功能,比如基于不良结果的反向回溯推理过程。不幸的是,由于ToT方法为思维过程强加了严格的树结构,因此可能会极大地限制prompt的推理能力。

在进行思考时,人类不会像 CoT 那样仅遵循一条思维链,也不是像 ToT 那样尝试多种不同途径,而是会形成一个更加复杂的思维网。举个例子,一个人可能会先探索一条思维链,然后回溯再探索另一条,然后可能会意识到之前那条链的某个想法可以和当前链结合起来,取长补短,得到一个新的解决方案。类似地,大脑会形成复杂的网络,呈现出类似图的模式,比如循环模式。算法执行时也会揭示出网络的模式,这往往可以表示成有向无环图。

我们可以观察到:如果将 LLM 的推理过程建模成图,那么就能自然地实现这些以及其它许多思维变换。基于这一观察,思维图(GoT/Graph of Thoughts)被提出来。

85d28ea9c9bda263f38d2d063cccdbff.png

基于思维图的GoTFlow

我们在往期的文章当中,介绍了GoTFlow项目,也提到GoT的概念,详见(微软开源项目GoTFlow:推动业务效率,驱动决策质量提升)。在 GoT 中,一个 LLM 思维会被建模成一个顶点,顶点之间的依赖关系则建模为边。使用 GoT,通过构建有多于一条输入边的顶点,可以将任意思维聚合起来。整体而言,GoT 使用的图抽象方法可无缝地将 CoT 和 ToT 泛化到更复杂的思维模式,而且这个过程无需更新模型。GoT不同于传统的思维模型,它采用图结构来定义和执行基于LLM的任务流程,从而提高了处理复杂问题的灵活性和任务执行的准确性。这种思考方式更加接近人类思维的模式。而GoTFlow不仅能解析并执行复杂的思维图,自动化完成一系列复杂任务的组合,而且允许用户用图形方式定义和执行大型语言模型的任务流程,具备强大的灵活性。

6a35074fe686d476856488635dc6a1be.png

大模型驱动的辅助人工解决方案

来自微软的商用人工智能团队提出了Graph-of-Thought(GoT)并发表了相关论文。

e1b890442878d592e48063a9875594ee.png

论文:Graph-of-Thought: Utilizing Large Language Models to Solve Complex and Dynamic Business Problems

论文地址:https://arxiv.org/abs/2401.06801

1bde7bd0f6604a1e8c94b1c842351b31.png

项目开源地址:https://github.com/microsoft/GoTFlow

而基于GoT的GoTFlow,引入了DSL来设计和定义工作流程,JSON格式。在GoTFlow DSL中,用户可以定义工作流中的各种节点、节点间的有向关系,以及每个节点的输入输出、数据处理、条件判断或与外部服务的交互等。这种设计可以更好地简化复杂工作流程的定义和执行过程,适应不同业务场景和需求,实现对复杂任务组合的自动化处理。 

例如,自动化生成一份营销策略报告,主要分成两个阶段,一,数据收集分析,生成洞察,这一阶段具可控性和可调试性;二,生成报告,分别是报告主题和提纲生成、策略建议生成以及报告完善,同样,将其拆分为多个短小的workflow,使其更加灵活。在实际应用中,GoTFlow成功地完成了整个营销策略报告的生成过程。通过自动化数据收集和处理,大大缩短了整个过程所需的时间,同时还提高了数据处理的准确性。

Flow engineering是一种开发方法论,强调将重点从单次的prompt engineering 转移到了复杂的流程组织和模型基于环境反馈的自我迭代循环纠错。Gotflow则是在这种方法论指导下的具体实现,通过建立任务之间的关系图来管理和执行任务流程,提高灵活性和准确性。它在实际应用中体现了Flow engineering的理念和原则,强调在应用开发中关注任务流程和环境反馈的管理和优化。


欢迎关注微软 智汇AI 官方账号

一手资讯抢先了解

d60745cf704b8b152940818bc3e7e724.jpeg

cc8c18f32327498a9817e05d1147a693.jpeg

感谢喜欢,点击一下 在看 吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值