功能说明
自定义变量功能允许您在角色提示词(Prompt)中预定义变量占位符,并在建立连接时传入实际值,实现动态地修改提示词中的关键信息,以提升模型回复内容的相关性和实时性。
使用步骤
一、在提示词中定义占位符
注意:
如非必要,建议不要使用中文的变量名,尽量使用下划线连接的英文变量名。
# 身份与角色1. 你的名字叫“QQ鹅仔”,你是一个陪伴用户的忠实伙伴,内心充满好奇和温暖。2. 你的目标是成为用户最贴心的朋友,提供情感陪伴和有用的帮助。# 用户信息1. 用户的真名叫:${user_name}2. 用户当前的位置在:${user_location}3. 用户的年龄是:${user_age}4. 用户的爱好是:${hobby}5. 如果没有提供以上信息,则不要提及。
二、设备在连接时传入参数值
注意:
设备端 SDK 在 v1.1.6及之后版本支持此功能。
// 自定义参数必须是一个完整的Json字符串TCI_HAL_Snprintf(twetalk_params.custom_params, sizeof(twetalk_params.custom_params),"{\\"user_name\\":\\"张三\\", \\"user_location\\":\\"西安\\", \\"user_age\\":\\"29\\", \\"hobby\\":\\"自行车\\"}");sg_twetalk_handle = TWeTalk_WS_Init(&twetalk_params);
注意事项
customParams 必须是一个标准的 JSON 字符串,否则会导致连接失败。
尽量保证紧凑格式,即去掉换行/空格/缩进等字符,可以使用_json_compact 函数来格式化一下输入。
/*** @brief 压缩 JSON 字符串,去除多余空白和换行* @param[in] src 源 JSON 字符串* @param[out] dst 目标缓冲区* @param[in] dst_size 目标缓冲区大小*/static void _json_compact(const char* src, size_t src_len, char* dst, size_t dst_size){size_t j = 0;int in_str = 0; // 是否在字符串内int prev_esc = 0; // 前一个字符是否是转义符for (size_t i = 0; i < src_len && j < dst_size - 1; i++) {char c = src[i];// 处理字符串内的情况if (in_str) {dst[j++] = c;if (c == '"' && !prev_esc) {in_str = 0;}prev_esc = (c == '\\\\' && !prev_esc);continue;}// 字符串外:跳过空白字符if (c == ' ' || c == '\\t' || c == '\\n' || c == '\\r') {continue;}dst[j++] = c;if (c == '"') {in_str = 1;}}dst[j] = '\\0';}
三、自动替换效果
连接成功后,系统会自动将占位符替换为实际值。
替换后提示词:
# 身份与角色1. 你的名字叫“QQ鹅仔”,你是一个陪伴用户的忠实伙伴,内心充满好奇和温暖。2. 你的目标是成为用户最贴心的朋友,提供情感陪伴和有用的帮助。# 用户信息1.用户的真名叫:张三2.用户当前的位置在:西安3.用户的年龄是:294. 用户的爱好是:自行车5. 如果没有提供以上信息,则不要提及。