@ framers/ agentos-ext- ml- 分类器
内容分类护栏 @framers/agentos:一个本地的英国毒性模型通过ONNX运行,在没有该模型时有LLM判断器或关键词模式.
它会做什么
护栏的成绩分为四类, toxic, (中文(简体) ), injection, (中文(简体) ), nsfw 财务报告和审定财务报表 threat返回时 FLAG 或者说 BLOCK 当一个分数超过它的阈值时。 它检查用户输入和代理的最终响应;它不读取流块. 该包还登记a classify_content 工具,可按要求返回相同的分数.
每个文本都到第一层,答案是:
- ONNX. (英语). 铁道进口
@huggingface/transformers(一个可选的依赖) 并加载一个模型,Xenova/toxic-bert,将 ONNX 转换为unitary/toxic-bert,与pipeline('text-classification', 'Xenova/toxic-bert', { device: 'cpu' })每一个护栏都试了一次 当软件包丢失或模型无法装入时,护栏会写出一个带有错误的警告,代之以它使用的分级(参见 日志),并进入下一层. - LLM评委. 当你通过一个
llmInvoker回话,看守员要求模型 对所有四类的JSON判决。 一个失败的呼叫,或者每个分数为0的回复,会进入下一级. - 关键词. 按类别排列的正则表达式,总是可用的.
ONNX模型得分多少
toxic-bert 有六个标签。 护栏将它们映射到其类别,并保持每个类别最高分:
| 模型标签 | 类别 |
|---|---|
toxic, (中文(简体) ), severe_toxic, (中文(简体) ), insult, (中文(简体) ), identity_hate | toxic |
obscene | nsfw |
threat | threat |
nsfw从ONNX级是模型的obscene标签 淫秽语言的分数 这不是一个性内容分类.injection从未被ONNX级打分:它停留在0级. 只有LLM评委和关键词模式得分.- 该模型用于英文文本:其卡片将培训数据作为维基百科的评论列出 Jigsaw 毒性评论分类挑战,一个英文数据集,并为其他语言提供一个单独的多语种模型.
型号的卡片说明其主要限制(单体/毒性:
如果在评论中出现与起誓,辱骂或亵渎有关的词语,则无论作者的语气或意图,例如幽默/自欺欺人,都有可能被归类为有毒. 这可能对已经脆弱的少数群体造成一些偏见.
安装
npm install @framers/agentos-ext-ml-classifiers
同伴依赖 : @framers/agentos。 。 。 . @huggingface/transformers 是可选的依赖关系;没有它,守护者将运行 LLM 判断器或关键词级.
快速启动
import { AgentOS } from '@framers/agentos';
import { createMLClassifierGuardrail } from '@framers/agentos-ext-ml-classifiers';
const agentos = new AgentOS();
await agentos.initialize({
extensionManifest: {
packs: [
{
factory: () =>
createMLClassifierGuardrail({
categories: ['toxic', 'injection', 'threat'],
flagThreshold: 0.5,
blockThreshold: 0.8,
thresholds: { toxic: { flag: 0.6, block: 0.9 } },
// Optional: an LLM judge for when the ONNX tier is unavailable.
llmInvoker: async (systemPrompt, userMessage) => callYourModel(systemPrompt, userMessage),
}),
enabled: true,
},
],
},
});
以上一个分数 flagThreshold (默认为 0.5) 旗帜; 上方 blockThreshold (默认为0.8)块. thresholds 每类都覆盖.
公共 API
createMLClassifierGuardrail(options?, logger?)返回一个ExtensionPack与护栏和classify_content工具createExtensionPack(context)是工厂 AgentOS 的扩展加载器呼叫; 它读取context.options财务报告和审定财务报表context.loggercreateMLClassifierPack是一个已贬值的别名,其名称是:createMLClassifierGuardrail
见 src/types.ts 页:1 MLClassifierOptions, (中文(简体) ), LlmInvoker 财务报告和审定财务报表 MLClassifierLogger。 。 。 .
调和 : @framers/agentos-ext-ml-classifiers/moderation
内容人物互相发送的第二个切入点:一个用作信号的OpenAI moderation守护符,一个AgentOS图像守护符的OpenAI moderation检查符,以及一个你选择的法官模型上的行为分类符. 里面没有装满本地模型.
import { PhraseListGuardrail, StaticPhraseListSource, moderateContent } from '@framers/agentos';
import {
InMemoryConductRefusalCache, createAgentOSConductJudge, createConductGuardrail, createOpenAIModerationGuardrail,
} from '@framers/agentos-ext-ml-classifiers/moderation';
// a sequential phrase list runs first: a text it blocks reaches neither vendor
const hardBan = await PhraseListGuardrail.create({
id: 'hard-ban', sequential: true,
source: new StaticPhraseListSource({ version: '1', reviewedAt: '2026-11-12', reviewedBy: 'team', entries: [{ phrase: 'banned phrase', match: 'word', onMatch: 'block', ruleId: 'BAN_1' }] }),
});
const openai = createOpenAIModerationGuardrail({ apiKey: process.env.OPENAI_API_KEY!, logger });
const conduct = createConductGuardrail({
judge: createAgentOSConductJudge({ provider: 'anthropic', model: 'claude-haiku-5-5' }),
fallbackJudge: createAgentOSConductJudge({ provider: 'openai', model: '<a second vendor model>', thinkingHeadroomTokens: 1024 }),
attemptTimeoutMs: 1_800,
cache: new InMemoryConductRefusalCache(),
logger,
});
const decision = await moderateContent({ text }, {
guards: [hardBan, openai, conduct],
context: { userId, sessionId, moderation: { surface: 'public_room', roomId, rating: 'standard' } },
stopVendorsOn: ['MINOR_SEXUAL_SIGNAL'],
});
// decision.outcome: 'allow' | 'flag' | 'refuse' | 'hold'; decision.unavailable is true when only an outage decided
需求 @framers/agentos 0.17.1或更新中,释放与 moderateContent(),持有和持有 frameUntrustedEvidence()。在一个更古老的核心上,子路径在连接时失败。 根条目不变,并继续工作在每一个核心的同位素域名上.
两个入境点的申报类型 .js 指定符,所以在 TypeScript 下解析 NodeNext 模块解析以及 bundler:节点无害环境管理决议,其中 NodeNext 强制,“需要相对路径包含文件扩展名”(TypeScript 模块理论) (中文(简体) ). 测试套件包装已建套件,并进行打字检查 a NodeNext 消费者反对它, skipLibCheck 关闭.
OpenAI 中调后卫
createOpenAIModerationGuardrail(options) 将输入的文本发送到 POST /v1/moderations (模式) omni-moderation-latest 默认; CreateModerationRequest 财务报告和审定财务报表 CreateModerationResponse 内 OpenAI 的 OpenAPI 文件) (中文(简体) ). 它通过走自己的13个类别名单来读取第一个结果(AOPENAI_MODERATION_CATEGORIES:列表外的密钥被忽略,另一个类型的值使得答案无法被使用. 因此,结果谁 categories 或者说 category_scores 对象缺失或无效, 将一个类别中的布尔值或分数遗漏出来的对象也是如此 : OpenAI 的 schema 列出了两个对象中的所有十三个, 因此一个带有空的或不完整的地图的答案判断不出什么, 并且从未被读取为干净的。 一个封闭的警卫拒绝作为停产. 一个例外:计划宣布布尔斯 illicit 财务报告和审定财务报表 illicit/violent 无效( e)OpenAI 的 OpenAPI 文件, (中文(简体) ), CreateModerationResponse) (中文(简体) ). 两者的无布尔分数或无效分数读取为无分数的虚假分数,另外11个则决定;他们的密钥必须还在. 任何其它类别都无效,使答案无法使用。 在判决中命名的模型是 警卫建造的,从来没有答案.
- 规矩. 每个类别都有规则
{ flagAt?, holdAt?, blockAt?, reviewCode? }数字是一个从0到1的分数阈值,在分数达到或超过时达到;'vendor'意思是OpenAI自己为这一类的布尔. 一个街区比一个挡住和一个挡住的旗帜高 任何其他阈值(NaN, (中文(简体) ),Infinity,数字高于或低于 0,字符串)是TypeError当守护符或图像检查被构建时;其消息命名选项,绝不是值. 空规则( A){})是有效的,并取消该类的规则. - 默认. 每个类别旗,在
'vendor'· ;sexual/minors现职'vendor'带有审查代码MINOR_SEXUAL_SIGNAL。没有块:OpenAI的分数拒绝任何消息,除非您设置blockAt。 。 。 . - 你的规矩. 您通过的一个分类规则取代了库的该分类规则。 一个规则你通过
'sexual/minors'除非它命名为holdAt自己来 规则名称为"不"的控股商reviewCode属于该类别本身的代码. - 原因代码.
OPENAI_MODERATION_和大案的类别,/财务报告和审定财务报表-写入_(单位:千美元)OPENAI_MODERATION_SEXUAL_MINORS),加上规则的审查码. - 下来. 网络出错,非-2xx 答案,超时(
timeoutMs,默认为3000, 将整个请求绑定: 警卫停止等待一个apiKey函数,没有发送任何信息)或另一个形状的答案用一个moderation.signal_skipped由其他警卫决定.failClosed: true反而是停电 错误答案的正文从不被读取;它立刻被取消,所以它的连接被放出. 成功答案可读取至1个小米B(MAX_MODERATION_ANSWER_BYTES在源代码中;一个输入的答案是几千字节:aContent-Length在读完尸体之前,它被否决了, 穿过它的尸体被取消。 两者都是另一种形状的答案. - 阶段. 它是一个平行的(第二阶段)警卫 并读取呼叫
vendorSignal在它提出请求之前,它的关键再次得到解决apiKey函数可能需要一段时间: 一旦代码在stopVendorsOn已经中止了,警卫什么也没有发出。 它读了调度员的deadlineSignal在同一两点上,请求前的第二个右侧:一旦调度员停止等待警卫(其最后期限,或要求的姿势给予的更短一个),文本就无处发送.
图像检查
openAIModerationImageCheck(options) 是一个 classify 检查AgentOS的图像守护, ImageGuardrail,则需要 @framers/agentos 0.17.1或较新. 需要OpenAI警卫的选择 stages 财务报告和审定财务报表 failClosed;其默认 id 是 openai-moderation-image。 。 。 .
- 随其所发. 每个请求一个图像,总是作为所捕获的图像守护字节的数据URL(
data:<mime type>;base64,...,从没有URL. 对于一个image_url输入守护者通过您获取图像一次loadImage而OpenAI 判断那些字节, 相同的一个散列支票锯. - 其所诵. OpenAI 六类适用于图像:
self-harm, (中文(简体) ),self-harm/intent, (中文(简体) ),self-harm/instructions, (中文(简体) ),sexual, (中文(简体) ),violence财务报告和审定财务报表violence/graphic(单位:千美元)category_applied_input_types内CreateModerationResponse, (中文(简体) ), OpenAI 的 OpenAPI 文件) (中文(简体) ). 其他7个仅适用于文本:支票没有读出任何文本,所以一个被忽略或设定无效(计划声明)illicit财务报告和审定财务报表illicit/violent无效)留下影像的判断力,你为其中之一通过的一条规则是不会被读取的. 将布尔或六分之一的分数留出,包括空地地图在内的一个答案评为无:它算作另一种形状的答案(见 下来永远不要像一个干净的形象。 它的理性代码是六类代码和你的规则审查代码. - 默认. OpenAI 自己布林的每个图像分类旗. 无所不包,无所不包:OpenAI的分数拒绝任何图像,除非您设置一个
holdAt或一个blockAt内rules在OpenAI的守卫中,每个类别都有工作。 旗上标有六类的分数 一个子类.(单位:千美元)violence.graphic),因为图像后卫只保留了字母,数字和_ . : -。 。 。 . - 下来. 它的建造与
onError: 'skip'. 网络出错,非-2xx答案,超时(timeoutMs,默认值为3000,该值将整个检查绑定:检查停止等待一个apiKey函数,此时不发送任何信息,图像的数据 URL 仅在密钥解析后才能制作)或者另一个形状的答案(一个超过 1 MiB 的答案,如 OpenAI 守护上) 被图像守护者写成一个image_guard.check_failed线条,以及您的其他classify检查决定图像。 当没有人回答时,图像保护人员拒绝提供图像,因为无法提供图像(IMAGE_CHECK_UNAVAILABLE) (中文(简体) ). 支票没有写自己的行. - 停下来. 图像守护者读取呼叫
vendorSignal每个字之前classify检查; 检查一旦解决了密钥, 就会再次读取它, 然后发送什么和计数为没有回答的检查 。 已经发出的请求将一如既往地得到答复. - 最后期限. 与
@framers/agentos0.17.1 图像守护的最后期限没有达到检查:守护者自己回答timeoutMs(默认为15,000起),或者在较短的期限内,需要的姿势给予它,而检查则持续到其自身timeoutMs(违约3000). 所以,设置的支票timeoutMs在警卫或以下。 如果时间更长,在警卫回答后可能会发出请求,而其答案被抛弃. 那张支票timeoutMs绑定整张支票, 密钥检查包括: 之后没有发送任何信息 。 一个拿支票的核deadlineSignal,在上下文或图像上,也在该截止时停止检查:一旦中止了任何发送,飞行中的请求被取消.
import { ImageGuardrail, moderateContent } from '@framers/agentos';
import { openAIModerationImageCheck } from '@framers/agentos-ext-ml-classifiers/moderation';
const images = ImageGuardrail.create({
id: 'images',
requireMatch: true,
checks: [
hashCheck, // your hash service: { id, kind: 'match', check }
openAIModerationImageCheck({ apiKey: process.env.OPENAI_API_KEY! }),
visionJudge, // your own vision model: { id, kind: 'classify', check }
],
loadImage, // fetches an image_url input once, under your own egress rules
});
const decision = await moderateContent({ images: uploads }, { guards: [images], context: { userId, sessionId } });
行为分类器
createConductGuardrail(options) (和 ConductClassifier,它包起来)要求一个法官模型,用于一个超过十类的JSON信任对象(ACONDUCT_CATEGORIES数字 : minor_sexual, (中文(简体) ), suspected_minor, (中文(简体) ), threat, (中文(简体) ), sexual, (中文(简体) ), violence, (中文(简体) ), hate, (中文(简体) ), harassment, (中文(简体) ), self_harm, (中文(简体) ), scam_spam, (中文(简体) ), personal_data页:1 {"c":{"<category>":<confidence>}}法官没有写理由,也没有决定;代码决定.
- 政策.
policy实值{ version, sharedPrefix, ratings, defaultRating }。 。 。 .sharedPrefix持有您的分类定义 和每个评级的规则。 它在图书馆的输出合同后 在一个系统区块里UNTRUSTED_EVIDENCE_NOTICE,结尾处有一个缓存断点,所以每个呼叫都共享一个缓存前缀. 用户转弯控住Rating: <rating>和由frameUntrustedEvidence()。一个呼叫的评级是context.moderation.rating当政策列出时, 否则defaultRating(一个)conduct.rating_unknown按未知的评分词排列).DEFAULT_CONDUCT_POLICY平庸而通俗,有一套评分,standard。 。 。 . - 下关.
thresholds以评级键入,以'*'每个评分; 每个条目是{ flagAt?, holdAt?, refuseAt? }每个类别。 您的列表按类别排列在图书馆的类别之上, 所以您不命名的类别保存图书馆的编号 。 一个你名字的分类 整个条目,所有三个数字:{ '*': { minor_sexual: { refuseAt: 0.9 } } }叶子minor_sexual所以,所有你想要保留的数字。 图书馆:每个类别0.8的拒绝,但suspected_minor财务报告和审定财务报表self_harm; 0. 5 键minor_sexual, (中文(简体) ),suspected_minor财务报告和审定财务报表threat其余0.5分的旗帜;self_harm只有旗帜。 拒绝排行榜 排行榜 排行榜 达到同一门槛的类别中 信任度最高者决定. - 判决. 拒绝是BLOCK
CONDUCT_<CATEGORY>。一个被扣是一个 BLOCK 与hold: { reviewCode: '<CATEGORY>' }和理由代码CONDUCT_<CATEGORY>旗帜是FLAG.metadata持有所找到的类别、决定的类别、评级、政策版本、路线(primary, (中文(简体) ),fallback或者说cache和尝试的次数. - 严格的答案. 在去掉白色的空间和一个附加的代码栅栏后,答案必须是合同:一个对象,一个关键
c仅此而已,属于十大类,信心从0到1. 任何其它的,一个包含在对象之前的句子,都是一次失败的尝试,从不读作一无所获. 在输出封顶上停止的答案也是这样,不管其文本是否被解析. - 链.
judge尝试1 + retries时间(retries默认 1),则fallbackJudge一次 一次吗 每次尝试都attemptTimeoutMs(默认为3000). 没有可用的答案 警卫写conduct.unavailable掷出ConductUnavailableError。默认关闭(failClosed: true),所以AgentOS的调度员回答断电本身:一个 BLOCKGUARDRAIL_ERROR给警卫取名metadata.guardrailId页:1moderateContent()报告为:unavailable: true并排在另一个警卫的拒绝或扣留之下。 与failClosed: false警卫什么也没有回答。 警卫的最后期限 默认为每一个尝试,(1 + retries + (fallbackJudge ? 1 : 0)) * attemptTimeoutMs + 500:一次重试,第二次路线和每次尝试1800毫秒,5.9秒. 半秒覆盖了读取的缓存. 一旦调度员停止等待警卫deadlineSignalAgentOS掌上,没有进一步尝试开始,所以一个文本不会被发送到第二条路由,以获取无人读取的答案. stopVendorsOn。 。 。 . 一旦电话响了vendorSignal已中止( OpenAI )MINOR_SEXUAL_SIGNAL拿着stopVendorsOn: ['MINOR_SEXUAL_SIGNAL']),不再尝试。 已发送的尝试仍然被读取; 没有可用的回答conduct.stopped并且失败了, 和停止它的决定.- 长度. 传话过来
maxMessageChars拒绝( 默认 8 000 )CONDUCT_TOO_LONG并且没有模式呼叫: 剪切的文字会留下一个无人阅读的部分. 警卫执行限制;ConductClassifier.classify(),呼吁自己,没有. - 数字.
retries是一个整数, 0 或更多.attemptTimeoutMs财务报告和审定财务报表timeoutMs这里和OpenAI的后卫是0多毫秒,最多2,147,483,647秒,一个节点计时器等待时间最长;1分后运行时间更长(1分后)节点的计时器) (中文(简体) ). 图书馆工作的最后时限被限制在相同的限度内: 这个守卫的默认值timeoutMs(以上总和)和OpenAI警卫的调度人最后期限(其timeoutMs加上半秒钟).maxMessageChars高于 0 (Infinity(无限制).cacheTtlMs超过0和有限,以及InMemoryConductRefusalCache是因为maxEntries是一个整数, 1 或更多。 其他任何价值NaN那个Number(process.env.NAME)给一个未设置的名称,丢出一个TypeError当警卫或缓存建成时.
拒绝缓存
cache 单独存放拒绝, 绝不允许, 旗帜或持有,用于 cacheTtlMs (默认十分钟). 关键是政策版本的SHA-256,评分,该评分的阈值和文本与收到的完全一致:没有大小写折叠,没有Unicode的正常化,没有外观相像的映射,因为两个不同字母的文本可以命名出两个不同的事物. 一个命中答案 route: 'cache' 没有模特儿的电话 密钥为未盐分,可以匹配被猜取的文本的指纹,因此共享的商店持有条目一生的信息数据. InMemoryConductRefusalCache (默认的10 000个条目,最老的先出)服务于一个进程;执行 ConductRefusalCache (单位:千美元)get, (中文(简体) ), set在一个共享的商店上,当你运行一个以上。 读到的,或者在250毫秒内没有回答的,被跳过 conduct.cache_failed 并询问法官。 写作不等待:拒绝立即返回,失败时写作同一行. 所储存的条目是副本,所以对判决的编辑留下了原样.
法官打电话
createAgentOSConductJudge({ provider, model, apiKey?, baseUrl?, budget?, effort?, thinkingHeadroomTokens? }) 每次尝试都会通过 generateText() 与思考(thinking: false, (中文(简体) ), effort 'low' 默认,无 temperature, (中文(简体) ), top_p 或上-k,一次尝试和不倒置提供者,所以分类器的链是唯一的. 不属于 openai 需要一个模型。 在克洛德·海库5.5上, "思维是默认的,并算着走向 max_tokens"和思考可以关闭在 low, (中文(简体) ), medium 财务报告和审定财务报表 high 努力(催促克洛德·海库 5.5),其"移民指南"称省略 temperature, (中文(简体) ), top_p 财务报告和审定财务报表 top_k (单位:千美元)移徙指南) (中文(简体) ). 答案的200个符号是 答案的单独: 一个路线,它的模型总是认为, 或另一个卖家的推理模型,得到 thinkingHeadroomTokens,添加到请求的输出封顶中,大小来自您自己的干线.
你写自己的一个引用者是 (request) => Promise<{ text, stop }>时 stop 实值 'cap' 当模型停止在输出封顶和 'end' 否则,它扔 ConductJudgeDeclinedError(category) 当其供应商拒绝了这一要求时。 它可能会抛出 ConductJudgeEmptyAnswerError 当其供应商可以将拒绝变成空洞的答复时(见下文).
拒绝的请求
Claude Haiku 5.5运行安全分类器,可以拒绝请求 stop_reason: "refusal",然后再次发送同样的请求通常会返回另一个拒绝(保障拒绝) (中文(简体) ). 其他销售商通过内容过滤器下降: OpenAI 的聊天答案以 finish_reason content_filter "如果由于我们的内容过滤器中的一面旗帜而省略了内容"(OpenAI 的 OpenAPI 文件, (中文(简体) ), CreateChatCompletionResponse) (中文(简体) ). createAgentOSConductJudge() 每个都变成 ConductJudgeDeclinedError: 键入字段时出现的一个错误 content_filter, (中文(简体) ), content_policy_violation 或者说 safety_violations (数量) code 或者说 type, OpenAI 供应商的 openaiErrorCode 或者说 openaiErrorType,或供应商在 details.error,因为AgentOS的提供者 保存一个400的代码, 和一个回答 AgentOS 报告 有完成的理由 content_filter无论它的一部分到达。 这个类别是 cyber, (中文(简体) ), bio, (中文(简体) ), frontier_llm, (中文(简体) ), general_harms 或者说 other中,从错误的输入字段读取,从不读取其信件;过滤器的站点是 other。警卫为一个人持有信息: 一个 BLOCK CONDUCT_JUDGE_DECLINED 带有审查代码 JUDGE_DECLINED,与 failClosed 真实或虚假。 它从未被重审过,从未被送到第二路线,也从未被缓存过,还有一个 conduct.judge_declined 线条被写入。 多少次你的良性交通下降 是你自己的干线测量.
OpenAI也断然拒绝:一个聊天答覆,其信息有: refusal 字符串和无效 content (单位:千美元)ChatCompletionResponseMessage 内 OpenAI 的 OpenAPI 文件),或内容包含部分类型的答复 refusal (单位:千美元)拒绝结构化产出) (中文(简体) ). 两端都是普通站. AgentOS 0.17.1没有保留: generateText() 返回带有完整理由的空文本 stop,它本身会读成一个失败的解析,被重审,然后让第二个路径的干净的答案允许被拒绝的文本. 这么说吧 createAgentOSConductJudge() 做两件事:
- AgentOS将拒绝保留为打出信号的地方(a)
refusal字段,或结束原因refusal),法官抛出ConductJudgeDeclinedError('other'),则信息如上所持,而无复试. A 类refusal字段为true或字符串,包含的空字符串,是指在任何完成原因(包含输出封顶剪接的答案)和任何文本出现之后的下降. 一个不存在的领域,undefined, (中文(简体) ),null或者说false没有. - 没有的话,一个空的答案 在普通的一站
openai路由,或者在一条没有指定供应商的路由中,被抛出为ConductJudgeEmptyAnswerError。它像失败的尝试一样在它的路线上被重试(一次)conduct.attempt_failed线条,原因empty) (中文(简体) ). 如果路由的尝试以无可用答案而告终,则电文被扣为(CONDUCT_JUDGE_DECLINED,审查代码JUDGE_DECLINED, (中文(简体) ),declined: 'other'),与failClosed真实或虚假。 它从未被发送到第二路线,所以拒绝永远不会在许可中结束. 一个真正解答无所事事的模型被持同:安全的一面是一个人的检讨.
活动
MODERATION_EVENTS 命名七行 警卫通过 logger 您通过 AgentOS 的允许列表记录器上的主机可以添加到其地图中 : moderation.signal_skipped, (中文(简体) ), conduct.attempt_failed, (中文(简体) ), conduct.judge_declined, (中文(简体) ), conduct.unavailable, (中文(简体) ), conduct.stopped, (中文(简体) ), conduct.cache_failed 财务报告和审定财务报表 conduct.rating_unknown。它们的字段是ID、固定字和数字。 无一行持有消息的文字,卖家的回答,HTTP机身或出错的消息,没有记录员的警卫写作一无所有.
日志
当 ONNX 级无法加载时, 守卫栏杆会写出一条线
ml-classifiers: the ONNX tier is unavailable (Xenova/toxic-bert could not load: <error>); classifying with the keyword tier
交给伐木工了 createMLClassifierGuardrail,否则在包上下文或活化上下文中的记录器,或者控制台.
懒惰装入和可选安装
此软件包是 @framers/agentos-extensions-registry登记册船舶目录元数据; createCuratedManifest() 电话 import.meta.resolve() 每个条目并跳过任何未安装的条目. npm install @framers/agentos-ext-ml-classifiers 是大门.
激活时没有负载 铁道进口 @huggingface/transformers 并装入该模型的第一个分类.
护栏登记员 config.canSanitize = false 财务报告和审定财务报表 config.evaluateStreamingChunks = false:它从不重写文本,运行在双相调度器(并行分级器)的第二阶段,在输出时只读出最后的响应.
扩展型号见 扩展如何保持可选和懒惰 编辑 自动加载指南。 。 。 .
包装什么
已发布的软件包持有 dist (已建成的JavaScript,其类型声明及其出处地图), src (TypeScript地图指向的),此README和许可证. 测试,工作流程,脚本和构建配置不发布.
许可证
Apache 2.0, 参见 repo 根 自由主义。 。 。 .