Skip to content
中文

ModelRequest ​

KIT · interface · Type contract

A normalized /chat/completions request, produced by snapshotRequest.

Optional undefined fields have already been dropped and stream is already defaulted, so rules always observe the same shape regardless of whether the caller used generate or the injected fetch.

Import ​

ts
import type { ModelRequest } from '@jangts/agent-core/mock';
js
/** @typedef {import('@jangts/agent-core/mock').ModelRequest} ModelRequest */

Other public entry points:@jangts/agent-core/mock.

Definition ​

ts
interface ModelRequest

Field structure ​

FieldTypeRequiredDescription
modelstringRequiredRead-only. 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; }>[]RequiredRead-only. Non-empty conversation; the last user message supplies the default prompt.
streambooleanRequiredRead-only. Whether the codec should emit SSE; defaulted to false during normalization.
toolsreadonly unknown[] | undefinedOptionalRead-only. Tool schemas declared by the client; only the array shape is validated.
stream_optionsReadonly<{ include_usage?: boolean; }> | undefinedOptionalRead-only. include_usage: true appends a terminal usage-only chunk to the stream.

Index structure ​

FieldTypeRequiredDescription
[key: string]unknownRequiredRead-only. Index entry.

Examples ​

Encode a validated model result ​

Extension · Node.js

The adapter handles request validation, pre-first-byte delay, and lifecycle; the encoder does not execute rules or modify MockGPT call records.

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());

Generate an inspectable summary from the input ​

Beginner · 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);

API reference, usage examples and developer guides.