請求メモから税込額を拾う。案内文から締切の一文を抜く。問い合わせ先を選び、確認した原文も添える。THX-01は、こうした決まった形の答えを返す小型の判断モデルです。日本時間2026年10月9日2時23分に、Pythonパッケージthx01の1.0.0が配布されました。PyPIの配布記録
今回の新しさは正式パッケージの配布です。数値・引用の機能自体は、10月6日未明の公開履歴にもあります。紹介投稿の日をモデルの初公開日と取り違えず、少し早く公開されていた道具を、日本語の実務で使えるか確かめました。公式の更新履歴
架空資料6件をCPUで各1回試すと、空白を入れた金額と改行された締切文は取り出せました。一方、未確定の税込額を税抜額と取り違え、空白のない金額を見落とす例もありました。結果を直さず、何がモデルの判断で、何が前後のプログラムの制約かを説明します。
THX-01は何を返すモデルか
HAL-X AIが公開したTHX-01は322M、約3.22億パラメータのテキスト用モデルです。mmBERT-baseという文章を読むモデルに判断用の部分を組み合わせ、文章と質問から答えを選びます。会話文を長く生成するチャットモデルとは使い方が異なります。公式モデルカード
| 指定する型 | 返るもの | 今回の用途 |
|---|---|---|
choice | 選択肢と候補別の数値 | 担当部署の一次仕分け |
number | 原文に記載された数値、またはnull | 税込合計の抽出 |
excerpt | 原文から切り出した文字列と位置 | 申込締切の一文 |
cite: true | 質問の答えを支える原文の箇所 | 部署を選ぶ根拠の確認 |
ほかに真偽を扱うnoul、順序付きの段階を扱うscoreがあります。numberは、文書に書かれた数値を探す機能で、足し算や税率の推定、通貨換算を任せるものではありません。税込額が未記載なら、期待する返答はnullです。
事後学習の18言語には日本語が含まれ、公式は日本語の分類課題の結果も掲載しています。ただし、その結果が日本語の金額抽出や引用の切り出しにそのまま当てはまるとは限りません。1問あたりの上限は質問・選択肢・本文を合わせて1,024トークン。長文は切り詰められるため、長い契約書を丸ごと渡す設計には向きません。公式の言語と制限
日本語の6件を、正解と分けて固定した
試験には架空の請求メモ、社内案内、プリンターの問い合わせを使いました。実在の請求や個人情報は含めていません。入力と期待値は実行前に別ファイルへ保存し、期待値をモデルへ渡していません。出力を見てから質問や正解を直すこともしていません。
| ID | 確認する内容 | 事前に決めた期待値 |
|---|---|---|
| N01 | 空白を挟んだ「税込合計: 52800 円」 | 52,800 |
| N02 | 税抜48,000円だけ記載、税込は後日確定 | null |
| N03 | 「税抜48000円、消費税4800円、税込52800円」 | 52,800 |
| E01 | 改行された案内から締切の一文を抜く | 「申込締切は十月十五日正午です。」 |
| E02 | 同じ内容を句点だけでつないだ段落から抜く | 同じ締切の一文 |
| C01 | プリンターの接続相談を担当へ回す | 情報システム部と担当一覧の根拠 |
実行機はApple M2 Ultra・192 GiBメモリ、macOS 27、Python 3.12.10。CPUのfloat32・4スレッド、seed=0で各1回です。公式thx01==1.0.0、torch 2.14.0、Transformers 5.19.0.dev0を使い、公開重みをbef2e2478be7acd79429324a658558a57552a2e8に固定しました。初期取得後はOSで通信を遮断しています。これは最低必要メモリや他の端末の速度を調べる試験ではありません。
実測:返り値の形式と、意味の正しさを分ける
6件ともエラーなく返り値を取得できました。数値は期待値と1/3件一致、締切の指定一文は1/2件一致、部署の選択は1/1件一致です。わざと表記の境界を含めた少数の教材なので、この割合を一般的な正答率として使うことはできません。
| ID | 実際の返答 | 確認結果 | 1回の処理時間 |
|---|---|---|---|
| N01 | 52,800 | 明記された税込合計と一致 | 123ms |
| N02 | 48,000 | 未確定の税込額に税抜額を返した | 77ms |
| N03 | null | 記載された52,800を見落とした | 50ms |
| E01 | 締切の一文 | 原文・文字位置とも一致 | 187ms |
| E02 | 案内の段落全文 | 締切を含むが、一文だけには絞れない | 191ms |
| C01 | itと原文3箇所 | 部署は一致。担当の対応文に加え、無関係な見出しも引用 | 235ms |
モデルの読込は約49.38秒でした。表の時間は読込後のagent.decideの処理で、型ごとの候補作成や複数の推論、答えの組立てを含みます。各1回の観測値で、平均速度や他モデルとの比較ではありません。
C01は「共有プリンターに接続できません」と、「接続設定と端末不具合は情報システム部」という対応を含む文を返しました。一方、意味のない「架空の問い合わせ」という見出しも引用しています。また、事前の厳密な検査は「問い合わせ先一覧:」という見出し込みの文を求めていたため、その完全包含は不一致になりました。原文を読むと必要な対応内容は含まれており、見出しまで一致したかと、根拠の意味が合うかを区別できます。
確率1.0でも、候補を拾えていないことがある
N03は、モデルの前にある数値候補の抽出でつまずきました。公式1.0.0は正規表現で本文から候補を集めます。今回の「税込52800円」のように日本語の文字と数字が連続する表記では、数字を候補として拾えませんでした。候補が空のまま「記載なし」だけを選ぶため、nullとともにprobability=1.0、confidence=1.0が返っています。固定版の数値処理
E02も似た問題です。公式の引用処理は句や行を分け、空白で区切った単語の始まりと終わりを選びます。日本語の「。」だけでつないだ今回の段落は一つの区画・単語として扱われ、全文がprobability=1.0で返りました。原文からの切り出しなので新しい文字は作っていませんが、「締切の一文だけ」という依頼は満たしていません。固定版の引用処理
confidenceも型によって意味が異なります。通常のchoiceとそこから作るnumberでは、候補分布の偏りを表す値です。excerptのprobabilityは、内部で行う複数の選択の値を掛け合わせています。「日本語で正しい確率」や、担当者の確認を省ける保証として扱わないでください。公式の計算処理
公式カードには約10ms・一度の推論という説明がありますが、引用を返すライブラリ処理は区画と単語を選ぶ複数段階です。引用根拠のciteも追加の判定を行い、閾値に届く箇所がなくても最上位の一つを返す実装です。すべての型が一回・10msで終わる、根拠がなければ引用は必ず空になる、といった前提では組み込めません。
教材で再集計してから、自分の入力へ広げる
再現用教材ZIPには、入力、別に保存した期待値、実際の応答、集計スクリプトを収録しています。まず展開先で次を実行すると、モデルを導入せず保存結果を検査できます。通信や有料APIは使いません。
python3 test_evaluate.pypython3 evaluate.py8つの検収テストは、誤った数値や全文引用、原文に存在しない位置などを区別するためのものです。この成功をTHX-01の品質試験と混同しないでください。expected.jsonと生応答も開き、金額が税抜か税込か、引用が質問へ答えているかを人が読み比べます。
モデルを再実行する場合は、別のPython環境へ公式パッケージと公開重みを用意します。次の取得処理にはインターネット接続が必要です。重みだけで約644MB、ほかにトークナイザーや依存ライブラリが必要です。
python3 -m venv .venv. .venv/bin/activatepython -m pip install 'thx01==1.0.0'hf download doofz/THX-01 \ --revision bef2e2478be7acd79429324a658558a57552a2e8 \ --include 'config.json' 'rl_agent_config.json' 'model.safetensors' 'encoder/*' 'tokenizer/*' \ --local-dir ./modelpython run_local.py --model-dir ./model --output-dir my-results --runpython evaluate.py --raw my-results/raw.responses.jsonlこのランナーはCPUを指定し、取得済みのローカルモデルだけを読みます。出力先が既に存在すると止まります。教材のREADMEには今回の依存バージョンとOS通信遮断の条件を記載しています。別環境の試行は保存結果を上書きせず、別フォルダで残してください。
業務へ進めるなら、最初は「抽出候補を出す→原文と並べる→人が確定する」流れが扱いやすいでしょう。空白や改行を整える場合も元の文書を残し、同じ意味の異なる表記、値がない例、複数の似た金額を別々に検収します。今回の失敗を直すための前処理や再学習は実施していません。
数値を探す道具の役割はJevの3択を繰り返すjev-bisect、モデルと周辺ツールの違いはJev系モデルの比較記事も参考になります。THX-01の重みはApache 2.0で配布されていますが、実行する計算機、電力、検収の手間まで無料になるわけではありません。