Skip to content
中文

ModelStrategyOptions ​

SUPPORT · type · Type contract

Input of createModelStrategy: model selection, optional reasoning and budget plus explicit Core overrides. Explicit Core fields win over every generated value.

Import ​

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

Other public entry points:@jangts/agent-core/support, @jangts/agent-core/support/model.

Definition ​

Type: ModelStrategyOptions<Transports, Execution>

Type expression
ts
type ModelStrategyOptions<Transports extends readonly ModelTransportDefinition[] = readonly ModelTransportDefinition[], Execution = ExecutionOptions> = Partial<StrategyModel<Transports, Execution>> & {
  /** An existing definition, or an ID in the explicitly supplied model catalog. */
  readonly model: StrategyModel<Transports, Execution> | string;
  /** Named model definitions; required when `model` is a string ID. */
  readonly models?: Readonly<Record<string, StrategyModel<Transports, Execution>>>;
  /** Names and supplier-specific implementations are declared by the App, never guessed. */
  readonly reasoning?: string;
  /** Per-reasoning overrides; entries are applied only when `reasoning` names them. */
  readonly reasoningOptions?: Readonly<
    Record<string, Partial<StrategyModel<Transports, Execution>>>
  >;
  /** Preset name, or an explicit partial budget; defaults to `medium`. */
  readonly budget?: ModelBudgetStrategy;
};

Type parameters ​

Type parameterConstraintDefault type
Transportsreadonly ModelTransportDefinition[]readonly ModelTransportDefinition[]
Execution—ExecutionOptions

Field structure ​

FieldTypeRequiredDescription
maxOutputTokensnumber | undefinedOptionalDefault output reservation; invoke can override it for one call.
maxCallsnumber | undefinedOptionalCalls allowed for the whole request, including descendant runners' reservations.
callTimeoutMsnumber | undefinedOptionalDeadline for one provider call, in milliseconds.
maxOutputCharsnumber | undefinedOptionalCap on streamed output characters; exceeding it fails the call.
usageboolean | undefinedOptionalRequest and record provider usage for each call.
childrenModelChildPolicy | undefinedOptionalRead-only. See the type definition and usage context.
maxInputCharsnumber | undefinedOptionalCharacter budget for the assembled input.
maxSchemaCharsnumber | undefinedOptionalCharacter allowance for registered capability schemas.
tokenBudgetModelTokenBudget | undefinedOptionalSee the type definition and usage context.
providerChatProvider | undefinedOptionalSee the type definition and usage context.
transportsTransports | undefinedOptionalSee the type definition and usage context.
sink{ output?: ModelRunnerPorts["onOutput"]; } | undefinedOptionalSee the type definition and usage context.
errors{ inputBudget?: ModelRunnerPorts["inputBudgetError"]; outputBudget?: ModelRunnerPorts["outputBudgetError"]; } | undefinedOptionalSee the type definition and usage context.
executionExecution | undefinedOptionalSee the type definition and usage context.
modelstring | StrategyModel<Transports, Execution>RequiredRead-only. An existing definition, or an ID in the explicitly supplied model catalog.
modelsReadonly<Record<string, StrategyModel<Transports, Execution>>> | undefinedOptionalRead-only. Named model definitions; required when model is a string ID.
reasoningstring | undefinedOptionalRead-only. Names and supplier-specific implementations are declared by the App, never guessed.
reasoningOptionsReadonly<Record<string, Partial<StrategyModel<Transports, Execution>>>> | undefinedOptionalRead-only. Per-reasoning overrides; entries are applied only when reasoning names them.
budgetModelBudgetStrategy | undefinedOptionalRead-only. Preset name, or an explicit partial budget; defaults to medium.

Examples ​

Use a small budget for a short task and keep the same Core construction as needs grow ​

Beginner · Node.js

ts
import { AgentCoreEngine, ModelRunner, Support } from '@jangts/agent-core';
const provider = { async *stream() { yield '服务在线。'; } };
const config = Support.createModelStrategy({ model: { provider }, budget: 'small' });
const model = new ModelRunner(config);
console.log((await model.invoke('服务状态?')).value);
const agent = new AgentCoreEngine({ model: config });
console.log(agent.branch.agentId);
js
import { AgentCoreEngine, ModelRunner, Support } from '@jangts/agent-core';
const provider = { async *stream() { yield '服务在线。'; } };
const config = Support.createModelStrategy({ model: { provider }, budget: 'small' });
const model = new ModelRunner(config);
console.log((await model.invoke('服务状态?')).value);
const agent = new AgentCoreEngine({ model: config });
console.log(agent.branch.agentId);

Refer to an existing model by ID and register the reasoning scheme explicitly ​

Configuration · Node.js

The example Providers are fully offline. Reasoning parameters for real providers are implemented through each Provider's explicit configuration.

ts
import { ModelRunner, Support } from '@jangts/agent-core';
const fast = { async *stream() { yield '简短回答'; } };
const reasoned = { async *stream() { yield '经过复核的回答'; } };
const models = { fast: { provider: fast }, thorough: { provider: reasoned } };
const config = Support.createModelStrategy({ model: 'fast', models, budget: 'small',
  reasoning: 'high', reasoningOptions: { high: { provider: reasoned } },
  maxCalls: 1, maxOutputTokens: 1200,
});
console.log((await new ModelRunner(config).invoke('检查资料')).value);
js
import { ModelRunner, Support } from '@jangts/agent-core';
const fast = { async *stream() { yield '简短回答'; } };
const reasoned = { async *stream() { yield '经过复核的回答'; } };
const models = { fast: { provider: fast }, thorough: { provider: reasoned } };
const config = Support.createModelStrategy({ model: 'fast', models, budget: 'small',
    reasoning: 'high', reasoningOptions: { high: { provider: reasoned } },
    maxCalls: 1, maxOutputTokens: 1200,
});
console.log((await new ModelRunner(config).invoke('检查资料')).value);

API reference, usage examples and developer guides.