🎯 泰语版 Jev 来了!OpenThai-SystemOne
发布于 2026 年 9 月 20 日

0.8B 参数公开基准 61.9免费 Apache-2.0泰语 + 英语
输入文本 + 问题 → 一次计算即得带置信度的答案。
TypeSafe 发布 Jev(一种不生成文本、而是一次计算即以概率给出决策的 "System One model")五天之后,OpenThai 团队推出了面向泰语 + 英语的开源版本,命名为 OpenThai-SystemOne。
- 0.8B 参数,可在笔记本上运行
- 基座 Qwen3.5-0.8B,用约 50 亿泰语 token 继续预训练,并把 248k 词表的 LM 头替换为"256 槽位决策头"
- 输入状态(文本/JSON)+ 单选 / 打分 / 是否问题 → 一次前向计算返回所有问题的答案及置信度
- 在与 Bespoke-Nimble-9B 相同的 13 子集公开基准上:我们 61.9 / Nimble-9B 74.8 / Jev 76.0 / 原始 Qwen3.5-0.8B 45.4(13 个子集中 4 个领先 9B)。泰语任务:意图 86.4%、新闻主题 97.7%、XNLI-th 76.5%
- 用途:文本分类(Text Classification)、情感分析(Sentiment Analysis)、为 AI 选择动作(Agentic Computer Use)
- Apache-2.0 全部开放:权重、训练脚本、配置与合成数据
API 格式与 TypeSafe AI 的 POST /v1/systemone(Jev)一致,现有代码可直接指向本模型。
在浏览器中试玩
在浏览器中试玩 OpenThai-SystemOne + API 文档iapp.co.th/docs/llm/openthai-systemone
下载与安装
OpenThai-SystemOne — 权重与含基准表的模型卡huggingface.co/iapp/OpenThai-SystemOne
代码、配置与全部训练脚本 — GitHubgithub.com/iapp-technology/openthai-systemone
pip install "git+https://github.com/iapp-technology/openthai-systemone"
试一试
模型的真实输出:一条客服工单,两个问题,一次前向计算全部作答(输入 91 token,输出 0 token)。
curl -s https://api.iapp.co.th/v3/store/openthai/systemone -H "apikey: $IAPP_API_KEY" -H "content-type: application/json" -d '{
"state": {"ticket": "โดนหักเงินซ้ำสองครั้ง ขอเงินคืนด่วน"},
"questions": {
"department": {"type": "choice", "instructions": "ทีมใดควรรับผิดชอบ",
"criteria": {"billing": "การเงิน/คืนเงิน", "technical": "ระบบใช้งานไม่ได้", "sales": null}},
"refund": {"type": "noul", "instructions": "ลูกค้าขอเงินคืนหรือไม่"}
}}'
{"answers": {"department": {"choice": "billing", "probabilities": {"billing": 0.972, "technical": 0.009, "sales": 0.018}, "confidence": 0.87},
"refund": {"noul": 0.954}}, "usage": {"input_tokens": 91, "output_tokens": 0}}
🔑 公开 API
iApp AI Marketplace 上的端点 https://api.iapp.co.th/v3/store/openthai/systemone 使用免费的 iApp API key 即可调用。详情与在线试玩见 iapp.co.th/docs/llm/openthai-systemone,也可按下面的方式在自己的机器上运行模型。
本地运行(CUDA、Apple MPS 或 CPU):
from openthai_systemone import SystemOneClient, Choice, Score, Noul
c = SystemOneClient("iapp/OpenThai-SystemOne")
r = c.system_one(
state={"ticket": "โดนหักเงินซ้ำสองครั้ง ขอเงินคืนด่วน โทรไปสามรอบแล้วไม่มีใครรับ"},
questions={
"department": Choice(instructions="ทีมใดควรรับผิดชอบ", criteria={"billing": "การเงิน/คืนเงิน", "technical": "ระบบใช้งานไม่ได้", "sales": None}),
"frustration": Score(instructions="ลูกค้าหงุดหงิดแค่ไหน", criteria=["ใจเย็น", "หงุดหงิดแต่สุภาพ", "โกรธมาก"]),
"refund": Noul(instructions="ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"),
},
)
print(r.answers["department"].choice, r.answers["department"].probabilities)
print(r.answers["frustration"].score, r.answers["refund"].noul)
以 HTTP 服务方式运行,接口与 POST /v1/systemone 相同:
OPENTHAI_SYSTEMONE_MODEL=iapp/OpenThai-SystemOne uvicorn openthai_systemone.server:app --port 8000
或直接用 transformers 加载(远程代码随模型仓库提供):
from transformers import AutoModel
model = AutoModel.from_pretrained("iapp/OpenThai-SystemOne", trust_remote_code=True)
三种问题类型
| 类型 | 你提供 | 你得到 |
|---|---|---|
choice | 指令 + 最多 255 个选项(名称 → 描述或 null) | choice、每个选项的 probabilities、confidence |
score | 指令 + 2–10 个有序等级描述 | score(按概率加权,可为小数)、probabilities、confidence |
noul | 一个是/否问题 | noul = p(是) |
一次请求中的所有问题在同一次前向计算中一起作答。confidence 为 1 − 归一化熵,abstain 为"没有任何选项合适"的概率。
📊 数据
所有数字均为零样本:模型只看到状态、指令以及选项名称与描述,且均为经过校准的 v0.1 发布版本的结果。
Bespoke Labs 的 13 子集公开基准(与对比 Jev 时相同的数据源、切分、指令和采样器),宏平均:
| 模型 | 规模 | 平均分 |
|---|---|---|
| OpenThai-SystemOne | 0.8B | 61.9 |
| Bespoke-Nimble-9B | 9B | 74.8 |
| Jev(TypeSafe AI,闭源) | – | 76.0 |
| 原始 Qwen3.5-0.8B | 0.8B | 45.4 |
如实解读:0.8B 模型在 13 个子集中的 4 个领先 9B 模型(MultiNLI 85.6、SummEval-consistency 84.0、HelpSteer2 42.8、Civil Comments 78.0),而在阅读理解型的是/否任务(squad2 接近随机、boolq、pubmedqa)以及摘要相关性打分上明显落后,后者是 score 头校准最差的唯一子集(ECE 0.79)。Nimble-9B 与 Jev 的数字来自 Bespoke Labs 的公开结果(2026 年 9 月 18 日);我们的数字用 scripts/06_eval.py 在 scripts/06b_public_benchmarks.py 重建的相同子集上测得。逐数据集的表格(含 ECE)见模型卡。
泰语留出测试集(完整评测集;标 * 的数据集整体留出;ECE 越低,confidence 越可信):
| 测试集 | 任务 | 准确率 | ECE |
|---|---|---|---|
| Prachathai67k | 新闻主题(choice) | 97.7 | 0.005 |
| Prachathai67k | 逐主题是/否(noul) | 94.1 | 0.008 |
| MASSIVE-th | 60 类意图(choice) | 86.4 | 0.048 |
| XNLI-th | 自然语言推理(choice) | 76.5 | 0.028 |
| XNLI-th | 蕴含是/否(noul) | 84.3 | 0.042 |
| SIB-200 Thai* | 7 类主题(choice) | 77.5 | 0.074 |
| 泰语对比句对(单一事实翻转) | choice / noul / score | 78.7 / 82.3 / 73.2 | 0.105 / 0.088 / 0.133 |
| Wongnai | 评论星级 1–5(score) | 63.3 完全匹配(MAE 0.44) | 0.010 |
| xLAM 工具选择(英语) | 工具选择(choice) | 99.4 | 0.007 |
| Wisesight* | 4 类社交媒体情感(choice) | 38.7(已知弱项,v0.2 修复) | 0.341 |
| banking77*(英语) | 77 类意图(choice) | 32.7(弱项) | 0.165 |
校准在模型本已胜任的任务上有效(泰语主题与 NLI、Wongnai 打分、MultiNLI:ECE 不超过 0.05),但无法挽救准确率本身很低的任务,因为温度无法修正错误的排序。在英语公开基准上 ECE 中位数为 0.15,因此在泰语任务及 NLI/主题任务上可以信任 confidence,而低置信度的英语是/否决策应转给更大的模型。
延迟 — 3 个问题的请求在 H100 上约 40 毫秒,在 MacBook M3 Max(Apple GPU,MPS)上 154 毫秒。255 个选项的问题在 H100 上 44 毫秒,在 MacBook 上 1.5 秒。纯 CPU 仍较慢(约 4.6 秒),请使用 GPU 或 MPS。
⚙️ 工作原理
- 骨干 — Qwen3.5-0.8B-Base 的文本塔(24 层,Gated-DeltaNet 与注意力混合,262k 上下文),去掉视觉编码器,再用约 50 亿泰语 token 继续预训练(网页、维基百科、泰英平行语料,以及无障碍树、JSON 等机器状态文本)。
- 决策头 — 248k 词表的 LM 头被替换为 256 路槽位头。每个选项由控制 token
<|ts_opt_0|> … <|ts_opt_254|>引入;每个问题<|ts_answer|>位置的隐状态被投影为 256 个 logit,超出选项数的槽位被掩码,softmax 给出分布。槽位 255 为 abstain(没有选项合适)。 - 读取答案 —
choice= argmax,score= 在有序等级上的 Σ pᵢ·i,noul= p(是)。 - 无位置偏差 — 训练时打乱选项顺序并混入 abstain 样本,因此这是架构层面的设计,而不是读取 A/B/C 字母 logprob 的技巧。
🔬 训练流程
每个阶段都在 GitHub 仓库中,一个阶段一个脚本,单张 H100 即可复现。
scripts/00_prepare_base.py— 去掉 Qwen3.5-0.8B 的视觉编码器,保留文本塔(752M 参数)。scripts/01_cpt_data.py+scripts/02_cpt_train.py— 以泰语为主的继续预训练(过滤后的 FineWeb-2 泰语、泰语维基百科、泰语指令与摘要文本、OPUS 泰英平行语料、FineWeb-Edu 回放、合成无障碍树与 JSON)。单张 H100 约 40 小时,留出集困惑度 31.4 → 5.38。scripts/03_decision_data.py— 从 21 个公开数据集转换出 181 万条决策记录(泰语:wisesight*、wongnai、prachathai、XNLI-th、MASSIVE-th、SIB-200*、ThaiExam、iapp_wiki_qa、Thai toxicity;英语:MNLI、MMLU、ARC、HelpSteer2、AG News、DBpedia、CLINC、banking77*、Mind2Web、xLAM tools)。标 * 的数据集整体留出仅用于评测。scripts/03b_synth_generate.py— 用 Qwen3.6-35B-A3B 生成约 10 万条合成泰/英决策任务,逐条盲标复核并过滤答案泄漏(数据集iapp/openthai2.0-systemone-synth)。scripts/04_decision_train.py— 换头 + 12k 步 SFT,随后进行校准阶段(Brier 损失 + 按问题类型的温度),使更高的 confidence 确实对应更高的准确率。scripts/06b_public_benchmarks.py— 重建 Bespoke Nimble 的 13 子集公开基准,以便同口径比较。
👨👩👧 OpenThai 2.0 家族
| 模型 | 用途 | 规模 | 状态 |
|---|---|---|---|
| OpenThai 2.0 | 泰语对话/推理 LLM,支持图像 | 27B | 已发布 |
| OpenThai 2.0 Legal | 面向 RAG 的泰国法律模型 | 30B-A3B | 已发布 |
| OpenThai-SystemOne | 泰英决策模型(不生成文本) | 0.8B | 已发布 |
| OpenThai-SystemOne CPT | 其底层的泰语继续预训练基座(研究用途) | 0.8B | 暂未公开 |
⚠️ 局限
- 版本 0.1 — 0.8B 模型不是推理模型,不会做多步验证或算术。
- 只能在给定选项中作答,但仍可能出错 — 它无法输出不存在的选项,但可能选错。请使用
confidence字段,把低置信度的案例转给更大的模型或人工。 - 仅支持文本 — 不接受图像。每个问题最多 255 个选项(更多请分组),每次请求最多 64k token。
- 纯 CPU 仍较慢 — 请使用 GPU 或 Apple MPS。
- v0.1 已知弱项 — 泰语社交媒体情感(Wisesight 38.7)、细粒度 77 类英语意图(banking77 32.7)、抽取式问答型是/否(squad2 接近随机)以及摘要相关性打分。v0.2 将加入合成泰语情感数据集和第二轮 SFT;预计第一项会改善,其余不会。
- 英语校准弱于泰语 — ECE 中位数 0.15,泰语不超过 0.05,因为训练数据有意以泰语为主。
🤝 一起完善它
- 更多泰语测试集 — 尤其是选项很多的任务和 UI/智能体任务。欢迎在 GitHub 提 issue。
- GGUF / ONNX / MLX — 决策头只是普通的 Linear 层,熟悉工具链的朋友可以帮忙转换。
- 领域 LoRA 适配器 — 欢迎分享,计划是"一个基座,N 个适配器"。
- 欢迎到 OpenThaiGPT Discord 和 Facebook 群组交流。
📄 许可与致谢
Apache-2.0。由 iApp Technology / OpenThaiGPT 基于 Qwen3.5-0.8B-Base(Apache-2.0)构建。灵感来自 TypeSafe AI 的 System One 模型(Jev);本模型是独立的开放复现,与 TypeSafe AI 无关。
🙏 感谢 Siam AI
泰语继续预训练、SFT 与全部评测均在 Siam AI Corporation 慷慨提供的 NVIDIA H100 GPU 上完成。感谢其对开放泰语 AI 的持续支持。
