支持私有云部署
AI知识库 AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


PromptBook丨用示例、API、文档和思维链CoT指导机器人:以代码为策略的操作技能提示手册
浏览次数: 1557

How to Prompt Your Robot: A PromptBook for Manipulation Skills with Code as Policies

如何引导你的机器人:以代码为策略的操控技能PromptBook

2023.10,arxiv,匿名

摘要大型语言模型(LLMs)已经展示了在执行机器人任务时进行语义推理、规划及编写代码的能力。然而,大多数方法依赖于预先存在的基本操作(例如抓取、打开抽屉),这极大地限制了它们对新场景的可扩展性。此外,诸如“代码作为策略”(Code as Policies, CaP)等现有方法需要在提示中包含机器人代码示例,以便为新任务编写代码,并假设LLMs仅从示例就能推断出任务信息、约束条件以及API使用方式。但示例的获取成本高,且示例过少或过多都可能导致LLM朝错误方向产生偏差。最近的研究已证明,通过向LLMs提供API和相关文档来进行提示,能够实现成功地零样本工具使用下的代码编写。然而,对机器人任务进行详尽的文档记录以及盲目提供完整的机器人API,给LLMs处理上下文长度限制带来了挑战。在本工作中,我们提出了PromptBook这一方案,它结合了LLM提示范式——示例、API、文档和链式思考,旨在为规划排序任务生成代码,并取得了比以往工作更高的成功率。进一步地,我们展示PromptBook能使LLMs以零样本方式为新的低级操控基本操作编写代码,范围涵盖抓取各类物体、打开/关闭抽屉、挥舞动作乃至挥手问候等。我们在一个移动操作器上评估了这些新技能,其抓取成功率达到了83%,打开抽屉的成功率为50-71%,而关闭抽屉的成功率为100%。特别值得一提的是,LLM能够推断出用于抓住抽屉把手(与Z轴对齐)和顶部垂直抓取(与X轴对齐)所需的夹爪方向。最后,我们提供了利用人类反馈和LLMs编写PromptBook提示的指南。

摘要小结:大型语言模型(LLMs)在帮助机器人完成各种任务方面已经做得很不错了,比如让机器人理解语言、做计划和编写控制机器人的代码。但是,很多时候,这些方法需要有一些已经定义好的简单动作,比如“抓取”或“打开抽屉”,这些预设的动作限制了它们在新环境中的应用。

有些方法,比如“代码作为策略”,需要在告诉LLM要做什么的时候,给出一些代码例子。这些例子就像是菜谱,告诉LLM怎么编写控制机器人的代码。但是,这种方法有个问题,就是找到好的代码例子不容易,而且如果例子给得太多或太少,都可能让LLM弄错我们要它做什么。

最近,有些研究发现,如果我们给LLM一些API(应用程序编程接口)和相关文档,而不是代码例子,LLM也能学会怎么写代码。但是,要找到所有需要的文档和API很麻烦,而且如果给LLM的信息太多,它们处理起来也有困难,因为它们一次能处理的信息有限。

在这项新的研究中,我们提出了一个叫PromptBook的方法。PromptBook结合了给LLM示例、API、文档和让它们一步步思考的方法,帮助它们生成控制机器人的代码。我们发现,用PromptBookLLM在写代码方面做得比以前更好了。我们还发现,PromptBook能让LLM学会怎么编写控制机器人做各种基本动作的代码,比如抓东西、开抽屉、挥手等。我们在一个移动机器人上测试了这些新技能,发现它们抓取物体的成功率很高,开抽屉的成功率也不错,关抽屉更是每次都成功。有趣的是,LLM甚至能自己弄清楚怎么抓抽屉的把手,或者怎么垂直抓取物体的顶部。

最后,我们还提供了一些指南,教人们怎么用人类的反馈和LLM来编写PromptBook的提示,这样可以帮助LLM更好地学习和完成任务。

 

1PromptBook是一种配方,用于结合基于CaP实例的提示、API和约束条件的文档说明、链式思维推理以及世界状态信息。实验表明,PromptBook在多个机器人上的规划成功率更高,并且有趣的是,它能即时赋予LLMs(大型语言模型)以零样本方式实现新的操控技能(例如抓取、开抽屉、挥动等)。

