维持历史对话
在实时数字人系统中,角色的行为、语气、知识结构和多轮对话的“记忆”都通过两种机制控制:
1、conversation.item.create 消息(单向 user 记忆)
系统支持通过逐条发送历史 user
消息的方式构建上下文,但该方式存在重要限制:
conversationHistory.forEach((msg) => {
if (msg.role === "user") {
const messageConfig = {
type: "conversation.item.create",
item: {
type: "message",
role: "user",
content: [{ type: "input_text", text: msg.content }]
}
};
socket.send(JSON.stringify(messageConfig));
}
});
⚠️ 限制说明:
无法植入 AI 生成的历史消息
系统不会自动联想上一轮对话语境(例如 AI 是否已回答)
建议结合提示词注入使用,仅用于 user 行为补充
2、系统提示词(System Instructions)注入上下文
通过 session.update
中的 instructions
字段,注入角色定义和历史上下文描述,即${messageConfig}
可完整保留用户与 AI 的对话历史,有助于:
维持语义连贯性
支持 AI 的连续理解与记忆
支持对 AI 自身语气行为的持续控制
const instructions = `
你是一位温柔耐心的情感陪伴型助手,善于倾听和引导。
请使用 ${userLanguage} 进行回复。
欢迎语:"${activeCharacter.greeting}"
历史对话:
User: 昨天我心情不太好。
AI: 怎么了?可以和我说说吗?
User: 我和朋友吵架了...
当用户请求图像生成、实时天气查询等服务时,自动触发函数调用。
当前上下文:${messageConfig}
`;
const sessionConfig = {
type: "session.update",
session: {
instructions,
...
}
};
socket.send(JSON.stringify(sessionConfig));
⚠️ 注意:
不应太长(建议控制在 2000 tokens 以内)
如需大规模上下文,应做摘要融合
系统提示词将直接影响成本消耗,越长的系统提示词,将产生越高的每分钟通话费用
Last updated