跳到主要内容

🎯 泰语版 Jev 来了!OpenThai-SystemOne

发布于 2026 年 9 月 20 日

泰语版 Jev 来了:OpenThai 团队的开源模型 OpenThai-SystemOne

0.8B 参数v0.3公开基准 74.3免费 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 子集公开基准上:我们 74.3(v0.3)/ Nimble-9B 74.8 / Jev 76.0(与 9B 模型仅差 0.5,13 个子集中 8 个领先)。泰语任务:意图 90.0%、新闻主题 98.1%、XNLI-th 77.1%
  • 用途:文本分类(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 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(免费预览)

端点 https://api.iapp.co.th/v3/store/openthai/systemone 可用任意 iApp API key(免费注册)调用。预览期间 0 积分,每个 key 每天限 1,000 次决策、每分钟 100 次请求;按决策计价将于 2026 年 10 月公布。API 当前运行 v0.3,与 Hugging Face 上的权重为同一检查点。详情与在线试玩见 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)

🎮 演示:不看画面、不生成文本地玩 Doom​

模型实时控制 Doom(ViZDoom)中的角色。每 4 个游戏 tic,引擎的符号状态被序列化为文本,例如:

health 100/100 | ammo 50 | kills 1
crosshair: empty; nearest visible enemy 39deg to the RIGHT
enemies: Zombieman 5m right -39deg VISIBLE; ChaingunGuy 19m right -24deg; Zombieman 19m ahead -12deg
items: GreenArmor 41m right -18deg
depth ahead: 35/255 (obstacle near)
last actions: ATTACK ATTACK ATTACK ATTACK

模型在一次前向计算中回答两个结构化问题:对 7 个动作的 choice(要按下的键)和 "准星中是否有敌人" 的 noul。单张 H100 上每次决策约 41 毫秒(约每秒 24 次决策),输出 token 为 0,且训练中没有任何 Doom 数据:一切都来自阅读状态与选项描述。它会打偏、也会在高难度关卡阵亡;重点在于速度与校准过的概率,这与分流工单或为智能体选择 UI 元素是同一套机制。

在你的机器上运行(iApp API key 或本地权重,泰/英实时 HUD,可选录制):github.com/iapp-technology/openthai-systemone-doom

🇹🇭 泰语任务展示(v0.3 通过 API 的真实输出,2026 年 9 月 22 日)​

七个日常泰语任务,每个都在一次前向计算中作答;概率为模型的实际输出。

任务状态(节选)问题回答
工单分流"转账 App 从昨晚起一直报 error 502 … 明天要给孩子交学费"(泰语)哪个团队(4 个)· 紧急程度(score)· 措辞是否礼貌technical 72%(billing 27%)· 2.13 = 紧急(85%)· 礼貌 1%(错误,见注)
新闻主题"内阁批准全国最低工资上调至 400 泰铢,1 月 1 日生效;工业联合会担忧影响中小企业"主题(8 类)· 是否与劳工相关经济 62%(劳工 36%)· 98%
助手意图"帮我设明早六点半的闹钟,醒来时再放点轻音乐"意图(10 类)alarm set 99.5%
评论审核一条辱骂性泰语评论是否有害 · 情感有害 94% · 负面 97%
基于文档的问答关于拉玛八世大桥的段落(2002 年 5 月 7 日通车,长 475 米)"桥有多长" 可回答 · "是否说明了建设预算"98.5% · 0.6%
智能体工具选择任务 "今晚八点订 4 人餐位";历史显示 search_restaurants 已找到空位下一个工具(5 个)make_reservation 96.5%
RAG 相关性 + 抽取关于楼宇租金预扣税的问题;段落写明 5%段落是否相关 · 税率98% · 5%(76%)

第一行的说明:该工单使用了礼貌的 "รบกวน…นะครับ",正确答案应为是,而模型以 99% 回答否。对正式泰语礼貌程度的判断是已知短板,v0.4 将加入针对性数据。我们保留这个失误,因为只展示成功的案例没有意义。

三种问题类型​

类型你提供你得到
choice指令 + 最多 255 个选项(名称 → 描述或 null)choice、每个选项的 probabilities、confidence
score指令 + 2–10 个有序等级描述score(按概率加权,可为小数)、probabilities、confidence
noul一个是/否问题noul = p(是)

一次请求中的所有问题在同一次前向计算中一起作答。confidence 为 1 − 归一化熵,abstain 为"没有任何选项合适"的概率。

📊 数据(v0.3,2026 年 9 月 22 日)​

所有数字均为零样本:模型只看到状态、指令以及选项名称与描述,且均为经过校准的 v0.3 版本的结果;早期版本见下方版本表。

Bespoke Labs 的 13 子集公开基准(与对比 Jev 时相同的数据源、切分、指令和采样器)。choice 与 noul 报告准确率,score 报告等级完全匹配率。粗体为 0.8B 模型领先 Nimble-9B 的子集。

子集类型nOpenThai-SystemOne 0.8BNimble-9BJev 1.13.0我们的 ECE
aegis2noul25083.281.280.40.065
boolqnoul30079.786.089.70.049
civil_commentsnoul30079.070.381.00.087
helpsteer2score25041.639.034.10.371
massive-de-DEchoice35088.383.486.90.057
massive-en-USchoice35088.386.987.40.070
multinlichoice29989.085.382.90.053
pawsnoul25094.082.889.20.035
pubmedqachoice25064.075.677.20.259
squad2noul29989.380.682.90.041
summeval-consistencyscore14475.075.781.20.076
summeval-relevancescore24021.749.235.00.356
vitaminc-devchoice59972.576.680.10.118
宏平均74.374.876.0

如实解读:0.8B 模型宏平均 74.3,与 Nimble-9B(74.8)仅差 0.5 分,并在 13 个子集中的 8 个领先(aegis2、civil_comments、helpsteer2、massive-de、massive-en、multinli、paws、squad2)。仍明显落后的是 pubmedqa(64.0)以及两项摘要打分任务(relevance 21.7;consistency 75.0,较 v0.2 的 84.0 回退)。13 个子集中有 11 个的 ECE 得到改善。Nimble-9B 与 Jev 的数字来自 Bespoke Labs 的公开结果(2026 年 9 月 18 日);我们的数字用 scripts/06_eval.py 在 scripts/06b_public_benchmarks.py 重建的相同子集上测得。注意:自 v0.3 起,SQuAD2、BoolQ、PAWS、Aegis2 与 MASSIVE-de 的训练切分已进入训练数据;基准子集仍仅使用验证/测试切分。作为参照,Bespoke 报告的原始 Qwen3.5-0.8B 45.4 是在其私有的 324 条留出集上测得(Nimble-9B 90.1、Jev 93.2),并非本基准。

泰语留出测试集(完整评测集;标 * 的数据集整体留出;ECE 越低,confidence 越可信):

测试集任务准确率ECE备注
Prachathai67k新闻主题(choice)98.10.004v0.2:97.6
Prachathai67k逐主题是/否(noul)94.20.008
MASSIVE-th60 类意图(choice)90.00.043v0.2:88.6
XNLI-th自然语言推理(choice)77.10.045
XNLI-th蕴含是/否(noul)84.30.049
SIB-200 Thai*7 类主题(choice)77.90.084从 v0.2 的 74.0 恢复
泰语对比句对(单一事实翻转)choice / noul / score80.7 / 83.5 / 78.60.098 / 0.109 / 0.156
Wongnai评论星级 1–5(score)63.5 完全匹配(MAE 0.44)0.039
xLAM 工具选择(英语)工具选择(choice)99.40.006
Wisesight*4 类社交媒体情感(choice)51.60.353仍是最弱的泰语测试集;请使用顺序不变模式
banking77*(英语)77 类意图(choice)45.40.236v0.2:37.8(v0.2 顺序不变模式下 61.7)

在泰语任务及 NLI/主题任务上可以信任 confidence(ECE 不超过 0.05)。英语多级打分任务(helpsteer2、summeval-relevance)的 ECE 仍然偏高,低置信度的案例应转给更大的模型或人工。

顺序不变模式 — 与 Jev 一样,单次前向计算对选项的顺序敏感(在 v0.2 上测得:不超过 10 个选项时随机打乱会使 5–12% 的 argmax 答案翻转,77 类的 banking77 则为 72%)。客户端与 API 提供顺序不变模式,在一次批量计算中对多个循环选项顺序的答案取平均(order_invariant: true / permutations: n,选项超过 10 个的 choice 问题自动启用)。在 360 条泰语留出问题上:翻转率 18.9% → 3.3%,平均概率偏移 0.19 → 0.08,准确率 68.6 → 73.6,banking77 41.7 → 63.3。代价约为 2 倍延迟(批量),usage.input_tokens 不会增加。

延迟 — 3 个问题的请求在 H100 上约 40 毫秒,在 MacBook M3 Max(Apple GPU,MPS)上 154 毫秒;从笔记本经 API 往返含网络约 170–220 毫秒。255 个选项的问题在 H100 上 44 毫秒,在 MacBook 上 1.5 秒。纯 CPU 仍较慢(约 4.6 秒),请使用 GPU 或 MPS。

⚙️ 工作原理​

架构:状态与问题 → Qwen3.5-0.8B 文本塔 → 每个 ts_answer 位置的隐状态 → 256 槽位决策头 → 掩码 softmax → choice / score / noul

  • 骨干 — 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 即可复现。

  1. scripts/00_prepare_base.py — 去掉 Qwen3.5-0.8B 的视觉编码器,保留文本塔(752M 参数)。
  2. scripts/01_cpt_data.py + scripts/02_cpt_train.py — 以泰语为主的继续预训练(过滤后的 FineWeb-2 泰语、泰语维基百科、泰语指令与摘要文本、OPUS 泰英平行语料、FineWeb-Edu 回放、合成无障碍树与 JSON)。单张 H100 约 40 小时,留出集困惑度 31.4 → 5.38。
  3. 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)。标 * 的数据集整体留出仅用于评测。
  4. scripts/03b_synth_generate.py — 用 Qwen3.6-35B-A3B 生成约 10 万条合成泰/英决策任务,逐条盲标复核并过滤答案泄漏(数据集 iapp/openthai2.0-systemone-synth)。
  5. scripts/04_decision_train.py — 换头 + 12k 步 SFT,随后进行校准阶段(Brier 损失 + 按问题类型的温度),使更高的 confidence 确实对应更高的准确率。v0.2 在 v0.1 基础上继续训练 3,000 步,使用 22k 条合成泰语社交媒体情感数据(含"提问"类的 4 类、3/5 类变体、是/否标记、5 级打分),然后重新校准。v0.3 在 v0.2 基础上继续训练 5,000 步,使用 177k 条真实训练切分记录(SQuAD2、BoolQ、PubMedQA-artificial、PAWS、Aegis2、ToxicChat、XQuAD-th、MASSIVE-de)和 78k 条针对弱项的合成记录(基于文档的是/否问答、摘要打分、40–120 类近似重复意图、安全判断、对抗性改写),情感数据集权重由 4× 降至 2×,然后重新校准。
  6. 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.3 — 0.8B 模型不是推理模型,不会做多步验证或算术。
  • 只能在给定选项中作答,但仍可能出错 — 它无法输出不存在的选项,但可能选错。请使用 confidence 字段,把低置信度的案例转给更大的模型或人工。
  • 仅支持文本 — 不接受图像。每个问题最多 255 个选项(更多请分组),每次请求最多 64k token。
  • 纯 CPU 仍较慢 — 请使用 GPU 或 Apple MPS。
  • v0.3 已知弱项 — 两项 5 级打分任务(摘要相关性 22、有用性 42)、细粒度 77 类英语意图(banking77 单一顺序 45)、泰语社交媒体情感(Wisesight 52)、PubMedQA 三分类(64),以及正式泰语的礼貌判断(v0.4 将加入针对性数据)。
  • 对选项顺序敏感 — 与 Jev 一样,单次计算的答案在打乱选项后可能改变。请使用 order_invariant: true(超过 10 个选项时自动启用),代价约为 2 倍延迟。
  • 英语校准弱于泰语 — ECE 中位数 0.15,泰语不超过 0.05,因为训练数据有意以泰语为主。