注释:PromptBook的方法是一种结合了示例、指令、链式思考推理和状态预测的方法,用于生成控制机器人的代码。PromptBook的目标是提高规划成功率,并且能够让大型语言模型(LLMs)在没有事先给定例子的情况下(即零样本学习)编写代码来执行新的低级操控任务。以下是对图片中内容的详细解释:

1. **示例和指令**

- 图中展示了如何使用示例和指令来定义机器人的任务。示例包括了机器人环境中的对象和它们的初始状态,比如左边的垃圾桶里有香蕉,右边的垃圾桶是空的,桌子上有可乐罐。

- 指令则是告诉机器人需要完成什么任务,比如“将水果移动到右边的垃圾桶”。

2. **链式思考推理**

- 链式思考推理是一种让LLMs进行多步推理的方法。LLMs会一步一步地思考如何完成给定的任务,就像人类解决问题时会在心里默默推理一样。

- 图中展示了一个例子,LLMs首先检测把手的位置,然后计划如何抓住把手,移动一定距离,最后执行抓取动作。

3. **状态预测**

- 在编写代码的过程中,LLMs需要预测机器人和环境中对象的状态变化。这有助于LLMs理解任务的进展,并做出相应的调整。

- 例如,LLMs需要知道机器人手臂的当前位置,以便计划移动到新的位置。

4. **PromptBook的工作流程**

- PromptBook结合了上述所有元素,提供了一种“配方”来生成控制机器人的代码。

- 它使用示例来展示API的使用和任务信息,定义了机器人的约束条件,并利用链式思考来进行多步推理。

- PromptBook还考虑了世界状态信息,帮助LLMs更好地理解任务的上下文。

5. **实验结果**

- 实验表明,PromptBook在多个机器人任务中的规划成功率更高。

- 有趣的是,PromptBook还能够使LLMs在没有给定例子的情况下(零样本学习)即兴发挥新的操控技能,比如抓取物体、打开抽屉和挥手动作。

PromptBook是一个综合性的方法,它通过结合示例、指令、推理和状态预测,使得LLMs能够更有效地编写代码来控制机器人完成任务,甚至在没有先前例子的情况下也能学习新的技能。

1 引言与相关工作

大型语言模型(LLMs)通过提示和上下文学习,在众多与机器人任务相关的领域展现出广泛的能力——从高级规划[1, 6, 7, 23]到逻辑推理[3, 8, 15, 20],再到编写机器人代码[10, 14]及设计奖励函数[5, 9, 22]。基于示例的提示是一种适用于一般上下文学习的有前景范式[2, 19],并且在为机器人应用编写代码方面已取得成效[10][12]采用基于示例的提示进行高级任务规划,并辅之以习得的低级策略。相比之下,我们的工作则同时提供了任务规划和运动规划的代码示例。CaPCode as Policies)及其他研究[10, 14]使用语言指令示例及其对应的策略代码来激发LLMs并为新的桌面任务命令自动生成代码。然而,这一范式可能受限于示例成本较高,且有些概念仅通过示例难以教会LLMs,比如机器人的约束条件。比如,若存在一个速度不得超过1/秒的约束条件,需要展示多个调用robot.set_velocity的示例,才能让模型隐含地推断出总速度(即速度的L2范数)不超过1。与其通过隐含示例引导LLMs的行为,我们还可以向LLMs提供明确的自然语言指令,这些指令描述了解决任务所需的目标、约束和其他相关信息。

一系列先前的研究[13, 17, 18, 21, 22]探索了基于指令的提示方法,其中模型会接收到关于机器人、其约束条件及可访问的API简要的语言描述,然后期望模型在给定新任务时直接完成新的机器人代码编写(通常是在零样本情况下)。尽管这些技术为基于指令的提示提供了强大的方法,但它们尚未考虑生成可在真实机器人环境中直接执行的代码。

在本工作中,我们在三个不同的机器人平台上研究了各种LLM提示方法。我们发现:(i) 结合基于指令和基于示例的提示能够达到两者的最佳效果——所有语言模型和任务上均观察到了性能提升;(ii) 通过基于指令的提示显式指定机器人约束条件最为有效,并且在经过指令调整优化的模型上表现更佳;(iii) 在提示中的代码行之间提供环境状态的语言描述,有助于LLM依据特定场景编写代码并跟踪内部变量;(iv) 基于指令的提示受益于人类反馈修正,LLM可以通过指导改进自身提示来提高性能。

