@framers/agentos-ext-ml-classifiers

中文文档
0.3.6发布于 2026/11/14Apache-2.0TypeScriptES Module零依赖近 30 天下载 2.1万

AgentOS的内容分类器-一种当地英国毒性模型(毒伯特、ONNX),然后是LLM判断器或关键词模式

中文使用文档
文档目录17 节
  1. 它会做什么
  2. ONNX模型得分多少
  3. 安装
  4. 快速启动
  5. 公共 API
  6. 调和 : @framers/agentos-ext-ml-classifiers/moderation
  7. OpenAI 中调后卫
  8. 图像检查
  9. 行为分类器
  10. 拒绝缓存
  11. 法官打电话
  12. 拒绝的请求
  13. 活动
  14. 日志
  15. 懒惰装入和可选安装
  16. 包装什么
  17. 许可证

@ framers/ agentos-ext- ml- 分类器

内容分类护栏 @framers/agentos:一个本地的英国毒性模型通过ONNX运行,在没有该模型时有LLM判断器或关键词模式.

它会做什么

护栏的成绩分为四类, toxic, (中文(简体) ), injection, (中文(简体) ), nsfw 财务报告和审定财务报表 threat返回时 FLAG 或者说 BLOCK 当一个分数超过它的阈值时。 它检查用户输入和代理的最终响应;它不读取流块. 该包还登记a classify_content 工具,可按要求返回相同的分数.

每个文本都到第一层,答案是:

  1. ONNX. (英语). 铁道进口 @huggingface/transformers (一个可选的依赖) 并加载一个模型, Xenova/toxic-bert,将 ONNX 转换为 unitary/toxic-bert,与 pipeline('text-classification', 'Xenova/toxic-bert', { device: 'cpu' })每一个护栏都试了一次 当软件包丢失或模型无法装入时,护栏会写出一个带有错误的警告,代之以它使用的分级(参见 日志),并进入下一层.
  2. LLM评委. 当你通过一个 llmInvoker 回话,看守员要求模型 对所有四类的JSON判决。 一个失败的呼叫,或者每个分数为0的回复,会进入下一级.
  3. 关键词. 按类别排列的正则表达式,总是可用的.

ONNX模型得分多少

toxic-bert 有六个标签。 护栏将它们映射到其类别,并保持每个类别最高分:

模型标签类别
toxic, (中文(简体) ), severe_toxic, (中文(简体) ), insult, (中文(简体) ), identity_hatetoxic
obscenensfw
threatthreat
  • 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.logger
  • createMLClassifierPack 是一个已贬值的别名,其名称是: 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 在源代码中;一个输入的答案是几千字节:a Content-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/agentos 0.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的调度员回答断电本身:一个 BLOCK GUARDRAIL_ERROR 给警卫取名metadata.guardrailId页:1 moderateContent() 报告为: unavailable: true 并排在另一个警卫的拒绝或扣留之下。 与 failClosed: false 警卫什么也没有回答。 警卫的最后期限 默认为每一个尝试, (1 + retries + (fallbackJudge ? 1 : 0)) * attemptTimeoutMs + 500:一次重试,第二次路线和每次尝试1800毫秒,5.9秒. 半秒覆盖了读取的缓存. 一旦调度员停止等待警卫 deadlineSignal AgentOS掌上,没有进一步尝试开始,所以一个文本不会被发送到第二条路由,以获取无人读取的答案.
  • 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 根 自由主义。 。 。 .

版本与发布记录

@framers/agentos-ext-ml-classifiers 共发布 8 个版本,首次发布于 2026/03/22;过去 12 个月发布了 8 个版本。

版本发布日期距今
0.3.6latest2026/11/142 天前
0.3.52026/11/132 天前
0.3.42026/11/132 天前
0.3.32026/11/105 天前
0.3.22026/10/2126 天前
0.3.12026/05/185 个月前

关于 @framers/agentos-ext-ml-classifiers 的常见问题

@framers/agentos-ext-ml-classifiers 是什么?

AgentOS的内容分类器-一种当地英国毒性模型(毒伯特、ONNX),然后是LLM判断器或关键词模式

如何安装 @framers/agentos-ext-ml-classifiers?

在项目目录运行 npm install @framers/agentos-ext-ml-classifiers,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@framers/agentos(>=0.7.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@framers/agentos-ext-ml-classifiers 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@framers/agentos-ext-ml-classifiers 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@framers/agentos-ext-ml-classifiers 可以商用吗?

@framers/agentos-ext-ml-classifiers 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@framers/agentos-ext-ml-classifiers 的下载量有多少?

根据 npm 官方下载统计,@framers/agentos-ext-ml-classifiers 在 2026/10/16 – 2026/11/14 这 30 天内被下载 20,602 次,日均约 687 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@framers/agentos-ext-ml-classifiers 还在维护吗?

最新版本 0.3.6 发布于 2026/11/14(2 天前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/03/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。