Skip to content
English

ModelInputMeasurement ​

CORE · interface · 类型合同

Exact prepared-request accounting; token values exist only with an explicit model counter.

导入 ​

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

其他公开入口:@jangts/agent-core、@jangts/agent-core/model、@jangts/agent-core/types、@jangts/agent-core/structs。

定义 ​

ts
interface ModelInputMeasurement

字段结构 ​

字段类型必需说明
messageCharsnumber必需只读。Characters of the message content.
instructionCharsnumber必需只读。Characters of the instruction text.
schemaCharsnumber必需只读。Characters of the compiled capability schemas.
transportCharsnumber必需只读。Characters the transport itself contributes (for example framing).
inputCharsnumber必需只读。Sum of the character components above.
maxInputCharsnumber必需只读。Character budget the input was compared against.
maxSchemaCharsnumber必需只读。Schema budget the input was compared against.
maxOutputTokensnumber必需只读。Output tokens reserved for this call, which reduces the token input ceiling.
counterIdstring | undefined可省略只读。Tokenizer identity; present only when a token budget applies.
inputTokensnumber | undefined可省略只读。Measured input tokens.
inputTokenLimitnumber | undefined可省略只读。Token ceiling after reserving output and the safety margin.
withinBudgetboolean必需只读。True when every applicable character and token budget accepted the input.

使用示例 ​

普通调用仍然只有 invoke ​

入门 · Node.js

ts
import { ModelRunner } from '@jangts/agent-core/model';
const provider = {
  async *stream(messages: readonly { content: string }[]) {
    yield '收到:' + messages.at(-1)!.content;
  },
};
const runner = new ModelRunner({ provider });
console.log((await runner.invoke('你好')).value);
js
import { ModelRunner } from '@jangts/agent-core/model';
const provider = {
    async *stream(messages) {
        yield '收到:' + messages.at(-1).content;
    },
};
const runner = new ModelRunner({ provider });
console.log((await runner.invoke('你好')).value);

只在需要测量时准备一次 ​

配置 · Node.js

ts
import { ModelRunner } from '@jangts/agent-core/model';
const provider = {
  async *stream(messages: readonly { content: string }[]) {
    yield '收到:' + messages.at(-1)!.content;
  },
};
const runner = new ModelRunner({ provider, maxInputChars: 1000 });
const prepared = runner.prepare({ stageId: 'reply', maxOutputTokens: 400 });
const input = '你好,解释这次服务状态';
console.log(prepared.measure(input));
const result = await runner.invoke({ input, prepared });
console.log(result.value);
js
import { ModelRunner } from '@jangts/agent-core/model';
const provider = {
    async *stream(messages) {
        yield '收到:' + messages.at(-1).content;
    },
};
const runner = new ModelRunner({ provider, maxInputChars: 1000 });
const prepared = runner.prepare({ stageId: 'reply', maxOutputTokens: 400 });
const input = '你好,解释这次服务状态';
console.log(prepared.measure(input));
const result = await runner.invoke({ input, prepared });
console.log(result.value);

相关策略源码 ​

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