我们提出PromptBook(图1),这是一种针对LLMs的提示配方,旨在改善其将自然语言指令转化为机器人代码的能力,该配方综合了:基于指令和基于示例的提示、链式思维、交错的状态描述以及人类反馈。PromptBook可以带来更为稳健的规划性能以及对几何和体现约束的更好推理能力,进而构建新的运动基本单元,使LLMs具备生成如“打开/关闭抽屉”或“搅拌锅内食材”等技能所需的高级三维轨迹能力,这些轨迹可以直接在机器人上执行,利用现成的逆运动学规划器而无需额外的人工干预、数据收集或模型训练。虽然这些能力尚不足以取代专业算法,但仍展示了LLMs组合低级别技能运动基本单元的能力。虽然我们仅提供了几个示例的结果,但这种方法可以扩展至其他任务而不需微调。接下来的章节我们将提供关于设置、结果和分析的全面细节。

2 提示书(PromptBook)配方详解

本节将介绍PromptBook配方的七个要素,其中第一个要素属于基于示例的提示,要素25则属于基于指令的提示。有关如何针对特定机器人任务领域的PromptBook应用示例及指南,请参阅附录。

2.1 提示要素

1)示例。我们可以通过在提示中打包一系列示例来教LLM如何编写机器人代码[10],每个示例都是一个命令-响应对。示例隐含地向LLM传达两种类型的信息:如何将机器人命令具体化(例如,如何映射空间描述,如“向后”到代码中)以及如何使用第一方API(例如,LLM训练集中未出现的自定义机器人动作函数,如robot.set_velocity)。

注释:想象一下,你正在教一个小朋友学习怎么玩一个新的电子游戏。你可能会给他看一些例子,比如你按下一个按钮,游戏里的角色就会跳起来;再比如你移动操纵杆,角色就会向前走。通过这些例子,小朋友就明白了按钮和操纵杆的作用,也就是游戏里的“命令”。

同样地,我们可以用类似的方法来教大型语言模型(LLM)如何编写控制机器人的代码。我们给LLM一些“示例”,每个示例都是一个“命令-响应对”。这就像是告诉LLM:“如果你想要机器人做这个动作,你可以用这样的代码命令。”

这些示例里包含了两种重要的信息:

1. **命令的具体化**

- 就是告诉LLM怎么把我们说的话(比如“向后移动”)转换成机器人能理解的代码。这就像是教小朋友游戏里的“向后”按钮实际上是哪个按钮。

2. **使用API**

- API是一套工具和规则,可以让程序(比如LLM)告诉机器人该做什么。有时候,这些API是自定义的,也就是说在LLM的训练过程中可能没见过。通过示例,我们告诉LLM怎么用这些API来控制机器人的动作。

所以,通过给LLM一些好的示例,我们就可以教会它如何编写控制机器人的代码,让机器人按照我们的指令去执行动作。

2)高级机器人及任务描述。直接指定高级别的机器人实体特征和任务信息,可以让LLM在进行任务规划时获得有用的情境。例如,我们可以明确指出机器人是一台双臂固定式机器人,并提供重要环境特征和任务信息的描述。

注释:想象一下你在给一个智能助手讲故事,故事里有个机器人要在厨房里帮忙。如果你只告诉智能助手“机器人要移动水果”,它可能不知道从哪里开始,也不知道水果在哪里。但是如果你提供更多的细节,比如“机器人有两个手臂,它站在桌子旁边,水果在左边的碗里,目标是把水果放到右边的碗里”,这样智能助手就能更好地理解情况,并想出如何帮助机器人完成任务。

在真实的世界里,我们可以用类似的方式来告诉大型语言模型(LLM)如何帮助机器人完成任务。我们给LLM一些高级的描述,比如机器人的类型(比如双臂机器人)、它在哪里、周围环境是什么样的(比如厨房)、以及我们想让机器人做什么(比如移动水果)。这些信息就像是给LLM提供了一个背景故事,让它能够更好地理解任务,并想出一个有效的计划来帮助机器人完成工作。

