Skip to content
English

defineTextTemplate ​

KIT · function · 运行时值

The program owns the master; inserted model text is a value and is substituted once only.

Substitution is single-pass String.replace: a value that itself contains {{slot}} is left as literal text, so a slot value cannot inject further substitutions.

导入 ​

ts
import { defineTextTemplate } from '@jangts/agent-core/kits/presentation';
js
import { defineTextTemplate } from '@jangts/agent-core/kits/presentation';

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

定义 ​

调用 ​

ts
defineTextTemplate(master: string, options?: TextTemplateOptions): Readonly<{ slots: readonly string[]; render(values: Readonly<Record<string, string>>): string; }>

The program owns the master; inserted model text is a value and is substituted once only.

Substitution is single-pass String.replace: a value that itself contains {{slot}} is left as literal text, so a slot value cannot inject further substitutions.

参数类型传递说明
masterstring必需—
optionsTextTemplateOptions可省略—
options 的字段
字段类型必需说明
observe((result: string) => void | Promise<void>) | undefined可省略只读。Observer invoked with every rendered text.
errors{ readonly missingField?: (key: string) => Error | string; } | undefined可省略只读。Builds the error for a slot the caller did not supply; receives the slot name.

返回: Readonly<{ slots: readonly string[]; render(values: Readonly<Record<string, string>>): string; }>。

返回值结构
字段类型必需说明
slotsreadonly string[]必需见类型定义及调用场景。
render(values: Readonly<Record<string, string>>) => string必需见类型定义及调用场景。

使用示例 ​

先用程序模板组合说明 ​

入门 · Node.js

ts
import { Presentation } from '@jangts/agent-core/kits/presentation';
const template = Presentation.defineTextTemplate('你好,{{name}}。{{body}}');
console.log(template.render({ name: '开发者', body: '普通对象也能实现接口。' }));
js
import { Presentation } from '@jangts/agent-core/kits/presentation';
const template = Presentation.defineTextTemplate('你好,{{name}}。{{body}}');
console.log(template.render({ name: '开发者', body: '普通对象也能实现接口。' }));

相同模板加语义键校验与不重复变体 ​

配置 · Node.js

ts
import { Presentation } from '@jangts/agent-core/kits/presentation';
const slots = Presentation.defineSemanticSlots({ namespace: 'tone', keys: ['brief', 'detailed'], maxOccurrences: 1 });
console.log(slots.isValid('{{tone:brief}}'));
const greeting = Presentation.selectVariant(['你好', '欢迎'], { previous: '你好', randomIndex: () => 0 });
const tone = Presentation.resolvePreference([{ value: 'brief', priority: 1, order: 0 }, { value: 'detailed', priority: 2, order: 1 }]);
const template = Presentation.defineTextTemplate('{{greeting}},{{body}}');
console.log(template.render({ greeting: greeting ?? '你好', body: tone === 'detailed' ? '下面逐步说明接口。' : '普通对象即可。' }));
js
import { Presentation } from '@jangts/agent-core/kits/presentation';
const slots = Presentation.defineSemanticSlots({ namespace: 'tone', keys: ['brief', 'detailed'], maxOccurrences: 1 });
console.log(slots.isValid('{{tone:brief}}'));
const greeting = Presentation.selectVariant(['你好', '欢迎'], { previous: '你好', randomIndex: () => 0 });
const tone = Presentation.resolvePreference([{ value: 'brief', priority: 1, order: 0 }, { value: 'detailed', priority: 2, order: 1 }]);
const template = Presentation.defineTextTemplate('{{greeting}},{{body}}');
console.log(template.render({ greeting: greeting ?? '你好', body: tone === 'detailed' ? '下面逐步说明接口。' : '普通对象即可。' }));

相关策略源码 ​

相关定义 ​

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