Skip to content

UranAgents系统设计

UranAgents采用了基于大模型Plan思维链条(chain-of-thought)的能力,结合提示词将任务拆解成子任务,然后结合子任务的

运行结果进行自我反思和调整,最终完成用户任务。为了提高成功率重点在于任务的拆分与反馈,子任务的轻量化以及智能化。

1. 体系结构

system_structure

2. 组件

Planner: 计划组件,大模型(LLM)结合提示词工程生成对应的子任务序列组成的计划。

TaskExecutor: 任务执行器,接收计划组件拆分的子任务进行执行。在执行过程中结合提示词工程调用对应工具返回结果。

Tools: 注册到Agents系统的工具程序,可以是API,也可以是本地调用的一个函数

Memory: 记录交互过程中的对话和执行历史,在新一轮计划迭代的时候将历史合并为提示词给大模型进行计划更新

TaskExecutor, Tools都可以是不同的Agent方案实现,由Planner统一规划调用。

3. 工作流

a. 用户提交问题到Planner, Planner根据提示词和示例调用大模型进行任务规划。将问题拆分成多个子任务调度执行。

b. Planner在执行调度子任务之前会从Memory中合并历史记录,及时调整任务计划,根据最新计划选择当前任务。

b. TaskExecutor接收到Planner提交的一个子任务,结合提示词、示例以及合并Memory中Task相关的历史,调用大模型选择对应的工具和填充调用参数

c. TaskExecutor调用工具并返回结果,将结果交给大模型进行判断决定是否需要调整参数重新调用或者返回给Planner

d. 重复b-c步,直到确认任务完成或者超过设置的最大步骤将结果返回用户

4. 时序图

sequece_diagram

流程说明:

a. 初始化的时候载入可能需要的工具

b. 当用户请求来的时候进入计划循环流程

c. Planner首先从Memory查询计划历史,合并成提示词提交UranMModel得到计划或者更新计划

d. 解析结果决定是否可以往后执行或者需要反馈调整等

e. 按照当前步骤进行执行,Planner提交任务到TaskExecutor

f. TaskExecutor依据当前执行TaskId查询历史,整合提示词,调用大模型选择工具Tool

g. TaskExecutor调用工具,根据结果调用大模型决定后续流程,可能重新调用工具可能返回Planner

h. 循环c-g步,直到可以返回用户或者超过最大执行步骤

后续计划

先根据当前的设计研发评估效果,根据评估结果再进行调整

Agents相关的方法论也在不断更新,后续可能会支持多种Agent框架或者多Agents框架,具体根据任务选择实现

参考资料

[1] Autogen. Available at: https://github.com/microsoft/autogen. Accessed on[11/22/2023].

[2] Semantic kernel. Available at: https://github.com/microsoft/semantic-kernel. Accessed on [11/22/2023].

[3] OpenAI. https://platform.openai.com/docs/assistants/overview

[4] TaskWeaver. Available at https://github.com/microsoft/TaskWeaver/. Accessed on [1/23/2024]