通过这种方式,LLM不仅知道要做什么,还知道机器人能做什么,以及周围的环境是什么样的。这样,LLM就能更好地帮助机器人完成任务,就像一个了解情况的助手一样。

3)机器人API文档。除了高级别的机器人和任务描述外,基于指令的提示还应包含编写特定领域机器人代码的低层次细节。请参见图1中所示的一个单臂移动基座机器人的简化示例。

注释:你有一个新的玩具机器人,这个机器人有一个特殊的功能:它可以通过一个手机应用来控制。这个应用里有很多按钮和滑块,每个都有不同的功能,比如让机器人前进、后退、转向或者抓取东西。但是,你不知道怎么用这些功能来让机器人做你想让它做的事情。

这时候,玩具的说明书就很重要了。说明书会告诉你每个按钮和滑块是做什么的,怎么组合使用它们来控制机器人。这就像是机器人的API文档,API文档是一套详细的指南,告诉我们怎么使用机器人的每个功能。

在大型语言模型(LLM)帮助编写机器人代码的情况下,API文档就像是告诉LLM怎么使用那个手机应用来控制机器人。LLM需要知道每个功能(API)是怎么工作的,这样它才能写出正确的代码来让机器人执行任务。

例如,如果LLM需要让一个单臂移动基座机器人去抓取一个物体,它需要知道如何使用机器人的移动和抓取功能。API文档会告诉LLM怎么用代码来控制机器人的手臂移动到正确的位置,然后抓取物体。这样,LLM就可以写出正确的代码,让机器人完成抓取任务。

所以,除了告诉LLM机器人要做什么(高级别的任务描述),我们还需要提供足够的细节(低级别的API使用信息),这样LLM才能知道怎么实际控制机器人来完成任务。

4)机器人策略约束。除了API文档之外,我们还可以详述那些从API本身不易立即看出的机器人策略约束。请参见图1中提示中此类约束的简化示例。

注释:想象一下,你买了一个会扫地的机器人。这个机器人有一个按钮,按下去它就会开始扫地。但是,机器人的说明书里还有一些特别的注意事项,比如“不要在楼梯旁边使用机器人,以免它掉下去”或者“使用时请确保所有门窗都关好,以免它跑到外面去”。

这些注意事项就像是机器人的“策略约束”,它们是一些额外的规则,告诉我们在什么情况下可以使用机器人,以及如何安全地使用它。这些信息在API文档里可能没有明确提到,因为API文档主要告诉我们如何操作机器人的功能。

在教大型语言模型(LLM)编写控制机器人的代码时,我们也需要告诉它这些策略约束。这样,LLM在编写代码时就会考虑到这些额外的规则,确保机器人的行为既符合我们的意图,又安全又合适。

例如,图1中的提示可能会包含一些简化的策略约束,比如“机器人在抓取物体时,必须确保物体在它的手臂范围内”或者“机器人在移动时,需要避免撞到墙壁或其他物体”。

通过提供这些策略约束,我们帮助LLM更全面地理解如何控制机器人,就像给小朋友的画画规则里加上了“不要画到桌子和衣服上”的提示一样。这样,LLM就能编写出更好的代码,让机器人更安全、更有效地完成任务。

5)代码规范。最后,我们可以直接指定所需的策略代码属性,而无需依赖展示许多隐含示例。例如,要求编写的代码应严格调用提供的机器人API,并避免调用不存在的API函数。

注释:想象一下你在教一个小朋友学习画画。你可能会给他一些规则,比如“只用蓝色和黄色的蜡笔”或者“不要在画纸上画出边界线”。这些规则就像是告诉小朋友在画画时应该遵守的“代码规范”。

同样地,当我们教大型语言模型(LLM)编写控制机器人的代码时,我们也需要给它一些规则或“代码规范”。这些规则告诉LLM在编写代码时应该做什么,以及应该避免什么。

例如,我们可以告诉LLM,它写的代码必须使用我们给它的机器人API(就像玩具的说明书),并且不能使用不存在的API函数。这就像是告诉小朋友只能使用手头的蜡笔,不能随便用其他颜色或材料。

