{"componentChunkName":"component---src-templates-info-posts-js","path":"/information/AI/81441771-b45d-567a-ac44-9b3a1bd8ef28","result":{"data":{"microcmsInformation":{"id":"81441771-b45d-567a-ac44-9b3a1bd8ef28","title":"Jev公式Playgroundの使い方 ─ Noul・Choice・Scoreを実際に試してみた","date":"2026 年 10 月 05 日","image":{"url":"https://images.microcms-assets.io/assets/52137c02cafa4450bbdc092b64fbadac/c0fb7618c42547af9f8d7a6c2e58753c/jev-playground-noul-choice-score.png"},"author":{"author":"Goubara"},"body":"<p>前回の記事では、TypeSafe AIが開発した「文章を書かないAI」Jevについて紹介した。</p><p>JevはChatGPTやClaudeのように文章を生成するのではなく、与えられた状態から「どれを選ぶか」「どの程度か」「Yesである確率は何％か」といった判断だけを返すAIである。</p><p>では、実際にはどのように動くのか。</p><p>今回は、TypeSafe公式のコンソール（<a href=\"http://console.typesafe.ai\">console.typesafe.ai</a>）に用意されている<strong>Playground</strong>を使って、コードを書かずにJevを触ってみた。</p><p>※本記事の内容は2026年10月5日時点の画面と公式ドキュメントに基づく。Jevは公開から間もないサービスのため、画面や仕様は変わる可能性がある。</p><h2 id=\"h7861b3d48e\">■Playgroundを開く</h2><p>TypeSafeの公式サイト（<a href=\"http://typesafe.ai\">typesafe.ai</a>）からコンソールにサインインし、左側のメニューから<strong>Playground</strong>を選ぶ。直接開く場合のURLは次のとおり。</p><pre><code class=\"language-text\">https://console.typesafe.ai/playground\n</code></pre><figure><img src=\"https://images.microcms-assets.io/assets/52137c02cafa4450bbdc092b64fbadac/b20990781018446da43feb947baee946/typesafe.png\" alt=\"\" width=\"1098\" height=\"901\"></figure><p>左側のメニューには、次の項目が並んでいる。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>メニュー</p></th><th colspan=\"1\" rowspan=\"1\"><p>内容</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Home</p></td><td colspan=\"1\" rowspan=\"1\"><p>コンソールのトップ</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Playground</p></td><td colspan=\"1\" rowspan=\"1\"><p>コードを書かずにJevを試す画面</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Usage</p></td><td colspan=\"1\" rowspan=\"1\"><p>API利用量の確認</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>API Keys</p></td><td colspan=\"1\" rowspan=\"1\"><p>APIキーの発行・管理</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Documentation</p></td><td colspan=\"1\" rowspan=\"1\"><p>公式ドキュメント（<a href=\"http://docs.typesafe.ai\">docs.typesafe.ai</a>）へのリンク</p></td></tr></tbody></table><p>左下には<strong>Balance（残高）</strong>が表示されている。</p><h2 id=\"h5d0410627d\">■画面は「State」と「Questions」の2つに分かれている</h2><p>Playgroundの画面は、上下2つの入力欄で構成されている。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>欄</p></th><th colspan=\"1\" rowspan=\"1\"><p>入れるもの</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>State</p></td><td colspan=\"1\" rowspan=\"1\"><p>判断させたい情報（文章やJSON）</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Questions</p></td><td colspan=\"1\" rowspan=\"1\"><p>Jevに聞きたい質問</p></td></tr></tbody></table><p>ChatGPTのような「プロンプト入力欄」は存在しない。<strong>「判断材料」と「質問」を分けて渡す</strong>のがJevの基本である。</p><p>State欄には、最初から次のようなサンプルが薄く表示されている。</p><pre><code class=\"language-json\">{\n  &quot;example_state&quot;: &quot;Add context for TypeSafe to evaluate&quot;\n}\n</code></pre><p>ここに、問い合わせメールやフォームの投稿内容など、判断させたい情報を入れる。</p><p>画面下部には使用するモデル（初期値は <code>jev-latest</code>）と<strong>Run</strong>ボタンがあり、Runを押すとJevが判定を返す。</p><h2 id=\"h0a262c7dcb\">■質問の型は3種類から選ぶ</h2><p>Questions欄の <code>{</code> の中にカーソルを置くと、「Select primitive type」という候補が表示される。ここで選べるのが、Jevの3つの質問の型（プリミティブ）だ。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>型</p></th><th colspan=\"1\" rowspan=\"1\"><p>画面の説明</p></th><th colspan=\"1\" rowspan=\"1\"><p>例</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Noul</p></td><td colspan=\"1\" rowspan=\"1\"><p>Evaluate how true something is</p></td><td colspan=\"1\" rowspan=\"1\"><p>Is <code>food</code> a sandwich?</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Score</p></td><td colspan=\"1\" rowspan=\"1\"><p>Set up a rubric to grade with</p></td><td colspan=\"1\" rowspan=\"1\"><p>How much did <code>subject</code> contribute?</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Choice</p></td><td colspan=\"1\" rowspan=\"1\"><p>Ask a multiple choice question</p></td><td colspan=\"1\" rowspan=\"1\"><p>What color is <code>object</code>?</p></td></tr></tbody></table><p>日本語にすると、次のようになる。</p><ul><li><strong>Noul</strong>：それがどのくらい正しいか（Yesである確率を0〜1で返す）</li><li><strong>Score</strong>：自分で決めた評価基準（ルーブリック）で段階評価する</li><li><strong>Choice</strong>：選択肢の中から1つ選ぶ</li></ul><p>自由記述で答えさせる型はない。<strong>最初から「答えの形」を決めてから質問する</strong>という点が、通常の生成AIとの大きな違いである。</p><h2 id=\"he2a2f68f7c\">■右側の「Learn to TypeSafe」で例を試せる</h2><p>画面右側には「Learn to TypeSafe」というパネルがあり、すぐに試せるサンプルが用意されている。</p><p><strong>Walkthrough lessons</strong>（3つの型を1つずつ学ぶレッスン）</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>型</p></th><th colspan=\"1\" rowspan=\"1\"><p>レッスン</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Noul</p></td><td colspan=\"1\" rowspan=\"1\"><p>Is hotdog a sandwich?（ホットドッグはサンドイッチか？）</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Choice</p></td><td colspan=\"1\" rowspan=\"1\"><p>What color is the sky?（空は何色か？）</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Score</p></td><td colspan=\"1\" rowspan=\"1\"><p>Can monkeys create art?（サルは芸術を生み出せるか？）</p></td></tr></tbody></table><p><strong>Real-life use cases</strong>（実務を想定したサンプル）</p><ul><li>Resumé screening：エンジニアの履歴書の評価</li><li>Support agent audit：カスタマーサポート対応の監査</li><li>LLM guardrails：ジェイルブレイク（脱獄）の試みの検出</li></ul><p>「ホットドッグはサンドイッチか」のように答えが割れそうな問いを、Yes/Noの二択ではなく<strong>確率</strong>で返させるのがNoulの面白いところだ。</p><h2 id=\"habff669209\">■問い合わせメールを判定させてみる</h2><p>公式のQuick Startにある例を使って、実務に近い判定を試してみる。<br>※クレジットに事前入金が必要です。</p><figure><img src=\"https://images.microcms-assets.io/assets/52137c02cafa4450bbdc092b64fbadac/d3bf77dbe10844678e7f8205ee804417/typesafe2.png\" alt=\"\" width=\"1099\" height=\"902\"></figure><p>State欄には、次の問い合わせ文を入れる。</p><pre><code class=\"language-text\">Hi, I&apos;ve been trying to connect my Stripe account for 3 days and the integration keeps failing. I&apos;m losing sales. Please help ASAP.\n</code></pre><p>「Stripe連携が3日間失敗していて、売上を失っている。至急助けてほしい」という内容だ。</p><p>Questions欄には、3つの型をまとめて入れる。</p><pre><code class=\"language-json\">{\n  &quot;department&quot;: {\n    &quot;type&quot;: &quot;choice&quot;,\n    &quot;instructions&quot;: &quot;Which team should handle this&quot;,\n    &quot;criteria&quot;: {\n      &quot;billing&quot;: &quot;Payment or subscription issues&quot;,\n      &quot;technical&quot;: &quot;Bugs or integration problems&quot;,\n      &quot;sales&quot;: &quot;Pricing or account questions&quot;\n    }\n  },\n  &quot;frustration&quot;: {\n    &quot;type&quot;: &quot;score&quot;,\n    &quot;instructions&quot;: &quot;How frustrated the customer appears&quot;,\n    &quot;criteria&quot;: [\n      &quot;Calm, just stating facts&quot;,\n      &quot;Frustrated but civil&quot;,\n      &quot;Very angry, strong language&quot;\n    ]\n  },\n  &quot;is_urgent&quot;: {\n    &quot;type&quot;: &quot;noul&quot;,\n    &quot;instructions&quot;: &quot;The message conveys urgency or time-sensitivity&quot;\n  }\n}\n</code></pre><p>聞いているのは次の3点である。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>質問</p></th><th colspan=\"1\" rowspan=\"1\"><p>型</p></th><th colspan=\"1\" rowspan=\"1\"><p>内容</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>department</p></td><td colspan=\"1\" rowspan=\"1\"><p>Choice</p></td><td colspan=\"1\" rowspan=\"1\"><p>どの部署が担当すべきか（請求・技術・営業）</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>frustration</p></td><td colspan=\"1\" rowspan=\"1\"><p>Score</p></td><td colspan=\"1\" rowspan=\"1\"><p>顧客のいら立ちの度合い（3段階）</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>is_urgent</p></td><td colspan=\"1\" rowspan=\"1\"><p>Noul</p></td><td colspan=\"1\" rowspan=\"1\"><p>緊急性があるか</p></td></tr></tbody></table><p>Runを押すと、画面右側に<strong>Response</strong>パネルが開き、結果が表示された。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p></p><figure><img src=\"https://images.microcms-assets.io/assets/52137c02cafa4450bbdc092b64fbadac/663177bb0fee4cf9b63dfc5fcce0eccb/typesafe3.png\" alt=\"\" width=\"1097\" height=\"898\"></figure><p>質問</p></th><th colspan=\"1\" rowspan=\"1\"><p>結果</p></th><th colspan=\"1\" rowspan=\"1\"><p>Confidence</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>department</p></td><td colspan=\"1\" rowspan=\"1\"><p>technical 82% / billing 18% / sales 0%</p></td><td colspan=\"1\" rowspan=\"1\"><p>73%</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>frustration</p></td><td colspan=\"1\" rowspan=\"1\"><p>1 of 2</p></td><td colspan=\"1\" rowspan=\"1\"><p>100%</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>is_urgent</p></td><td colspan=\"1\" rowspan=\"1\"><p>99%（true）</p></td><td colspan=\"1\" rowspan=\"1\"><p>―</p></td></tr></tbody></table><p>「連携が失敗している」という内容から、担当は<strong>technical（技術）</strong>と判定された。ただしbilling（請求）にも18%が割り振られている。Stripe（決済サービス）や「売上を失っている」といった言葉から、請求関係の可能性も残したのだろう。</p><p>いら立ちの度合いは「1 of 2」。0〜2の3段階のうち1、つまり2番目の「Frustrated but civil（いら立っているが礼儀正しい）」である。緊急性は99%で、ほぼ確実にYesという判定だ。</p><p>ポイントは、<strong>返信文はどこにも出てこない</strong>ことだ。返ってくるのは選択肢・段階・確率という「判断の結果」だけである。</p><h2 id=\"h8c1b605fde\">■結果の読み方</h2><p>3つの型は、返ってくる値の形がそれぞれ違う。</p><table><tbody><tr><th colspan=\"1\" rowspan=\"1\"><p>型</p></th><th colspan=\"1\" rowspan=\"1\"><p>主な値</p></th><th colspan=\"1\" rowspan=\"1\"><p>読み方</p></th></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Choice</p></td><td colspan=\"1\" rowspan=\"1\"><p>choice / probabilities / confidence</p></td><td colspan=\"1\" rowspan=\"1\"><p>選ばれた選択肢と、全選択肢の確率</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Score</p></td><td colspan=\"1\" rowspan=\"1\"><p>score / legend / probabilities / confidence</p></td><td colspan=\"1\" rowspan=\"1\"><p>段階上の位置（0始まり）と、各段階の確率</p></td></tr><tr><td colspan=\"1\" rowspan=\"1\"><p>Noul</p></td><td colspan=\"1\" rowspan=\"1\"><p>noul</p></td><td colspan=\"1\" rowspan=\"1\"><p>Yesである確率（0〜1）</p></td></tr></tbody></table><p>特に間違えやすいのが次の2点である。</p><p><strong>Scoreは0始まり</strong></p><p>3段階で定義した場合、scoreは0〜2の範囲で返る。Playgroundでは「1 of 2」のように「最大2のうち1」という形で表示されるので、「2段階中の1段階目」と読み間違えないようにしたい。</p><p><strong>Noulの0.5は「中くらい」ではない</strong></p><p>公式ドキュメントによると、Noulは1に近いほど強いYes、0に近いほど強いNo、0.5付近は「判断がつかない」という意味になる。0.5は「YesとNoが同じ確率」であって、「中程度にYes」という意味ではない。</p><p>また、ChoiceとScoreに付く<strong>confidence</strong>は、確率が1つの選択肢にどれだけ集中しているかを表す値だ。確率がばらけているほど低くなる。今回のdepartmentは、technicalの確率が82%でも、billingに18%が割れているためconfidenceは73%にとどまった。</p><h2 id=\"h16b0839b31\">■「AIに処理させる」のではなく「AIに選ばせる」</h2><p>Playgroundを触っていて最も分かりやすかったのが、この部分だった。</p><p>普通の生成AIを使ったシステムでは、</p><pre><code class=\"language-text\">ユーザー入力\n ↓\nLLM\n ↓\n文章生成\n ↓\nJSONへ変換\n ↓\nプログラムが処理\n</code></pre><p>という構成になりやすい。</p><p>Jevでは、</p><pre><code class=\"language-text\">ユーザー入力\n ↓\nJev\n ↓\n選択・確率・スコア\n ↓\nプログラムが処理\n</code></pre><p>となる。</p><p>例えば先ほどの判定結果なら、</p><pre><code class=\"language-ts\">if (response.answers.department.choice === &quot;technical&quot;) {\n  assignToTechTeam();\n}\n</code></pre><p>のように、そのまま通常のプログラムへ渡せばよい。</p><p>前回の記事でJevを「AI版の超高性能if文」と紹介したが（TypeSafe自身は「smart if-statements」と表現している）、Playgroundで実際に型付きの答えが返ってくるのを見ると、この意味がよく分かる。</p><h2 id=\"hcf1f674dea\">■AIに全部やらせない設計</h2><p>Jevの考え方で特に重要なのは、</p><pre><code class=\"language-text\">AIに全部やらせない\n</code></pre><p>という点である。</p><p>例えば返金の問い合わせなら、</p><pre><code class=\"language-text\">Jevが「返金の依頼か」を判断する\n↓\nコードがルールを確認する\n↓\n条件を満たした場合だけ返金APIを実行する\n</code></pre><p>という構成にできる。</p><p>Jevが「返金」と判断したからといって、そのまま返金処理を実行する必要はない。confidenceが低い場合は人間の確認に回す、といった分岐も組める。</p><pre><code class=\"language-text\">Jev ─ 判断\nLLM ─ 推論・生成\nCode ─ 実行\n</code></pre><p>と役割を分けることで、AIの判断ミスがそのまま処理に流れるのを防げる。</p><p>今後AIエージェントが増えてくると、「どのAgentを使うか」「どのToolを使うか」「人間の確認が必要か」といった小さな判断が大量に発生する。これらすべてにGPTやClaudeの大型モデルを呼び出すのは、コストとレイテンシの面で無駄が多い。Jevはこの「小さな判断」を担う部品として設計されている。</p><h2 id=\"h2c1ad2e725\">■Playgroundで試してからAPIへ</h2><p>Playgroundで作った質問は、APIのリクエストにも流用できる。Questions欄に書くJSONは、APIの <code>questions</code> と同じ形をしている。</p><pre><code class=\"language-bash\">curl -X POST https://api.typesafe.ai/v1/systemone \\\n  -H &quot;Authorization: Bearer $TYPESAFE_API_KEY&quot; \\\n  -H &quot;Content-Type: application/json&quot; \\\n  -d &apos;{&quot;state&quot;: &quot;...&quot;, &quot;model&quot;: &quot;jev-latest&quot;, &quot;questions&quot;: { ... }}&apos;\n</code></pre><p>APIキーは左側メニューの<strong>API Keys</strong>から発行できる。</p><p>まずPlaygroundで「選択肢の分け方は適切か」「確率がどのくらい割れるか」を確かめ、うまく判定できる質問ができてからコードに組み込む。この順番で進めると無駄が少ない。</p><h2 id=\"h8bed112904\">■まとめ：Jevは「答えの形」を先に決めるAI</h2><p>今回、公式Playgroundを触ってみて、Jevの特徴が前回よりも分かりやすくなった。</p><p>ChatGPTやClaudeは、</p><pre><code class=\"language-text\">考える\n↓\n文章を書く\n</code></pre><p>ことが得意なAIである。</p><p>一方Jevが狙っているのは、</p><pre><code class=\"language-text\">状況を見る\n↓\n選ぶ\n</code></pre><p>という非常に狭い領域だ。</p><p>Playgroundの画面がStateとQuestionsの2つに分かれ、質問の型が3種類しかないのも、この設計思想の表れだろう。<strong>AIに何を答えさせるかではなく、どんな形で答えさせるかを先に決める</strong>。ここがJevの一番面白いところかもしれない。</p><h2 id=\"h03e7af0d39\">参考リンク</h2><ul><li><a href=\"https://devpediacode.com/information/AI/7bcbe43a-90f8-516e-b587-39a1298924cf\">文章を書かないAI「Jev」とは？TypeSafeのSystem One Modelを解説 - DevpediaCode</a></li><li><a href=\"https://console.typesafe.ai/playground\">TypeSafe Console - Playground</a></li><li><a href=\"https://docs.typesafe.ai/introduction/quickstart\">Quick start - TypeSafe AI Docs</a></li><li><a href=\"https://docs.typesafe.ai/primitives\">Primitives (Questions) - TypeSafe AI Docs</a></li><li><a href=\"https://docs.typesafe.ai/confidence\">Confidence - TypeSafe AI Docs</a></li></ul>","category":{"category":"AI"}}},"pageContext":{"id":"81441771-b45d-567a-ac44-9b3a1bd8ef28"}},"staticQueryHashes":["3649515864","63159454"]}