Skip to content
English

MockGPT:响应描述与场景生成器 ​

固定结果用于严格回归,输入相关生成器用于探索接线,显式响应描述用于故障和流式场景。

responses.text(text,options?)、toolCalls([{name,arguments,id?}],options?)、httpError(status,body)、reject(message) 返回 ResponseDescription。普通 JSON 不会因为字段相似就成为传输指令。HTTP 故障状态必须为400—599且有 body,工具提议必须提供 arguments;直接构造 ResponseDescription 也执行相同规则校验。

OutputOptions 提供 delayMs、chunkSize、intervalMs、wireChunkSize、interruptAfter、finishReason、usage。内容分片按码点,wireChunkSize 按编码字节;中断不补成功终止帧。generate 返回描述本身;fetch 解释描述并在 stream=true 时输出 SSE。usage 只能显式提供,不估计真实 token。

generatorNames 与 generators 来自同一清单。integer、float、boolean、pick、id、date、sentence、imageUrl 返回值生成函数,在自定义 generator 内用同一 context 求值。sequence 按规则实例命中顺序选择,耗尽拒绝;toolCall 生成提议,不执行工具。

summary、bullets、keywords、title、extract、reply 接受可选 source(字符串或上下文函数),缺省使用 prompt。摘要采用代表句排序和重复控制,不进行 LLM 改写;summary 默认240码点、bullets/reply 500、title 24,summary/bullets 默认3项。摘要最多分析30000码点和180个分布候选句,超长文本按首中尾采样;关键词输出数组,提取缺失值为 null。来源、模板和 options 在构造时形成快照,回调闭包仍由 App 管理。

由简到繁的同业务示例 ​

编码已校验的模型结果 ​

扩展 · 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);

按相同请求顺序模拟错误和恢复 ​

扩展 · Node.js

ts
import { MockGPT, generators, responses, ResponseDescription } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: generators.sequence([
  responses.httpError(429, { error: { message: 'limited' } }),
  responses.text('服务在线。', { chunkSize: 2 }),
]) }] });
const input = { model: 'demo', messages: [{ role: 'user', content: '服务状态' }] };
const first = await mock.generate(input);
console.log(first instanceof ResponseDescription); // true;generate 不执行 HTTP 故障
const response = await mock.fetch('https://mock.local/v1/chat/completions', { method: 'POST', body: JSON.stringify(input) });
console.log(await response.json());
js
import { MockGPT, generators, responses, ResponseDescription } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: generators.sequence([
                responses.httpError(429, { error: { message: 'limited' } }),
                responses.text('服务在线。', { chunkSize: 2 }),
            ]) }] });
const input = { model: 'demo', messages: [{ role: 'user', content: '服务状态' }] };
const first = await mock.generate(input);
console.log(first instanceof ResponseDescription); // true;generate 不执行 HTTP 故障
const response = await mock.fetch('https://mock.local/v1/chat/completions', { method: 'POST', body: JSON.stringify(input) });
console.log(await response.json());

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