这样做的好处是,我们可以确保LLM编写的代码既安全又有效。就像我们在教小朋友画画时希望他们不要弄脏衣服或墙壁一样,我们也希望LLM编写的代码不会让机器人做出可能会损坏东西或不安全的行为。

所以,“代码规范”就像是一套规则,帮助LLM知道如何正确地编写代码,确保机器人能够按照我们的意图去行动,同时避免错误和问题的发生。

6)策略推理的链式思考。在添加指令至提示的基础上,PromptBook对给定示例进行了两项改进以提高LLM的规划性能。首先是链式思考(Chain of Thought, CoT[20],这是一种流行的方法,它在提示中写出解决问题的逐步推理过程。我们可以通过将每个思考步骤格式化为代码中的注释,自然地将CoT融入代码生成中。请参见图1中的简化示例。

注释:比如你要去超市买东西,你可能会在脑子里先计划一下:首先,我要去水果区买苹果;然后,我要去蔬菜区拿一些西红柿;最后,我要去结账。这个计划的过程就像是你在脑子里一步步地解决问题,每一步都为下一步做准备。

现在,如果我们想把这个过程教给大型语言模型(LLM),让它帮我们控制机器人去完成类似的任务,我们可以采用“链式思考”(Chain of Thought, CoT)的方法。我们会告诉LLM,解决问题的时候要一步步来,就像我们刚才计划去超市的路线一样。

PromptBook里,我们可以把这个过程写成一段段的注释,就像是在代码旁边做的笔记。这样,LLM在生成代码的时候,就可以参考这些注释,按照步骤一步步地来。注释会告诉LLM先做什么,然后做什么,最后做什么,这样它就能更好地理解整个任务的流程。

在图1中的简化示例里,可能展示了一个例子,比如LLM在编写代码时,会在代码旁边加上注释,比如“首先,检测物体的位置”,“然后,移动手臂去抓取物体”,“最后,把物体放到目标位置”。这样,LLM就能更清晰地理解任务的每个步骤,并生成正确的代码来控制机器人完成任务。

通过这种方式,PromptBook帮助LLM更好地理解复杂的任务,并有效地规划出完成任务所需的步骤。就像我们去超市购物时,有了计划就能更快更顺利地买到所有需要的东西。

7)交错的状态预测和观测。CoT启发并类似于此,我们还在每个示例代码输出中包含了以注释形式格式化的明确环境状态预测。我们引导LLM在其输出中预测并记录当前状态,这些状态与机器人策略代码交错排列。在运行时,我们提供一个新的指令和初始状态信息,LLM将自回归地生成剩余序列。明确的状态预测鼓励LLM利用简单的转换模型来进行更精确的规划,并更好地遵循给定的约束。请参见图1中的简单示例。

注释:比如你在写一个小故事,故事里的主人公是一个机器人。你想让读者知道机器人在每个关键时刻都看到了什么,感受到了什么。所以,你在故事中穿插了一些描述,告诉读者机器人当前的环境是什么样的,比如“机器人看到前面有一个红色的球”或者“机器人感觉到手上抓着一个重物”。

PromptBook中,我们用类似的方式来教大型语言模型(LLM)编写控制机器人的代码。我们不仅告诉LLM机器人要做什么,还告诉它在每个步骤中机器人可能会看到什么,感觉到什么。这些信息就像是故事中的描述,我们把它们写成代码旁边的注释。

当我们运行机器人的时候,我们会给LLM一些新的指令和机器人的初始状态,比如“机器人现在在房间的一角,前面有一个需要搬动的箱子”。然后,LLM会根据这些信息,一步步地生成接下来的动作,就像讲故事一样,一步接一步。

这种交错的状态预测和观测的方法帮助LLM更好地理解任务,就像一个好的故事让读者更好地理解情节一样。LLM通过预测和记录机器人的状态,可以更准确地规划任务的每一步,并确保遵循所有的规则和限制。

在图1中的简单示例里,展示了LLM如何预测机器人的状态,并把这些预测穿插在代码中。这样,当机器人开始工作时,它就可以根据LLM的预测和规划来行动,就像一个有计划的故事主角一样。

2.2 如何构建PromptBook提示

