Skip to content
中文

Rule ​

KIT · interface · Type contract

One ordered matching rule of a MockGPT instance.

Import ​

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

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

Definition ​

ts
interface Rule

Field structure ​

FieldTypeRequiredDescription
idstring | undefinedOptionalUnique label reported in CallRecord.ruleId; defaults to rule-<1-based position>.
promptstring | RegExp | undefinedOptionalExact prompt string or pattern tested against GenerationContext.prompt.
modelstring | undefinedOptionalRestricts the rule to one request model; omitted means any model.
when((request: ModelRequest) => boolean) | undefinedOptionalExtra predicate on the whole request; must return a boolean synchronously.
generatorGeneratorRequiredValue or factory used when this rule is the first match.
timesnumber | undefinedOptionalMaximum accepted calls before the rule is skipped; 1-based integer, omitted means unlimited.

Examples ​

Generate native JSON directly ​

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

Inject the same instance into the real Core model boundary ​

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

API reference, usage examples and developer guides.