本文介绍在智能体和工作流中如何动态修改提示词。通过设置变量,并动态传入变量的值,开发者可以灵活调整提示词,以便提升智能体的适应性和灵活性,使其能够根据不同的用户需求和场景动态调整输出。例如多语言支持、个性化回答或特定领域的问答。
智能体支持在人设与回复逻辑中设置提示词变量,调用发起对话 API 时,通过 custom_variables 参数动态替换变量的值。无需将提示词硬编码为固定内容。本文以翻译场景为例,演示如何在智能体中动态修改提示词。
在智能体的人设或回复逻辑中,使用双大括号定义可替换的变量,例如 {{language}}。发布智能体。
调用发起对话 API 时,通过 custom_variables 参数传入提示词变量及其对应的值。
custom_variables 中的变量名需与智能体提示词中双大括号中的变量完全一致。在本场景中,变量名为language,通过设置不同的值,可以动态修改提示词。示例代码如下:
curl --location --request POST 'https://api.coze.cn/v3/chat?' \
-H 'Authorization: Bearer pat_hfwkehfncaf****' \
-H 'Content-Type: application/json' \
-d '{
"bot_id": "734829333445931****",
"user_id": "12345678***",
"stream": true,
"additional_messages": [
{
"content": "你好",
"content_type": "text",
"role": "user",
"type": "question"
}
],
"custom_variables": {
"language": "英文"
}
}'
在 language 中设置翻译为英文,智能体将自动将用户输入的内容翻译成英文并返回结果。
在 language 中设置翻译为法文,智能体将自动将用户输入的内容翻译成法文并返回结果。
在对话流中,你可以在对话流的开始节点定义自定义参数(例如 prompt),并在执行对话流时通过 parameters 参数动态传入自定义参数的值,从而实现提示词的动态修改。
在对话流的开始节点添加一个自定义参数,例如 prompt。
prompt 和 USER_INPUT 参数,参数的值分别引用开始节点的 USER_INPUT 和 prompt。{{prompt}} 变量,通过变量动态传入提示词。在用户提示词中,引用 {{USER_INPUT}} 变量,获取用户实际输入的内容。调用 执行对话流 API,在 parameters 参数中传入自定义参数及其对应的值。
parameters 参数中的变量名需与工作流中定义的变量名保持一致。在本场景中,变量名为 prompt,通过设置不同的值,可以动态修改系统提示词。示例代码如下:
curl --location --request POST 'https://api.coze.cn/v1/workflows/chat' \
-H 'Authorization: Bearer pat_hfwkehfncaf****' \
-H 'Content-Type: application/json' \
-d '{
"parameters": {
"prompt": "将用户的输入翻译为英文"
},
"workflow_id": "74423***",
"bot_id": "7439828073***",
"conversation_id": "74834801244913****",
"additional_messages": [
{
"content": "你好",
"content_type": "text",
"role": "user",
"type": "question"
}
]
}'
设置 prompt 参数为将用户的输入翻译为英文,智能体将自动将用户输入的内容翻译成英文并返回结果。
设置 prompt 参数为续写用户输入,智能体将根据用户的输入内容生成后续内容,实现文本续写功能。