最终的PromptBook提示通过结合上述8个提示要素组合而成。在本节中,我们将提供一种借助LLM构建和改进这些提示的过程。具体来说,我们开发了一种方法,可以利用LLM的反观能力,借助语言反馈来改进其即时输出以及最初的提示。以下是我们的三步流程:

步骤1:初步提示草稿。对于一个新的机器人任务领域,机器人工程师首先按照PromptBook配方起草一个初步的提示。由于领域信息不足,或者风格和表述方式不利于LLM理解,这个初始提示可能并不理想。

步骤2:人机交互式代码改进。有了初步的提示草稿之后,机器人工程师接着使用被提示的LLM执行一系列验证任务。在这个阶段,机器人工程师首先给出任务指令,LLM随后编写策略代码;如果策略代码未能正确执行,人类工程师会向LLM提供错误反馈。接收到反馈后,LLM会编写改进后的策略代码,并重复这一过程直至任务得以解决。每次试验结束后,我们会得到一组(任务、代码、反馈)元组序列。

步骤3LLM辅助下的提示改进。虽然人机交互式的反馈能够减少特定任务中的错误,但更期望修改提示以确保这些错误在未来不会重复出现。为此,我们将原始提示和(任务、代码、反馈)元组历史记录提供给LLM,然后询问LLM:“您将如何修改初始提示,以便在未来避免犯同样的错误同时保持现有约束?”以及“您将如何添加一个通用约束以在未来避免犯同样的错误?”然后将这些修改纳入初始提示中,以提升相似任务的性能表现。

3 实验

实验一:不同LLM在排序任务规划中的示例与指令提示对比。我们评估了多种语言模型在(i)基于示例的提示、(ii)基于指令的提示以及(iii)两者结合方式下对排序任务规划的成功率。这些任务是一系列在单臂(UR5)和双臂库卡机器人(Kuka2x)两个平台上的抓取与放置排序任务。尽管这些任务简单,但足以揭示基于LLM的规划背后的关键挑战。单臂与双臂配置的区别使得我们可以衡量LLM处理可达性约束的能力——不仅要求LLM推理每条机械臂只能到达最近的桌子或箱子,还要求它理解从一个箱子移动物体到另一个箱子需要额外的动作(例如,交接动作)(详情见附录)。结果参见表1

表格1:同时结合指令和示例(instr. + ex.)的提示方式在不同的机器人设置和语言模型中均表现出更高的成功率百分比。有关失败模式分析请参阅附录。

 

实验二:在策略代码中交错状态预测。我们在类似[4]的移动机器人垃圾分类场景中测试了两种LLM。在这种情况下,机器人可以在三个不同的垃圾桶(填埋场、回收站和堆肥箱)之间移动,并需要将已经放在这些垃圾桶里的垃圾正确分类(例如,塑料瓶应放入回收站)。然而,机器人在投放垃圾前需要处于相应垃圾桶前方,以避免可达性错误。结果见表2。我们表明,如果没有交错的状态预测,LLM在推理机器人所在垃圾桶的位置(状态)上存在困难,这会导致因可达性错误而成功率低下。

表格2:对于垃圾分类任务,在两种LLM(大语言模型)上,穿插机器人状态信息的提示方式可以提高任务成功率百分比。当结合指令和示例进行提示时,其改进效果最为显著。

 

实验三:借助人类反馈和LLM辅助改进指令式提示。为了评估迭代代码改进中人类反馈的影响,我们在双臂Kuka2x平台的排序任务上评估了两种LLM。表3的结果显示,在经过2-3轮的反馈和提示迭代后,如第2部分所述,成功率达到更高水平。

表格3:基于指令的提示在迭代改进后对双臂Kuka2x规划任务的成功率有着显著提升。这种改进方法可以大幅度提高规划任务的成功率。

 

