☰
Julia 1的3种决策类型:choice、score与noul完整实战指南
2026/10/4 4:19:44 网站建设 项目流程

Julia 1的3种决策类型:choice、score与noul完整实战指南

【免费下载链接】Julia-1项目地址: https://ai.gitcode.com/hf_mirrors/SupersonicLabs/Julia-1

Julia 1 是 Supersonic Labs 推出的144.3M 参数决策模型:给它一段上下文状态(state)、一个问题,加上 2–20 个候选答案,它就能返回一个明确决定和完整概率。本文带你完整掌握它最核心的三种决策类型——choice(多选一)、score(有序评分)、noul(布尔判断),教你在客服分流、风险分级、审批决策等真实场景里选对接口、写对调用。

为什么一个模型就能搞定分类、评分和审批?

传统规则路由需要你穷举关键词、维护分支顺序;而 Julia 1 直接"读懂"上下文和候选答案的含义,一个模型、一个 API就能同时处理三类请求:

  • 从多个候选里选一个→choice
  • 在有序标度上打个分→score
  • 对某个命题回答是或否→noul

三个类型共享同一个predict(state=..., questions=...)接口,还能在一次调用里批量提出多个命名问题,各自独立打分。核心实现位于 julia/typed.py,参数校验规则在 julia/data.py。

决策类型criteria 写法返回的核心字段典型场景
choiceID → 描述 的映射(2–20 项)choice(胜出 ID)+ 各选项概率客服团队分流、意图分类
score有序标度列表(2–20 项,顺序即分值)score(期望索引,浮点数)+max_probability严重度分级、风险评级
noul可选;false/true两个键映射描述noul(true 的概率)是否转人工、是否批准

💡 每个回答都包含type和probabilities(完整 softmax 概率,未做展示舍入),choice/score 还会附max_probability方便你判断模型"有多确定"。

一、choice:让模型从候选答案中选出最优解

choice适合"答案就在选项里"的场景。criteria是一个映射,键是自定义 ID,值是候选项描述;模型的输出会原样使用你给的 ID,方便直接接入下游逻辑。

实战示例:客服工单分流

result = engine.predict( state="I was charged twice for the same order.", questions={ "team": { "type": "choice", "instructions": "Which team should handle this request?", "criteria": { "billing": "Billing and payment disputes", "shipping": "Shipping and delivery", "access": "Account access and login", }, }, }, ) print(result["answers"]["team"]["choice"]) # 胜出团队 ID print(result["answers"]["team"]["probabilities"]) # 各团队概率

三个小坑提前避:

  1. 候选数量 2–20,这是训练契约,超了会被直接拒绝(见 julia/data.py 中的validate_row);
  2. 开启严格编码时,每个选项 ≤48 token,描述请精炼;
  3. 选项之间语义要拉开差距,模糊相近的选项最容易让模型"摇摆"。

二、score:有序评分,返回一个"期望分值"

score适合"需要程度而非类别"的场景:低/中/高严重度、1–5 星质量评级……criteria是一个有序列表,顺序即分值,从 0 开始编号。模型返回的不是某一个档位,而是各档位概率的期望索引(浮点数)——例如 3 档标度返回1.0就表示模型认为"中等"。

