@agent-assistant/traits
@agent-assistant/traits 是一个用于验证、不可改变的辅助特性数据的 TypeScript- first 叶包.
它定义了一个助手如何呈现自己,以及它喜欢哪种格式的提示. 它不拥有运行时配置,人物a 提示,路由,模型选择,内存,或产品行为.
API 密码
import {
createTraitsProvider,
TraitsValidationError,
} from '@agent-assistant/traits';
import type {
AssistantTraits,
SurfaceFormattingTraits,
TraitsProvider,
} from '@agent-assistant/traits';
数据模型
AssistantTraits
interface AssistantTraits {
voice: string;
formality: string;
proactivity: string;
riskPosture: string;
domain?: string;
vocabulary?: string[];
}
规则:
voice必须是非空字符串。 已知值为concise, (中文(简体) ),conversational, (中文(简体) ),formal,以及technical。 。 。 .- 未知
voice值被接受为console.warn因此产品可以扩展寄存器而不伪造包. formality必须是casual, (中文(简体) ),professional,或academic。 。 。 .proactivity必须是low, (中文(简体) ),medium,或high。 。 。 .riskPosture必须是cautious, (中文(简体) ),moderate,或assertive。 。 。 .domain如果存在,则必须是非空字符串.vocabulary如果存在,则必须是非空字符串的非空字符串.
SurfaceFormattingTraits
interface SurfaceFormattingTraits {
preferredResponseLength?: number;
preferRichBlocks?: boolean;
preferMarkdown?: boolean;
}
规则:
preferredResponseLength如果存在,则必须是正整数.preferRichBlocks如果在场, 一定是布尔.preferMarkdown如果在场, 一定是布尔.
这些是产品自主格式钩子的提示. 它们不能取代表面能力检查.
TraitsProvider
interface TraitsProvider {
readonly traits: Readonly<AssistantTraits>;
readonly surfaceFormatting?: Readonly<SurfaceFormattingTraits>;
}
消费者应依赖只读提供者的合同,而不是在运行时改变或重建提供者.
创建提供者
import { createTraitsProvider } from '@agent-assistant/traits';
const traits = createTraitsProvider(
{
voice: 'concise',
formality: 'professional',
proactivity: 'medium',
riskPosture: 'moderate',
domain: 'knowledge-and-workspace',
vocabulary: ['digest', 'workspace', 'context'],
},
{
preferredResponseLength: 800,
preferRichBlocks: false,
preferMarkdown: true,
},
);
createTraitsProvider 验证输入、复制、冻结返回的提供者、冻结嵌入的特性对象以及冻结复制的特性 vocabulary 阵列.
校验错误
import { createTraitsProvider, TraitsValidationError } from '@agent-assistant/traits';
try {
createTraitsProvider({
voice: 'concise',
formality: 'semi-formal',
proactivity: 'medium',
riskPosture: 'moderate',
});
} catch (error) {
if (error instanceof TraitsValidationError) {
console.error(error.field);
console.error(error.invalidValue);
console.error(error.message);
}
}
TraitsValidationError 扩展 Error 并揭露:
field: 失败的特性字段名称invalidValue: 被拒绝的值message:可读解释
用法边界
此软件包只拥有特性数据 .
- 没有劳动力个人所有权
- 没有迅速生成
- 没有特定产品的逻辑
- 无云或运行时间服务假设
- 没有动态学习或适应引擎
- 没有从其他中继助理包导入
特质和劳动力是有意分开的。 产品可能将特异性值构成人a提示或合成器输入,但该成分属于本包之外.
适应模式
V1 适应层为只读和产品所有:包和产品读作a TraitsProvider 并将其值应用到它们自己的格式化或合成逻辑.
格式化用法示例:
const traits = runtime.definition.traits;
const useMarkdown =
caps.supportsMarkdown && (traits?.surfaceFormatting?.preferMarkdown ?? true);
const responseVoice = traits?.traits.voice ?? 'concise';
示例合成用法:
const traits = context.definition?.traits;
return assembleResponse(results, {
voice: traits?.traits.voice ?? 'concise',
formality: traits?.traits.formality ?? 'professional',
});
软件包不会生成提示,发送格式化的输出,或者解释超出验证范围的域名词汇.
核心整合
@agent-assistant/core 可以在 AssistantDefinition数字 :
const assistant = createAssistant({
id: 'sage',
name: 'Sage',
traits: createTraitsProvider({
voice: 'concise',
formality: 'professional',
proactivity: 'medium',
riskPosture: 'moderate',
}),
capabilities: {
reply: () => undefined,
},
});
田地可选. 没有特征的助理继续工作不变.
地方发展
从 packages/traits数字 :
npm install
npm run build
npm test
这个软件包在孤立状态下可运行,并且具有零运行时间依赖性.
TRATS PACKAGE 缩写