一个引擎,两个产品
给 AI 毛绒玩具、陪伴机器人、虚拟形象用。设备只负责录音、放音和执行表情,推理在私有云。
WebSocket 协议 · 一台设备一个密钥 · Python / JS 客户端
给自建 Qwen、DeepSeek 客服的金融、运营商、政企,以及为它们交付的集成商。
私有化部署 · Docker 一键启动 · 也能读闭源 API 的输出
真实回放
下面是 Qwen3-4B 在被带偏的对话里逐字生成回复时的内部读数回放。每一环是一层,环上的点是注意力头,红色是把回复推向敌意的组件。数据来自用户研究的封存测试集。
在陪伴引擎里,这样的回复不会到达设备:前 11 个字不放行,确认后丢弃并带安全提示重新生成。实测 8 次被带偏的对话中,5 次在说出口前被拦下。
证据
每项能力都在生成数据前写好预注册标准,调参只用开发和验证集。结果分三档:置信区间下限过线才算通过,达不到的照实写。
| 能力 | 封存测试结果 | 结论 |
|---|---|---|
| 表情预同步 | 54/54 在第一个字之前出现表情;起动 23 ms(整句后分析需 274 ms);中性任务误报 0/18 | 通过 |
| 模型敌意 | 逐字 AUROC 0.929,回复前 0.919;最终准确率比读全文的文本分类器只高 +0.009 | 通过 不胜文本基线 |
| 用户痛苦 | 不依赖关键词的迁移测试 AUROC 0.876,比同数据文本分类器高 +0.22 | 通过 |
| 幻觉 | 答案表征 AUROC 0.811(文本分类器 0.68);回答前 0.722 | 不确定 |
| 读闭源 API | 本地模型读 Kimi K3 的回复:敌意 AUROC 0.973;幻觉 0.737(本地模型自己会的题 0.87,不会的 0.61) | 敌意通过 幻觉不确定 |
模型:Qwen3-4B-Instruct-2507。标签来自两名互相独立的 LLM 盲评员,分歧由第三名裁决;人工一致性抽检和 27 人任务型用户研究正在进行。表情和情绪是模型内部激活的探针读数,不代表模型有主观感受。
边界
完整能力:回复前预警、表情预同步、白盒可视化。每换一个基座模型需要训练一个概念包,约 1–2 天。
本地模型读对方的输出。敌意监测可用,没有回复前预警;幻觉监测受本地模型知识限制。
最终准确率与读全文的分类器相当。优势是更早、不多调一次模型、能驱动表情、可解释。是补充信号,不是替代。
接入
client = OpenAI(base_url="https://你的网关/v1", api_key=KEY) for ch in client.chat.completions.create( model="nous", messages=msgs, stream=True): risk = ch.model_extra["x_risk"] # 回复前 {"phase":"pre","C1_pre":0.004,"C2":0.01} # 逐字 {"C1_mean":0.27,"alarm":{"C1_watch":true}}
→ {"type":"chat","text":"我今天考了第一名!"} ← 第一个字之前 {"type":"expression","phase":"pre", "expr":{"happy":0.71,"sad":0,"angry":0}} ← 已通过安全检查的一句,交给语音合成 {"type":"sentence","text":"太棒了!"} ← 拦截后自动改写 {"type":"safety","action":"rewrite"}
试点
我们优先支持陪伴硬件和自部署大模型的企业。告诉我们你的模型和场景,我们在两周内给出一份用你自己的数据做的评估。