questions = { "severity": { "type": "score", "instructions": "How severe is this incident?", "criteria": ["low", "medium", "high"], # 顺序即 0/1/2 分 }, }

使用要点:

  • 返回的score是期望值,官方基准计算正确性时用的是"最高概率档",不要擅自四舍五入后再比对;
  • max_probability告诉你分布的集中度,值低说明证据不足,建议转人工。

三、noul:布尔判断,返回"为真"的概率

noul(读作 "no/oul",即非/是)处理是/否问题,返回一个 0–1 之间的数——true 的概率,阈值由你自己定,模型不做二值化。

它有个容易忽略的细节:criteria是可选的。

  • 不写 criteria:模型直接用字面"false"/"true"作为两个选项;
  • 写了 criteria:必须恰好包含false和true两个键,分别映射成人类可读的描述,描述顺序固定为 false 在前、true 在后。

值得重视:官方 CPU 消融实验显示,提供描述时 noul 正确 483/600,退化为字面 false/true 时只有 391/600(数据见 metrics/typed-cpu-20260926.json)。描述写得越贴合你的业务,判断越稳。

questions = { "review": { "type": "noul", "instructions": "Needs human review?", "criteria": { "false": "No human attention is warranted.", "true": "A human should inspect this run.", }, }, } # answers["review"]["noul"] 就是 true 的概率

怎么选?一条决策规则

  • 答案离散、候选可枚举→choice
  • 需要程度/等级且等级有序 →score
  • 只要通过/不通过的二元决定 →noul
  • 同一份上下文要问多个问题?把它们放进同一个questions字典,一次调用批量返回,互不干扰。

快速上手:三步跑通第一个决策

1️⃣获取模型(需要 Python 3.11+ 与标准 PyTorch,CPU 即可推理):

git clone https://gitcode.com/hf_mirrors/SupersonicLabs/Julia-1 python -m pip install -e ./Julia-1

2️⃣加载引擎(FP32 权重约 550.5 MiB,请保留完整的 checkpoint 文件而非 LFS 指针;模型加载后请在多次请求间复用,不要每次重新加载):

from julia import load_model engine = load_model("Julia-1", device="cpu", strict_encoding=True, max_length=8192, head_length=512)

3️⃣发起预测:按上文任一类型组织questions调用predict即可。load_model定义在 julia/inference.py;旧版列表式 API(engine.predict([...]))也继续受支持。

想复现官方基准?运行 scripts/reproduce_typed.py:

python -m pip install -e '.[benchmark]' python scripts/reproduce_typed.py --output benchmark/typed-cpu --literal-noul-ablation

效果如何:基准成绩一览

在 2026-09-24 的 H200 BF16 严格编码评测中(完整数据见 metrics/accuracy-20260924.json):

基准成绩
Typed decisions 总集(2000 题)73.15%
其中 choice(600 题)71.33%
其中 noul(600 题)80.67%
其中 score(800 题)68.88%
AG News · 4 类分类试点94/100
DAIR Emotion · 6 类情绪试点86/100

可以看到noul 是三种类型里最稳的,score 最难(要精确到序数分值)。但请注意:这些都是试点信号,在你自己的问题与选项上先做评估,再上线——尤其涉及 72 个候选的 Banking77 这类长标签场景,成绩会明显下滑。

避坑清单:开始前的 4 个提醒

  1. 2–20 选项硬限制:更大的 choice 列表请用分层 Router,它通过"分组缩小 + 幸存者重排"处理上千候选,但注意分组概率不可跨组比较,且可能提前淘汰正确答案;
  2. 它不是聊天模型:Julia 1 只比较你提供的选项,不负责补全缺失知识或多步推理,正确率高度依赖state里的证据质量;
  3. 严格编码会拒绝截断:strict_encoding=True时,问题/选项超预算、或注入保留标记都会被直接报错,这是特性不是 bug;
  4. 概率 ≠ 保证:返回的是完整 softmax 分布,请结合max_probability和业务风险设置人工兜底。

相关资料速查

  • 项目总览与安装:README.md
  • 命名问题接口实现:julia/typed.py
  • 行校验与序列编码:julia/data.py
  • 概率展示规则(95%/4.5% 归一化):julia/probabilities.py
  • 原生路由与大批量 choice:julia/router/README.md
  • 接口行为测试:tests/test_typed_api.py
  • CPU FP32 复现结果:metrics/typed-cpu-20260926.json
  • 复现脚本:scripts/reproduce_typed.py

一句话总结:候选可枚举用choice,需要程度分级用score,是非判断用noul——把选项描述写清楚、把模型加载后复用、在真实数据上先测后上线,你就能用 Julia 1 一个接口撑起整条决策流水线。

【免费下载链接】Julia-1项目地址: https://ai.gitcode.com/hf_mirrors/SupersonicLabs/Julia-1

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询