System One モデルは、自然言語の入力を理解し、生成されたテキストではなくソフトウェアが直接利用できる「型定義された回答(typed answers)/ 決定(typed decisions)と確率」を高速に返す AI モデルのクラスです。ステートを評価して高速かつ構造化された意思決定を行うのが特徴で、TypeSafe のフラッグシップモデル Jev が初の System One モデルです。
Jev 入門 : コンセプト – System One モデルとステート
作成 : クラスキャット・セールスインフォメーション
作成日時 : 10/09/2026
* 本記事は docs.typesafe.ai の以下のページを参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。

Jev 入門 : コンセプト – System One モデル
System One モデルは、ソフトウェア向けに高速で構造化された意思決定を行います。Jev は TypeSafe のフラッグシップモデルであり、初の System One モデルです。
System One モデルは、ソフトウェアが直接利用できる、高速かつ構造化された意思決定を行うために構築された AI モデルのクラスです。System One モデルはステート (state) を評価し、型定義された回答(typed answers)と確率を返します。
Jev は TypeSafe のフラッグシップモデルであり、初の System One モデルです。
LLM と同様に、System One モデルも自然言語の入力を理解します。ただし、生成されたテキストではなく、型定義された決定(typed decisions)と確率を返します。
ℹ️ Jev currently accepts text input only. It evaluates strings, JSON objects, and arrays of text. Images, audio, and video are not supported (yet).
LLM との違い
System One モデルは、キャリブレーションされた(較正された)意思決定のためにトレーニングされています: それらの確率は、不確実性を反映するよう結果に対して最適化されています。キャリブレーションは予測のグループ全体にわたって測定されるものです; 個々の回答が正しいことを保証するものではありません。
System One モデルは、返信を書いたり、コードを生成したり、推論の説明を生成したりはしません。ユーザーは プリミティブ を通じて可能な回答を定義します :
| プリミティブ | 質問 | 回答空間の例 | 出力例 |
|---|---|---|---|
| Choice | どのチームがこのチケットを処理すべきか? | billing, technical, or account | choice: “billing” |
| Score | この顧客はどれほど不満を感じているか? | 0 = calm, 1 = frustrated, 2 = very frustrated | score: 1.4 |
| Noul (真偽確率) | このメッセージは返金を要求しているか? | True or false | noul: 0.95 |
これらは設定と値の例示です。利用可能な設定オプションとすべてのレスポンスフィールドについては、各プリミティブのページで説明しています。
System One モデルの仕組みやトレーニング方法については、AI 入門 を読んでください。
ℹ️ The System One name comes from the concept Daniel Kahneman popularized in his book Thinking, Fast and Slow. System 1 thinking is fast and intuitive. System 2 is slower and more deliberate. Here, the emphasis is on fast, focused judgments.
より大きなワークフロー内での迅速な判断
返金リクエストの場合、アプリケーションは以下の処理を行うことができます:
- 顧客からのメッセージ、関連する取引履歴、および返金ポリシーを含むステートを構築する。
- 互いに独立した複数の問いをまとめて問い合わせる: 返金が要求されているか、証拠から重複請求が示唆されるか、ポリシーが返金をサポートしているか
- これらの回答をコードによる決定論的なチェックと組み合わせてから、アクション実行または人間によるレビューへと案件をルーティングする。
プリミティブの実際の動作を確認したら、それらを組み合わせてより大規模なシステムを構築できます。System One モデルは自由形式のテキストではなく、型付けされた制約付きの出力を返すため、コード側でその回答を検証し、予測可能なワークフローへと統合することが可能です。See How to build with TypeSafe for the full workflow.
また、System One モデルからの回答には確信度(confidence) も含まれているため、いつアクションを実行すべきか、いつ人間や推論モデルへエスカレーションすべきかを判断することができます。
System One モデルを呼び出す
クライアント SDK のいずれか、または HTTP API の POST /v1/systemone を介して System One モデルを呼び出します。model フィールドでリクエストを処理するモデルを指定します。このドキュメント内のサンプルでは jev-latest を使用しており、これは SDK のデフォルトでもあります。See Models for the available models, their prices, and their aliases.
まずは ステート (後述) により入力を準備し、プリミティブ (質問) により質問できる問いの種類を確認してください。
Jev 入門 : コンセプト – ステート
ステート (State) とは何か、どのように構造化するか、そして System One モデルに必要なコンテキストをどのように提供するか。
ステート とは、System One モデルに評価を依頼する対象となるコンテンツです。サポートメッセージやテキストの一節、あるいはアプリケーションの現在の状態などが該当します。API リクエストを送信する際、回答を得たい質問とともに、state フィールドにこれを指定します。
1 回のリクエストで、1 つのステートが 1 つまたはそれ以上の質問に対して評価されます。すべての質問は同一のステートを参照し、それぞれ独立に評価されます。また、1 回のリクエスト内に Choice、Score、Noul の各質問タイプを混在させることも可能です。
ステートは単純な文字列や構造化された JSON 値
最も単純なステートは、プレーンな文字列です:
state = "My card was charged twice."
ステートは、モデルが関連する質問に答える助けとなる、文脈や具体例、その他の情報を含んだ JSON オブジェクトや配列にすることもできます。ステートとは、専門家チームに判断を求める前に提示する資料 (material) のようなものだと考えてください。Python では、対応する文字列、辞書、またはリストをそのまま client.system_one(state=…) に渡します。
| 形式 | 用途 | 例 |
|---|---|---|
| 文字列 | メッセージ、記事 or テキストの一節 | “My card was charged twice.” |
| オブジェクト | 名前付きフィールド、関連レコード or アプリケーションの状態 | {“message”: “My card was charged twice.”, “order_id”: “A-104”} |
| 配列 | メッセージやレコードのシークエンス | [“Hi”, “My customer number is TS1337.”, “My card was charged twice.”] |
大半のリクエストにはオブジェクトを使ってください、するとステートの各パーツに分かりやすい名前が付き、関係性も明確に保てるためです。文字列が適しているのは、ユースケースが単純で単一のテキストだけを必要とする場合です。
ℹ️ Jev accepts text only. State must be a string, JSON object, or array of text values. Images, audio, and video are not supported (yet). Jev’s primary training language is English; other languages, including CJK scripts, are accepted but currently have lower accuracy — see Models.
ステートとしてのサポート会話 (の例)
{
"ticket": {
"subject": "Duplicate charge",
"messages": [
{"from": "customer", "text": "I was charged twice for order A-104. Please refund the duplicate."},
{"from": "support", "text": "We are checking the charges."}
]
},
"order": {
"id": "A-104",
"charges": [
{"amount_usd": 49, "status": "captured"},
{"amount_usd": 49, "status": "captured"}
]
},
"refund_policy": "Duplicate charges are eligible for a refund."
}
このオブジェクトは、会話、order、ポリシーを含んでいても、一つの状態として扱われます。これらの要素を比較して判断する必要がある場合は、関連情報をまとめて提示してください。
コンテンツと質問の分離
ステートには、コンテンツとそれを裏付けるファクトを含めます。質問(Questions)では、その資料 (対象情報) に対してモデルが下すべき判断を定義します。たとえば、返金リクエストとポリシー規約をステートに保持し、その上で顧客が返金を要求しているか、ポリシーはその返金を認めているかを質問として投げかけます。
※ See Primitives (Questions) for guidance on instructions, criteria, question types, and asking several questions about one state.
※ See the API reference for the request schema and client SDKs for installation, typed inputs, and response handling.
以上