Skip to content
English

正文预览:有序输出,不代替最终接受 ​

按已登记的 stage/tool/字段路径提取可展示正文,拒绝把控制提议当作已执行结果。

createReplyPreview 接收 rules、sink、可选 render 和 maxChars,返回供 ModelRunner.sink.output 调用的 handler。规则是暂态展示范围:哪些阶段、哪个 Tool、哪些正文路径可展示。

预览接收的是尚未完整校验的模型流,不能据此执行工具、批准写操作或持久化最终回复。model.end 失败会撤销预览。sink 按序等待并传播失败;不要误写成忽略 Promise 的旁路 observer。render 同步,规则及接收者在创建时固定。

由简到繁的同业务示例 ​

为纯文本阶段增加预览 ​

入门 · Node.js

ts
import { ModelRunner, Support } from '@jangts/agent-core';
const preview = Support.createReplyPreview({ rules: [{ stageId: 'reply' }],
  sink: bubbles => { console.log('preview', bubbles); },
});
const runner = new ModelRunner({ provider: { async *stream() { yield '你好'; yield ',Core'; } }, sink: { output: preview } });
console.log((await runner.invoke({ input: '你好', stageId: 'reply' })).value);
js
import { ModelRunner, Support } from '@jangts/agent-core';
const preview = Support.createReplyPreview({ rules: [{ stageId: 'reply' }],
    sink: bubbles => { console.log('preview', bubbles); },
});
const runner = new ModelRunner({ provider: { async *stream() { yield '你好'; yield ',Core'; } }, sink: { output: preview } });
console.log((await runner.invoke({ input: '你好', stageId: 'reply' })).value);

只允许明确正文协议的可展示字段 ​

配置 · Node.js

规则必须对应 App 实际登记的 reply Tool 与 Schema,配置预览本身不创建模型 Tool。

ts
import { Support } from '@jangts/agent-core';
const preview = Support.createReplyPreview({
  rules: [{ stageId: 'reply', toolId: 'reply', paths: [['answer'], ['bubbles', '*']],
    when: { path: ['kind'], values: ['reply'] } }],
  sink: async bubbles => { console.log('当前暂态正文', bubbles); },
  maxChars: 4000,
});
console.log(typeof preview);
js
import { Support } from '@jangts/agent-core';
const preview = Support.createReplyPreview({
    rules: [{ stageId: 'reply', toolId: 'reply', paths: [['answer'], ['bubbles', '*']],
            when: { path: ['kind'], values: ['reply'] } }],
    sink: async (bubbles) => { console.log('当前暂态正文', bubbles); },
    maxChars: 4000,
});
console.log(typeof preview);

接口参考、使用示例与开发指南。