实验四:实时构建低级运动原语。将前几部分的研究发现应用到实际的低级别机器人控制环境中,我们评估了一个单一的、表达能力强的PromptBook是否仅通过改变输入的任务指令就能自动生成新的运动原语。在一个移动操作器上,我们构建了一个PromptBook,其中包含机器人的描述、其约束条件、包括follow_arm_path()detect_object()gripper()等在内的机器人API函数,以及一个关于在台面上抓取物体的机器人代码示例。可以根据此提示查询并生成针对多个任务的新运动原语(代码在附录中),其中一些例子展示在附录图2中。生成的代码展示了LLM所需的解决这些低级别控制任务所需要的“运动常识”知识,包括理解夹爪相对于物体应该如何定位(例如,抽屉把手垂直抓取,旋钮水平抓取)。在对PromptBook实时生成的运动原语进行量化评估时,我们发现生成的策略可以实现合理成功率,详细数据见表4

表格4:在移动操作器上,LLM生成的运动原语经过50次试验的评估,展示了零样本情况下的真实机器人执行成功率。

 

2:展示PromptBook生成的各种运动实例。值得注意的是,相同的基于指令的提示被复用,仅将特定的低级任务指令替换成(a)挥手动作,(b)搅拌动作,(c)通过把手打开最上面抽屉,以及(d)通过旋钮关闭中间抽屉的动作。

4 讨论与未来工作

我们的工作提出了PromptBook,一种通过人类与LLM反馈来创建和改进新机器人任务领域提示的方法。我们通过UR5单臂机器人、双臂机器人及移动操作器这三个机器人领域的实证演示,证明了PromptBook能够提升LLM在机器人任务规划性能,并能合成新颖的运动原语。尽管我们的研究探讨了不同提示方法之间的权衡,但LLM提示策略和模型的空间广阔无比。对于更复杂任务和系统,通过示例教授复杂概念可能会占据LLM输入上下文的主导地位,同时提供大型API和指令也会产生显著影响。我们可以通过利用具有更长上下文长度的LLM,或高效选择提示令牌的方式,进一步增强PromptBook的功能。

当前,我们合成新颖运动的方法依赖于从视觉模型获取的机器人运动原语和目标姿态信息。如果姿态估计出现误差,或者运动原语本身有误,那么在真实机器人上执行这些新颖运动时的成功率就会受到影响。这一限制并非我们方法特有的;也就是说,任何依赖于对象姿态估计的方法都会面临相似的挑战。在未来,探究如何让LLM重新规划自主补偿上游模型的失效,从而提高成功率,将是一个有趣且有价值的方向。


推荐新闻
RAG系列04:使用ReRank进行重排序
本文介绍了重排序的原理和两种主流的重排序方法:基于重排模型和基于 LLM。文章指出,重排序是对检索到的上下文进行再次筛选的过程,类似于排序过程中的粗排和精排。在检索增强生成中,精排的术语就叫重排序。文章还介绍了使用 Cohere 提供的在线模型、bge-reranker-base 和 bge-reranker-large 等开源模型以及 LLM 实现重排序的方法。最后,文章得出结论:使用重排模型的方法轻量级、开销较小;而使用 LLM 的方法在多个基准测试上表现良好,但成本较高,且只有在使用 ChatGPT 和 GPT-4 时表现良好,如使用其他开源模型,如 FLAN-T5 和 Vicuna-13B 时,其性能就不那么理想。因此,在实际项目中,需要做出特定的权衡。
LangGPT论文:面向大语言模型的自然语言编程框架(中文版)
大语言模型 (Large Language Models, LLMs) 在不同领域都表现出了优异的性能。然而,对于非AI专家来说,制定高质量的提示来引导 LLMs 是目前AI应用领域的一项重要挑战。
第三篇:要真正入门AI,OpenAI的官方Prompt工程指南肯定还不够,您必须了解的强大方法论和框架!!!
自从ChatGPT(全名:Chat Generative Pre-trained Transformer)于2022年11月30日发布以来,一个新兴的行业突然兴起,那就是提示工程(Prompt engineering),可谓如日冲天。从简单的文章扩写,到RAG,ChatGPT展现了前所未有的惊人能力。
(三)12个RAG痛点及其解决方案
痛点9:结构化数据QA 痛点10:从复杂 PDF 中提取数据 痛点11:后备模型 痛点12:LLM安全
(二)12个RAG痛点及其解决方案
痛点5:格式错误 痛点6:不正确的特异性 痛点7:不完整 痛点8:数据摄取可扩展性

联系我们

售前咨询
186 6662 7370
产品演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询