提示词编写指南
为了帮您更快的理解Y-Agent框架的使用方法,需要您了解以下概念。
Function Calling 能力,只需要按照提示词模板填写,即可调用工具。 提示词的构成
提示词模板与系统内置提示词。

- 提示词模板:在此区域,用户可以根据具体需求,自主编写指导大模型执行任务的指令。用户可以利用系统提供的各种模板格式进行填写,系统将自动识别并替换相应的内容,以实现个性化的任务处理。这一设计极大地提升了大模型节点的灵活性和用户操作的便捷性。
- 系统内置提示词:这一部分涵盖了丰富的功能提示词,包括但不限于工具调用、选择下游流程、变量存储、React推理以及任务分身等操作。这些提示词是固定的,由系统程序预先设定,确保了流程的稳定性和可靠性,用户无法对其进行编辑。
系统模板规则
调用系统内置函数可以使用以下关键字,会自动触发提示下拉框,方便您使用:
提示词模板使用 jinja模板,更多语法参考 jinja官方文档。
效果

系统函数 sys.
角色函数 role.
代码块 [空格]
常用提示词案例:
sys:
系统保留字段,集合里包含了系统默认的静态函数
获取系统时间:
当前时间是:{{sys.time()}}判断变量是否null或者为空
is_null_or_empty() (包括数组长度为0的情况)
{% if sys.is_null_or_empty(变量名) %}
变量名是null或者为空
{% else %}
变量名不为null或者不为空
{% endif %}
space:
工作空间变量提取
变量的值是:{{sys.space.变量名称}}知识库文档内容获取 get_document(),根据文档多个id提取对应内容
{{sys.get_document(sys.space.ids)}}返回的是文档的标题和内容:文本形式
chat_room:
聊天室消息提取函数
提取聊天室对话文本内容:(常用)
{{sys.chat_room.get_talks("发送者","接收者").message}}返回的是聊天室对话内容 ["你好","今日阳光明媚"] 提取发送者为张三的全部消息:
{{sys.chat_room.get_talks("张三","").message}}提取接收者为张三的第一条消息:
{{sys.chat_room.get_talks("","张三").message.first[1]}}提取接收者为张三的最后一条消息:
{{sys.chat_room.get_talks("","张三").message.last[1]}}提取聊天室对话json格式内容:(不常用)
返回聊天室中所有消息,包括发送者、接收者、消息内容、发送时间、消息id。 聊天室中消息字段:sender,receiver,message ,send_time,id
{{sys.chat_room.get_talks("张三","").message}}返回的聊天室消息的json格式数据:
[{"id":"id","from_role":"发送者","to_role":"接收者","message":"消息内容","send_time":"时间"}]高级案例:
{{sys.chat_room.get_talks()}}循环以上数据
{% for item in sys.chat_room.get_talks() %}
{{item.from_role}} 对 {{item.to_role}} : {{item.message}}
{% endfor %}【其他客服的回答】:
{% if sys.chat_room.get_talks("参数客服","human")|length != 0 %}
# 另一种写法 if sys.is_null_or_empty(sys.chat_room.get_talks("参数客服","human"))
{{chat_room.get_talks("参数客服","human").message}}
{% endif %}role:
获取 开始/input 节点 用户输入:
{{role.input.user_input}} 获取 开始/input 节点 自定义输入变量值:
{{role.input.自定义输入变量名称.二级变量名称.三级变量名称}}exist()
用于判断角色有没有输出内容,防止直接调用出错的情况
判断角色是否有输出内容,有输出内容返回true,没有输出内容返回false
{% if role.exist("知识补充员")%}
{% endif %}提取角色内【工具】返回值的内容,格式:
{{role.角色名称.工具名称}}注意工具返回值的类型: 知识库返回可循环的json列表,可以使用以下模板内容:
{% for doc in role.文档查询.product_retrieve %}
{"id":"{{doc.id}}","title":"{{doc.title}}"}
{% endfor %}
知识库返回单个json对象格式:
{"id":"xxxxxx","score":0.50,"title":"这个是知识标题","content":"知识内容markdown格式"}如果知识库返回的文本:
{{role.文档查询.product_retrieve}} #文档查询为角色名提取角色特殊的输出,如果角色没有执行任何工具,仅仅输出了一段文本,可以使用以下方式提取输出的内容
{{role.角色名称.output}}提取角色特殊的输出,如果变量存储到了角色自身,可以使用以下格式提取
{{role.角色名称.output.变量名称}}其他案例
# 判断变量是否null或者为空(包括数组长度为0的情况)
{% if sys.is_null_or_empty(变量名) %}
{% if space.ids|length == 0 or space.get_document(space.ids)|length ==0 %}
{% if space.ids is empty or space.get_document(space.ids) is empty %}
{% if space.ids is not empty and space.get_document(space.ids) is not_empty %}执行器
直接执行内部函数:
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(receiver="填写角色名称",message="填写消息的内容")|>|
向用户发送消息
-
notify:给用户发送消息的函数,发送后流程继续执行:
-
terminate:给用户发送结束消息的函数,发送后流程不在继续执行未开始的节点:
notify 工具介绍:这个工具可以把答案发送给用户
notify 工具指令:command=|<|notify(message="填写回答的内容") |>|
terminate 工具介绍:和notify工具类似,除此之外,此工具触发后,流程不再执行任何节点,等同于流程结束(已经在运行的节点,会运行到完毕)。
terminate 工具指令:command=|<|terminate(message="填写回答的内容") |>| - 手动触发下游角色执行的函数,指定某个下游角色执行后续流程:
assignment 工具介绍:用于指定某个下游角色执行后续流程。
assignment 工具指令:command=|<|assignment(next_roles=[{"role":"角色1","message":"消息1"},{"role":"角色2","message":"消息2"}]) |>| - 给其他角色发送消息的函数,仅向聊天室给指定用户发送了一条消息:**
send_message 工具介绍:用于向指定角色发送消息。
send_message 工具指令:command=|<| send_message(receiver="填写角色名称",message="填写消息的内容") |>| 测试相关提示词
为了方便测试,可以使用大模型为测试结果打分,此时需要编写提示词模板,需要用到以下变量:
## 本次测试的输入内容
{{input}}
## 参考答案
{{right_answer}}
## 测试结果
{{answer}}
## 评分准则
{{test_standard}}编辑系统内置默认提示词
修改的时候需要严格遵循默认提示词的格式,否则会导致系统报错。
ReAct推理提示词:在ReAct推理开启后可编辑
{
"prompt_step_part":"以下是推理过程:\n\n{step}\n\n",
"prompt_think_part":"第{react_times}轮推理过程:\n\n{think}\n【工具执行结果】:{return_value}\n\n",
"prompt_guide_part":"分析以上信息并进行思考,按照以下格式输出:\n【思考】:填写你的分析过程\n【工具指令】:填写你使用的工具指令,工具指令必须以\"command=|<|\"开始,以\"|>|\"结束\n",
"prompt_end_guide_part":"请停止推理查询,使用以上信息回答问题,按照以下格式输出:\n【思考】:填写你分析的问题答案\n【工具指令】:填写最终回答工具指令,工具指令必须以\"command=|<|\"开始,以\"|>|\"结束\n"
}注意:里面的关键字,例如,prompt_step_part {step} 还有JSON格式,不要改动,否则会导致系统报错。
自动选择下游角色提示词:在 下游角色 自动选择 开启后可编辑
assignment 工具介绍:用于从“可选角色列表”中筛选出适宜的角色,进行处理下一步任务。
assignment 工具指令:command=|<|assignment(next_roles=[{"role":"填写选择的角色","message":"填写角色的任务内容"},{"role":"填写选择的角色","message":"填写角色的任务内容"}])|>|存储变量提示词
write_var 工具介绍:用于将答案/结果/输出内容存储到特殊的位置。
write_var 工具指令:command=|<|write_var({variables_json})|>|variables_json 是系统保留关键字,会自动渲染成需要存储的变量的json格式数据,请不要修改。
如何恢复默认提示词?
重置按钮可以恢复默认。
注意修改后的提示词,不会自动记录版本,恢复默认后只能在流程日志里找找看了。
How is this guide?
最后更新