Skip to content
English

MockGPT ​

KIT · class · 运行时值

Configurable mock model instance. Create one per test or per mock server.

导入 ​

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

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

定义 ​

ts
class MockGPT

构造函数 ​

ts
new MockGPT(options: MockGPTOptions): MockGPT

Validate options and snapshot every rule.

Each rule's id, prompt, model, predicate and output are validated here, so configuration mistakes surface at construction rather than on the first request.

参数类型传递说明
optionsMockGPTOptions必需—
options 的字段
字段类型必需说明
rulesreadonly Rule[]必需Ordered rules; the first rule whose filters all pass wins, so order is significant.
fallbackGenerator | undefined可省略Generator used when no rule matches; absent makes an unmatched call a MOCK_RULE_NOT_FOUND error.
selectPrompt((request: ModelRequest) => string) | undefined可省略Overrides prompt extraction; must return a string synchronously; default is the last user text.
streamPick<OutputOptions, "chunkSize" | "intervalMs" | "wireChunkSize"> | undefined可省略Defaults merged under every generated output; explicit output fields take precedence.
seednumber | undefined可省略Seed for the deterministic PRNG (0-0xffffffff); default 1, so identical call sequences repeat.
clock(() => number) | undefined可省略Millisecond timestamp source for date generators and response created; must be finite.
recordLimitnumber | undefined可省略Ring-buffer size of records; 0 disables recording; max 10 000; default 100.
maxBodyBytesnumber | undefined可省略Maximum accepted request body in bytes for fetch; default 1 MiB.
maxOutputCharsnumber | undefined可省略Maximum generated content in code points plus serialized tool calls; default 1 000 000.

返回: MockGPT。

实例属性 ​

字段类型必需说明
recordsreadonly CallRecord[]必需只读。Chronological records, oldest first, as detached copies. Rotates the ring buffer back into insertion order before returning, and deep-copies each record so callers cannot mutate runtime state through the result.
countsReadonly<Record<string, number>>必需只读。Accepted-call count per rule plus the fallback bucket, keyed by rule id.
activeRequestsnumber必需只读。Number of calls or response streams still in flight.

成员目录 ​

成员用途
resetClear history, hit counts and the PRNG sequence.
fetchBound callback suitable for injection into an SDK's fetch option. Performs the HTTP side of the contract: route and method checks, byte-limited body reading, request validation, then either a JSON/SSE Response or an OpenAI-shaped error response. Transport faults (responses.reject) are rethrown as MOCK_NETWORK so SDKs observe a network failure rather than an HTTP error.
generateEvaluate rules and return data. No Request, Response, delay or streaming is created. Transport-only options in a generated descriptor (delayMs, intervalMs, interruptAfter) are validated but ignored here, so SDK tests can exercise generators and matching without simulating a network.

成员详情 ​

reset ​

实例方法。

Clear history, hit counts and the PRNG sequence.

ts
reset(): void

Clear history, hit counts and the PRNG sequence.

无调用参数。

返回: void。

fetch ​

实例方法。

Bound callback suitable for injection into an SDK's fetch option.

Performs the HTTP side of the contract: route and method checks, byte-limited body reading, request validation, then either a JSON/SSE Response or an OpenAI-shaped error response. Transport faults (responses.reject) are rethrown as MOCK_NETWORK so SDKs observe a network failure rather than an HTTP error.

ts
fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>

MDN Reference

参数类型传递说明
inputRequestInfo | URL必需—
initRequestInit | undefined可省略—

返回: Promise<Response>。

等待后的值: Response。

generate ​

实例方法。

Evaluate rules and return data. No Request, Response, delay or streaming is created.

Transport-only options in a generated descriptor (delayMs, intervalMs, interruptAfter) are validated but ignored here, so SDK tests can exercise generators and matching without simulating a network.

ts
generate(input: GenerationInput, { signal }?: GenerationOptions): Promise<Generated>

Evaluate rules and return data. No Request, Response, delay or streaming is created.

Transport-only options in a generated descriptor (delayMs, intervalMs, interruptAfter) are validated but ignored here, so SDK tests can exercise generators and matching without simulating a network.

参数类型传递说明
inputGenerationInput必需—
__1GenerationOptions可省略—
input 的字段
字段类型必需说明
modelstring必需只读。Model identifier used for Rule.model filtering.
messagesreadonly Readonly<{ [key: string]: unknown; role: string; content?: unknown; tool_calls?: unknown; tool_call_id?: string; }>[]必需只读。Conversation whose last user message becomes the prompt.
__1 的字段
字段类型必需说明
signalAbortSignal | undefined可省略Cancels the call before or during generation; rejection reason is preserved as-is.

返回: Promise<Generated>。

等待后的值: Generated。

使用示例 ​

直接生成原生 JSON ​

入门 · Node.js

ts
import { MockGPT } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: { online: true, source: 'fixture' } }] });
const value = await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务状态' }] });
console.log(value); // { online: true, source: 'fixture' }
console.log(mock.counts, mock.records);
js
import { MockGPT } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: { online: true, source: 'fixture' } }] });
const value = await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务状态' }] });
console.log(value); // { online: true, source: 'fixture' }
console.log(mock.counts, mock.records);

同一实例注入真实 Core 模型边界 ​

配置 · Node.js

ts
import { ModelRunner, Support } from '@jangts/agent-core';
import { MockGPT, responses } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: responses.text('服务在线。', { chunkSize: 2, wireChunkSize: 3 }) }] });
const provider = new Support.CompatibleModelProvider({
  config: { baseUrl: 'https://mock.local/v1', apiKey: 'offline-example', model: 'demo' },
  ports: { request: mock.fetch },
});
const result = await new ModelRunner({ provider, maxCalls: 1 }).invoke('服务状态');
console.log(result.value, result.invocation.status);
js
import { ModelRunner, Support } from '@jangts/agent-core';
import { MockGPT, responses } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ prompt: '服务状态', generator: responses.text('服务在线。', { chunkSize: 2, wireChunkSize: 3 }) }] });
const provider = new Support.CompatibleModelProvider({
    config: { baseUrl: 'https://mock.local/v1', apiKey: 'offline-example', model: 'demo' },
    ports: { request: mock.fetch },
});
const result = await new ModelRunner({ provider, maxCalls: 1 }).invoke('服务状态');
console.log(result.value, result.invocation.status);

相关定义 ​

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