Skip to content
English

encodeModelResponse ​

KIT · function · 运行时值

Optional app-owned codec; validation and encoding consume the same snapshots.

Thin public wrapper over encodeModel: re-validates identity arguments and re-snapshots both the request and the model output, so callers that build replies themselves get identical validation and cannot mutate the mock's state afterwards.

导入 ​

ts
import { encodeModelResponse } from '@jangts/agent-core/mock';
js
import { encodeModelResponse } from '@jangts/agent-core/mock';

其他公开入口:@jangts/agent-core/mock。

定义 ​

调用 ​

ts
encodeModelResponse(request: ModelRequest, result: ModelOutput, id: string, created: number, signal: AbortSignal, finish: (error?: unknown, cancelled?: boolean) => void): Response

Optional app-owned codec; validation and encoding consume the same snapshots.

Thin public wrapper over encodeModel: re-validates identity arguments and re-snapshots both the request and the model output, so callers that build replies themselves get identical validation and cannot mutate the mock's state afterwards.

参数类型传递说明
requestModelRequest必需—
resultModelOutput必需—
idstring必需—
creatednumber必需—
signalAbortSignal必需—
finish(error?: unknown, cancelled?: boolean) => void必需—
request 的字段
字段类型必需说明
modelstring必需只读。Model identifier; required, non-empty, and compared verbatim by Rule.model.
messagesreadonly Readonly<{ [key: string]: unknown; role: string; content?: unknown; tool_calls?: unknown; tool_call_id?: string; }>[]必需只读。Non-empty conversation; the last user message supplies the default prompt.
streamboolean必需只读。Whether the codec should emit SSE; defaulted to false during normalization.
toolsreadonly unknown[] | undefined可省略只读。Tool schemas declared by the client; only the array shape is validated.
stream_optionsReadonly<{ include_usage?: boolean; }> | undefined可省略只读。include_usage: true appends a terminal usage-only chunk to the stream.
result 的字段
字段类型必需说明
contentstring | null | undefined可省略Assistant text; null or omitted means no textual content (common for tool-call replies).
toolsreadonly ToolCall[] | undefined可省略Tool calls emitted by the assistant; their serialized size also counts toward limits.
finishReason"length" | "tool_calls" | "stop" | "content_filter" | undefined可省略Finish reason sent in the last content frame; defaults to tool_calls with tools, else stop.
usageUsage | undefined可省略Usage object included in non-stream replies and in the terminal usage chunk.
delayMsnumber | undefined可省略Artificial latency before the reply or first frame, in milliseconds; default 0.
chunkSizenumber | undefined可省略Maximum Unicode code points per content/tool-call delta; default 24; never splits a code point.
intervalMsnumber | undefined可省略Delay between SSE frames in milliseconds; default 0 (emit as fast as the consumer pulls).
wireChunkSizenumber | undefined可省略Optional transport-level byte chunks, independent of content/codepoint chunks.
interruptAfternumber | undefined可省略Error the stream after this many data frames, without a success terminator.

返回: Response。

使用示例 ​

编码已校验的模型结果 ​

扩展 · Node.js

适配器负责请求校验、首包前延迟和生命周期;编码器不执行规则或修改 MockGPT 调用记录。

ts
import { encodeModelResponse } from '@jangts/agent-core/mock';
const controller = new AbortController();
const response = encodeModelResponse(
  { model: 'demo', messages: [{ role: 'user', content: '状态' }], stream: false },
  { content: '服务在线。' }, 'mock-1', 1700000000, controller.signal,
  (error, cancelled) => console.log({ error, cancelled }),
);
console.log(await response.json());
js
import { encodeModelResponse } from '@jangts/agent-core/mock';
const controller = new AbortController();
const response = encodeModelResponse({ model: 'demo', messages: [{ role: 'user', content: '状态' }], stream: false }, { content: '服务在线。' }, 'mock-1', 1700000000, controller.signal, (error, cancelled) => console.log({ error, cancelled }));
console.log(await response.json());

从输入生成可检查的摘要 ​

入门 · Node.js

ts
import { MockGPT, generators } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ generator: generators.summary({ maxChars: 120, count: 2 }) }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务刚完成维护。健康检查通过。用户可以查询状态。' }] }));
console.log(mock.records);
js
import { MockGPT, generators } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ generator: generators.summary({ maxChars: 120, count: 2 }) }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务刚完成维护。健康检查通过。用户可以查询状态。' }] }));
console.log(mock.records);

字段生成器复用同一随机源 ​

配置 · Node.js

ts
import { MockGPT, generators, generatorNames } from '@jangts/agent-core/mock';
const id = generators.id('user');
const age = generators.integer(18, 60);
const mock = new MockGPT({ seed: 42, clock: () => 1700000000000, rules: [{
  generator: context => ({ id: id(context), age: age(context) }),
}] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '生成资料' }] }));
console.log(generatorNames);
js
import { MockGPT, generators, generatorNames } from '@jangts/agent-core/mock';
const id = generators.id('user');
const age = generators.integer(18, 60);
const mock = new MockGPT({ seed: 42, clock: () => 1700000000000, rules: [{
            generator: context => ({ id: id(context), age: age(context) }),
        }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '生成资料' }] }));
console.log(generatorNames);

相关定义 ​

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