エージェントはループで動作します。LLM が何をすべきかを判断し、ツールが実行され、モデルが結果を評価し、タスクが完了するまでそのループを継続します。
当初、エージェントと LLM をソフトウェアアプリケーションに統合することは困難でした。これらのアプリは構造化データと予測可能なインターフェースに依存しているためです。この問題を大幅に簡素化する 2 つのプリミティブが登場しました。
- Tool calling(ツール呼び出し)により、モデルは構造化されたリクエストを行い、構造化された結果を受け取れるようになりました。
- Structured outputs(構造化出力)により、モデルは構造化された結果を返せるようになりました。
しかし、これらが導入されても、エージェントのループはまだ 遅く、コストが高いままでした。すべての判断には別のモデル呼び出しが必要だからです。
ここで登場するのが Jev です。Jev は TypeSafe AI から リリースされた新しいモデルです。同社は、分類タスクにおいて同等の LLM と比較して、推論速度が最大 200 倍速く、コストが 400 分の 1であることを報告しています。
https://x.com/CompleteSkeptic/status/2099925682726002904
この記事では、Jev の仕組み、エージェントループへの組み込み方、そして LangChain との連携方法について解説します。
Jev について詳しく
Jev は厳密には従来の LLM ではなく、テキストを生成しません。TypeSafe AI チームが呼ぶ「System One モデル」です。
📖 System One モデルは、ソフトウェアが直接利用できる高速かつ構造化された意思決定を行うために構築された AI モデルのクラスです。System One モデルは
state を評価し、型付きの回答と確率を返します。
これは 校正された意思決定のための強化学習 (RLCD) を使用して訓練されています。コードではこれらの結果を利用して、各判断ごとに完全なチャット LLM 呼び出しを行わずに、エージェントの次のアクションをガイドします。
Jev モデルを呼び出すには、state(コンテキスト)とその state に関する questions を送信します。以下は、公式ドキュメントにあるサポートチケット例の単一質問バージョンです。
1{2 "model": "jev-latest",3 "state": "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.",4 "questions": {5 "is_urgent": {6 "type": "noul",7 "instructions": "The message conveys urgency or time-sensitivity"8 }9 }10}
ドキュメントの例では、この緊急度に対する回答が得られます。ここではレスポンスの他の部分を省略して表示しています。
1{2 "is_urgent": {3 "type": "noul",4 "noul": 0.9995 }6}
これは、メッセージが緊急である確率が 99.9% であることを示しており、アプリケーションがこの情報を使ってチケットの優先順位付けを行うことができます。
サポートされている questions には 3 種類のタイプがあります。

- Choice: オプションセットから選択します。各オプションの確率と全体的な信頼スコアを返します。
- Score: low、medium、high などの順序付けられたレベルに対して入力を評価します。連続的なスコア、基礎となる分布、および信頼値を返します。
- Noul: Yes または No の質問に答えます。ステートメントが真である確率を返します。
ここでの重要な機能の一つは、同じ state に対して複数の質問を一度のリクエストで行えることです。
💡 System One モデルは、リクエスト内のすべての質問を並行して評価します。質問を追加しても応答時間はほとんど変わらず、追加の質問分のトークンコストのみが発生しますが、これは安価です。
サポートチケットに対して複数の質問を行う例については、TypeSafe Quickstart を参照してください。
要約すると、従来の LLM とは異なり、Jev はテキスト生成や逐次的な意思決定による制約を受けません!
LangChain で Jev を使う方法
LangChain のプロバイダー非依存モデルは、数千もの他の統合やモデルプロバイダーと一緒に Jev をサポートするのに適しています。
LangChain 統合では、TypeSafeClassifier を通じて Jev にアクセスできます。state と questions を .invoke() に渡すと、チャットレスポンスではなく分類結果が得られます。
langchain-typesafe をインストールし、TYPESAFE_API_KEY を設定してから、呼び出します。
1from langchain_typesafe import Noul, TypeSafeClassifier23classifier = TypeSafeClassifier()45response = classifier.invoke(6 state=(7 "The deploy failed twice and customers are seeing 500s. "8 "Can someone look now?"9 ),10 questions={11 "urgent": Noul(12 instructions="Does this need attention right now?"13 ),14 },15)1617urgency = response.nouls["urgent"].noul
state にはテキスト、構造化データ、または LangChain メッセージを使用できます。これにより、エージェントが既に持っているコンテキストを使用して、ノードやミドルウェアフックから Jev を簡単に呼び出すことができます。
これをカスタムミドルウェアやツールに組み込むことも可能です!
ユースケース
Jev は LLM のドロップイン代替品ではありません。テキストは生成しませんが、今日 LLM でよく使われている分類タスクを、同じレイテンシやコストなしで処理できます。これはエージェントを駆動するモデルにとって有望な補完関係にあります。オープンエンドな推論と生成には LLM を使い、その過程での高速かつ構造化された意思決定には Jev を使うのです。
モデルルーティング
単純な検索は、難しいデバッグタスクと同じモデルを必要としません。Model-routing middleware を使用すると、Jev がリクエストを評価し、定義した基準に基づいてモデルを選択できます。これにより、シンプルなタスクには高速で低コストなモデルを、複雑なタスクにはより高性能なモデルを使用できます。
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 ModelChoice,4 ModelRouterMiddleware,5)67router = ModelRouterMiddleware(8 choices={9 "fast": ModelChoice(10 model="openai:luna",11 criteria="Direct lookups, extraction, and localized changes.",12 ),13 "powerful": ModelChoice(14 model="openai:sol",15 criteria="Architecture and high-stakes decisions.",16 ),17 },18 instructions="Choose the least costly model that can complete the task.",19)2021agent = create_agent("openai:gpt-5.6-luna", middleware=[router])
ルーターは最新のユーザーメッセージからモデルを選択し、実行全体を通じてそれを使用します。確率と信頼性はエージェントの状態でも利用可能です。
Auto Mode
エージェントは依然として本質的に信頼性が低いものです。エージェントは悪い指示(自然発生的なものでも、十分な動機を持つ攻撃者からのものでも)を受け取り、望まない行動を取るように説得される可能性があります。
claude、codex、cursor などのコーディングハーネスは、行動を取る 前 に危険な行動を分類する方法を提供しており、これが徐々にエージェントへの信頼構築に貢献してきました。これまで、この分類ステップはハーネスのクローズドソース部分に隠されていました。
安価で高性能な分類モデルが存在するようになった今、同じパターンを採用し、すべてのエージェントに適用することが可能になりました!
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 AutoModeMiddleware,4)56guardrail = AutoModeMiddleware(tools=["bash"])78agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])
AutoModeMiddleware は Jev を使用してツール呼び出しを確認し、リスクのある判断を検知すると、ツールが実行される前に呼び出しをブロックします。
始めましょう!
私たちは Jev とそれがもたらす可能性に非常に興奮しています。すでに見つかっているいくつかのクールなプロジェクトがあります。Browserbase の Kyle Jeong はブラウザ使用エージェントを数セント以下のコストで動かしており、Jarrod Watts はライブ取引エージェントを構築し、Ryan Vogel は大規模なメールトリアージを行っています。
この頃では新しいモデルが毎週のようにリリースされますが、このモデルは特に大きな反響を呼びました。LangChain と Jev を使ってあなたが何を作るのか、楽しみにしています。
フォーラムで感想をお聞かせください。X でタグ付けして作成中のものを共有したり、LangChain issues に参加したりしてください!
謝辞
@huntlovell、@hwchase、@ccurme、@veryboldbagel、そして Nathan Drenzer の皆様に、丁寧なレビューと貢献に感謝いたします。





