HuggingFists-低代码玩转LLM Agent-思考

    LLM Agent是目前业界共识的另外一个热门方向。在该应用模式下,LLM被当作了Agent的大脑,主要使用其推理、规划及工具调用能力。笔者非常喜欢这种将LLM作为大脑的比喻。因为,按照我们对生物的认知,一旦有了大脑,就必然会需要感观、行动等器官帮助大脑完成与周围环境的信息交换,以便做出相应的行为决策。而各类工具就扮演了这些不同种类的器官。

    学术界对于Agent的研究如今百花齐放,各种Prompt的改进模式也层出不穷。笔者也对Agent的发展有了一些思考,主要是基于工程落地的,而不是学术的。当我们将LLM Agent带到行业或客户现场时,如果希望充分发挥LLM所扮演的大脑角色,就需要Agent能够充分了解客户的环境,能够最大程度的实现与环境的对接。比如需要读取某个关系数据库中的数据,需要访问某个应用系统的接口,需要向某个设备发出控制指令等。因为客户不同、项目要求不同,所以很多情况下我们不太容易做出特别匹配客户环境的Agent,必须要结合客户的环境进行定制改善。那么这种定制必然会增大项目实施成本及交付效率。如果能有效降低这种定制实施成本,则能够加速Agent的工程落地。因此,有了使用HuggingFists这个低代码平台来解决这个问题的思路。使用HuggingFists可以快速的,根据客户环境,以拖、拉算子的方式搭建出数据库访问、应用接口调用以及设备控制等流程,快速适配客户的环境。另外,其对LLM提供了标准调用接口,即LLM只需要学会如何调用HuggingFists的接口即可。而环境中各种差异接口的调用由HuggingFists来完成,以屏蔽环境对LLM的复杂性。HuggingFists目前支持300+种算子,能够适配一定通用场景的应用。对于特定仍需开发的场景,使用者可以通过其算子开发标准自行扩展。使用者可积累出针对行业的特定算子并在后续的同类项目中使用。

    一如我们前面讨论的,客户环境的不同,需求的不同,那么所需的工具也不尽相同且数量可能是巨大的。以ReAct框架的一般Prompt示例为例:

"""

按照给定的格式回答以下问题。

你可以使用下面这些工具:

{tools}

回答时需要遵循以下用---括起来的格式:

---

Question: 需要回答的问题

Thought: 回答这个上述我需要做些什么

Action: {tool_names}中的其中一个工具名,一定要在{tools}之中

Action Input: 选择工具所需要的输入

Observation: 选择工具返回的结果

...(这个思考/行动/行动输入/观察可以重复N次)

Thought: 我现在知道最终答案

Final Answer: 原始输入问题的最终答案

---

现在开始回答,记得在给出最终答案前多按照指定格式进行一步一步的推理。

Question: {input}

"""

ReAct Prompt示例

    示例中我们可以看到,需要将所有的工具都填充到Prompt的{tools}变量的位置,以方便LLM知道如何调用工具。但如我们之前提到的,用户的可用工具可能非常多,我们无法将这么多的工具都放入Prompt,那样极可能会超出LLM可接受的上下文范围,并且会有巨大的tokens消耗。为此,笔者的思考是,在整个交互过程中为LLM加入一步获取相关工具集的步骤。即LLM规划解决问题的思路,向外部工具集系统查询当前步骤所需的工具,工具集系统返回相关工具集合,LLM按照工具说明推断需要使用的工具,选中工具,明确参数,调用工具……,直到获得最终的答案。

    该方案可有效降低Prompt的tokens用量,可更好的实现客户环境中LLM Agent的应用落地,笔者将在后续的文章中,利用HuggingFists系统给出应用示例。

你可能感兴趣的:(低代码,人工智能,自然语言处理,LLM,Agent,ReAct,智能体)