工作流概念
为了帮您更快的理解Y-Agent框架的使用方法,需要您了解以下概念。
界面布局

屏幕左侧
节点区域,有以下节点类型
大模型:
作为AI工作的核心功能模块,依托大模型的推理能力,可以实现以下功能:
工作流工具
在Y-Agent中,流程可以做工具,提供给其他流程使用。 将流程设置为工具.
插件工具
为了便于和外部系统交换数据,提供了外部WebAPI转成插件的接口。 将WebAPI作为工具.
屏幕右侧
画布区域,用于流程编排。
工作空间:
类似于人类协作的方式,可能存在 多个角色 共同编辑同一个变量。
所以定义了一个用于公共操作的空间“工作空间变量”,在提示词模板中使用“space”作为标记。
工作空间变量 分为以下三种类型,以满足不同的数据处理需求:
- 此类变量在赋值时将覆盖原有数据,所以只会保留最后一次的值。
例如:space.name 格式为 String
space.name = "张三"
space.name = "李四"
变量存储的值为:
李四
开始节点
开始节点,作为AI-Agent工作流的起点,负责加载用户输入数据,需要自定义输入变量(防止没有变量的情况,user_input 作为默认变量)。
结束节点
本系统无需单独设置结束节点。,框架可以自动确定结束时机。
自动结束机制:
- 所有根据内置算法,判定节点均已执行完毕
- 某个节点输出了 command=|<|terminate(message="")|>| 指令。系统会停止所有后续节点的执行。
聊天室
- 聊天室是用于流程内多个角色沟通消息的地方。
- 比如上游角色向下游角色分配任务目标,可以写入聊天室。 例子:
command=|<|assignment(next_roles=[{"role":"角色1","message":"消息1"},{"role":"角色2","message":"消息2"}])|>|
也可以通过 触发函数: command=|<|send_message(receiver="填写角色名称",message="填写消息的内容") |>| 向指定角色发送消息。
-
聊天室内的消息不设置权限,任何节点都可以查询使用,类似于人类在聊天软件里群聊。
-
节点向用户发送的消息也会存入聊天室。
-
在画布中不体现聊天室内容,聊天的内容需要在流程运行日志或者测试流程日志界面查看:

其中 from_role 代表消息发送者, to_role 是消息接收者(可以为空)。
human 代表用户,此时用户会收到消息,
如果整个流程没有任何接收者为 human 的消息,那么用户将不会收到任何消息(也就是说流程没有输出信息)。更多聊天室消息请查看:聊天室消息.
提示词相关
在Y-Agent中,有一套自己的提示词规范,可以帮助用户方便稳定的搭建流程。
主要概念:
提示词模板使用jinja语法, 模型的提示词分成以下几部分,可以组合使用:
- 用户提示词,注意用户编写的提示词,在系统内会自动记录版本,方便查看对比。版本记录由提示词模块管理。
- 框架提示词,框架会根据当前流程的各种变量,自动生成的提示词。用户也可以修改,覆盖默认值。
分身
分身是一种把 单个 提示词拆分成 多个提示词的技术。类似于孙悟空,拔毛分身成多个,然后同时做不同的事情。
拆分好的提示词,相当于多个分身,会并发的调用大模型。
分身(拆分任务)的好处:
- 减少模型推理时间,提升效率。
- 让模型专注某一个任务,减少干扰,提升准确率。
因为大模型节点可以配置以下任务:
- 使用工具。
- 自动选择下游角色。
- 输出参数。
所有分身最多会有三个。同时分身功能和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。

工具调用格式
本系统 不依赖 任何模型的 Function Calling 能力,只需要按照提示词模板,即可调用工具。
内置的工具的调用格式:
command=|<|工具名称(参数名=参数值,参数名=参数值...)|>|系统内置的函数有:
command=|<|notify(message="向用户发送消息。")|>|
command=|<|terminate(message="向用户发送消息并终止流程。")|>|
command=|<|write_var(ids=[{{}}])|>| # 写变量
# 选择下游角色 并分配任务
command=|<|assignment(next_roles=[{"role":"角色1","message":"消息1"},{"role":"角色2","message":"消息2"}]) |>|
command=|<|send_message(role="角色1",message="向其他角色发消息")|>| # 向其他角色发消息更多提示词使用方法和说明 请参考:提示词编写指南.
How is this guide?
最后更新