🗓 版本​

版本日期变更公开基准宏平均Wisesight
v0.32026-09-22在 v0.2 基础上继续 SFT 5,000 步,使用 177k 条真实训练切分记录 + 78k 条针对弱项的合成记录(基于文档的问答、摘要打分、细粒度意图、安全、改写),并重新校准74.351.6
v0.22026-09-21在 v0.1 基础上用 22k 条合成泰语社交情感数据继续 SFT 3,000 步并重新校准;客户端与 API 加入顺序不变模式63.251.5
v0.12026-09-20首次发布:泰语 CPT 44.7 亿 token、12k 步 SFT、校准61.938.7

v0.3 使 SQuAD2 50.2 → 89.3、PAWS 68.0 → 94.0、Aegis2 61.6 → 83.2、MASSIVE-de 67.4 → 88.3、BoolQ 64.7 → 79.7、MASSIVE-en 79.1 → 88.3、PubMedQA 56.4 → 64.0、SummEval-relevance 14.2 → 21.7、VitaminC 68.6 → 72.5、MultiNLI 87.3 → 89.0,13 个子集中 11 个的 ECE 得到改善。SummEval-consistency 回退 84.0 → 75.0(合成一致性数据仅覆盖 1/3/5 级,将补充 2/4 级)。泰语留出测试集全部持平或上升(SIB-200 74.0 → 77.9、banking77 37.8 → 45.4)。完整变更记录见模型卡。

🤝 一起完善它​

  • 更多泰语测试集 — 尤其是选项很多的任务和 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​

Siam AI Corporation

泰语继续预训练、SFT 与全部评测均在 Siam AI Corporation 慷慨提供的 NVIDIA H100 GPU 上完成。感谢其对开放泰语 AI 的持续支持。