简介
一些特别的概念和设计思路,如果不想看,可以跳过。
Y-Agent
Y-Agent,设计目标是 最大化运行效率 和 应对复杂业务场景 ,这里主要介绍和大部分Agent框架不一样的特点。
核心功能
功能 | 功能描述 |
---|---|
复杂流程编排 | 有向有环图:多路并行、循环依赖执行、多上游依赖、自动选择下游节点、流程嵌套、自动结束等 |
节点间消息传递 | 全局变量传递、单节点变量传递、消息聊天室、工具结果传递 |
知识库RAG | 文本知识库、表格知识库 |
多轮推理ReAct | 系统内置ReAct能力 |
测试 | 单元测试、流程测试 |
并发设计 | 多任务分身 |
训练语料生产 | 预训练、SFT、强化学习 |
系统架构图
核心概念
流程图
流程图就是核心组件,支持可视化编排,可以多智能体和固定流程混合模式。
有向有环图
流程图的核心是有向有环图,可以实现以下流程:
结束条件
流程只有开始节点,不设置结束节点,会自动判断结束时机。
结束条件:
- 所有根据内置算法,判定节点均已执行完毕
- 某个节点输出了
command=|<|terminate(message="")|>|
指令。系统会停止所有后续节点的执行。
分身
分身是一种把 单个 提示词拆分成 多个提示词的技术。类似于孙悟空,拔毛分身成多个,然后同时做不同的事情。
拆分好的提示词,相当于多个分身,会并发的调用大模型。
分身(拆分任务)的好处:
- 减少模型推理时间,提升效率。
- 让模型专注某一个任务,减少干扰,提升准确率。
因为大模型节点可以配置以下任务:
- 使用工具。
- 自动选择下游角色。
- 输出参数。
所有分身最多会有三个。同时分身功能和ReAct是互斥的。
具体案例,可以查看Y-Agent框架安装好,自带的案例。
提示词会被安装如下方式处理:
使用工具计算用户的输入,同时向模型2传达再次复查的指令。
用户输入:五百除以123
所有计算必须使用工具,不要输出其他指令。
注意:工具指令不可篡改,不可遗漏,必须以command=|<|开始,以|>|结束。
calculator 工具介绍: 计算器工具,用于执行数学表达式。。
calculator 工具指令:command=|<|calculator(expression="填写要计算的数学表达式")|>|
write_var 工具介绍:用于将答案/结果/输出内容存储到特殊的位置。
write_var 工具指令:command=|<|write_var(num1='用户问题里的第一个数',num2='用户问题里的第2个数')|>|
可选角色列表:
| 角色 | 角色职责 |
|-|-|
| 大模型_2 | 2 |
| 执行器 | 用于通过模板直接执行系统函数,可以通过jinja模板编写处理逻辑 |
assignment 工具介绍:用于从“可选角色列表”中筛选出适宜的角色,进行处理下一步任务。
assignment 工具指令:command=|<|assignment(next_roles=[{"role":"填写选择的角色","message":"填写角色的任务内容"},{"role":"填写选择的角色","message":"填写角色的任务内容"}])|>|
以上分身是同时运行的,这样既保证速度,效果又好。缺点是,浪费token。
效果如下:
工作空间
类似于人类协作的方式,可能存在 多个角色 共同编辑同一个变量。
所以定义了一个用于公共操作的空间“工作空间变量”,在提示词模板中使用“space”作为标记。
工作空间变量 分为以下三种类型,以满足不同的数据处理需求:
- 此类变量在赋值时将覆盖原有数据,所以只会保留最后一次的值。
例如:space.name 格式为 String
space.name = "张三"
space.name = "李四"
变量存储的值为:
李四
聊天室
聊天室里存放各个节点间的消息传递,以及接待您发送给用户的消息,可以实现多Agent协作。
了解更多细节 聊天室
How is this guide?
最后更新