Low-code LLM: Visual Programming over LLMs
link: https://arxiv.org/abs/2304.08103
repository: https://github.com/microsoft/TaskMatrix/tree/main/LowCodeLLM
摘要
大规模预训练模型(LLMs)在解决困难问题仍具有很大的挑战。这篇文章提出了可以与用户进行交互的低代码大模型框架,Low-code LLM。通过用户的反馈和编辑可以使LLMs输出更可控和更稳定的输出。该框架主要包括两个模块:
Planning LLM
- 对复杂任务设计一个结构化的计划流程图
- 用户可以进一步对该计划进行编辑和修改
Executing LLM
- 根据用户确定后的计划流程产生对应的输出
这个工作放在了微软的TaskMatrix仓库下。TaskMatrix旨在连接ChatGPT和一系列基本的可视化模块,并以此实现在对话过程中处理图片内容。目前TaskMatrix项目已获得超过30k的star。该项目的基本思路是:将类似ChatGPT的大模型视为通用接口,将基础模模型(Foundation Models)视为领域专家,然后通过结合两者的特点来完成更复杂的任务。
下面是TaskMatrix的一个基本示例:
上图中用户输入原始图片,并要求将“沙发”替换为“桌子”,并将图片背景替换为蓝色。处理过程中会决定是否用视觉基础模型(VFM),最右边可以看出调用了2次VFM来处理图片,最后完成图片的处理工作。
方法
方法整体的展示如下图:
图中虚线左边展示了传统的ChatGPT使用场景了,右边展示了增加Planning LLM之后的场景。可以看出Planning LLM中增加了认为交互的功能,人可以编辑产生的计划流程图。用户在确定了最中的流程图之后Executing LLM才开始产生所需的具体内容。对于负责任务而言,先有计划,后有内容,可以将任务拆解,符合直觉。
具体而言,用户可以对流程图进行的编辑动作如下:
• Adding/removing steps by clicking buttons;
• Modifying step names or descriptions by clicking and text editing; • Adding/removing a jump logic by clicking;
• Changing the processing order by dragging;
• Extending a step in the flowchart by clicking the button;
• Regeneration, and confirmation by clicking buttons.
如果要写一篇论文,Planning LLM可以产生如下的计划流程
下面展示了一个面向对象编程的例子:
使用Low-Code LLM,程序员可以很容易指导模型设计良好的体系结构,从而允许Executing LLM基于流程图生成代码。ChatGPT的结果在对象设计中表现不佳。在合并了人工编辑的工作流之后,该模型能够生成正确的代码。
整体而言,这篇文章提出的基本思路为:引入用户的编辑先设计流程图,然后在根据流程图逐步生成回答。这种思路符合直觉,能够使大模型产生可控的,稳定的输出。但就论文本身而言,目前应该是处于demo版本。如需了解细节可以再看看TaskMatrix仓库(https://github.com/microsoft/TaskMatrix)和里面的论文,Low-Code LLM是该仓库中的一个子项目。