文章を書かないAI「Jev」の使用と開発事例の紹介

目次

はじめに

ChatGPTやClaudeなどの生成AIは、質問すると文章で答えてくれます。一方で、文章で回答する必要がなく「YesかNoか」「AかBかCか」といった単純な判断で十分な場合もあります。

本記事で紹介する「Jev」は、文章を一切生成しないAIです。与えた選択肢の中から最適なものを選ぶAIで、シンプルな分、非常に高速で、料金が非常に安いです。

実際にJevを使って2つの事例を実装し、Claude Sonnetと比較した結果も合わせて紹介します。

Jevとは

JevはTypeSafe AIが開発した、判断に特化したAIモデルです。

通常の生成AIとは異なり、テキストを返しません。代わりに、あらかじめ定義した選択肢の中から最適なものを選んだ結果だけを返します。

出力の種類は3種類あります。

タイプ内容使用例
choice選択肢から1つを選ぶ分類・ルーティング
noulyes/noの確率(0〜1)を返すスパム判定・異常検知
score基準に基づいたスコアを返す優先度付け・ランキング

速度

テキストを生成しないため、通常のLLMよりも高速に応答します。判断のみを行うシンプルな処理なので、リクエスト数が多い場面でも安定したパフォーマンスが期待できます。

料金

従量課金制で、入力$0.042/1Mトークン、出力は無料です。Claude Sonnetが入力$3/1Mトークン、出力$15/1Mトークンなのに対し、入力は約1/71、出力は完全無料です。大量の判断タスクでもコストを大幅に抑えられます。


利用方法

JevはGUIなどは存在せず、APIのみで利用するモデルです。公式SDKはPythonとJavaScript/TypeScriptに対応しており、その他の言語はHTTP API経由で利用できます。

選択できるモード

Jevの質問(questions)には3種類のモードがあり、タスクに合わせて選びます。

choice(選択)

あらかじめ定義した選択肢の中から最適な1つを返します。分類・ルーティング・次のアクション決定など、「A・B・Cのどれか」を決める場面で使います。

noul(yes/no確率)

0〜1の確率値で応答します。1に近いほどyes、0に近いほどnoを意味します。スパム判定・異常検知・感情分析など、「yesかどうか」を判断する場面で使います。

score(スコア)

与えた基準に対して数値スコアを返します。優先度付け・ランキング・商品レコメンドなど、「どれくらい当てはまるか」を数値化する場面で使います。


実装方法

本記事ではPythonを使った実装を紹介します。今回はOpenRouterというサービスを通じてJevを使用しました。APIキーを取得したうえで、openrouter ライブラリをインストールするだけで利用を開始できます。

pip install openrouter

基本の呼び出しは以下のとおりです。stateに判断対象のテキスト、questionsに質問内容を渡します。

from openrouter import OpenRouter

client = OpenRouter(api_key="your-api-key")

result = client.alpha.decisions.create(
    model="~typesafe/jev-latest",
    state="判断対象のテキスト",
    questions={
        "label": {
            "type": "choice",
            "instructions": "指示内容",
            "criteria": {
                "A": "Aの説明",
                "B": "Bの説明",
            }
        }
    }
)

print(result.answers["label"].choice)  # → "A" または "B"

応用事例

今回は「アンケートデータの分類」、「ブラウザの操作」の2つの事例を実装し、それぞれ同じタスクをClaude Sonnetでも実行して速度・精度を比較しました。

アンケートデータの分類

飲食店のレビューアンケートを自動分類するシナリオです。大量のテキスト回答を手動で分類するのはコストがかかりますが、Jevを使うことで高速かつ安価に自動化できます。飲食店に限らず、さまざまな業種のアンケート・レビュー・問い合わせの自動タグ付けに応用できます。

使用したデータ

飲食店レビューの疑似データを100件作成し、実験に使用しました。以下はデータの一部です。

IDレビュー例
1注文したラーメンは新鮮で美味しいで、リピート確定です。
2注文を取りに来た店員が迅速で、サービスが光っていました。
3お店の雰囲気が狭い。席が狭くて落ち着けませんでした。
4立地が駅チカのです。初めてでも迷わず来られました。
5営業時間が納得できるでした。またリピートしたいと思います。

実験内容

今回はレビュー文を以下の5つのカテゴリに分類する実験を行いました。JevとClaude Sonnetで同じ分類タスクを実行し結果を比較します。

カテゴリ内容レビュー例
food料理・味・メニュー注文したラーメンは新鮮で美味しいで、リピート確定です。
service店員の接客・対応注文を取りに来た店員が迅速で、サービスが光っていました。
atmosphere雰囲気・内装・清潔感お店の雰囲気が狭い。席が狭くて落ち着けませんでした。
location立地・アクセス立地が駅チカのです。初めてでも迷わず来られました。
other価格・待ち時間・営業時間営業時間が納得できるでした。またリピートしたいと思います。

なお、評価項目は以下の通りです。

  • 正解率:各レビューが正しいカテゴリに分類できたか
  • 応答時間:1リクエストあたりの純粋なAPI応答時間(待機時間は除く)
  • **推定コスト:**利用料金

比較結果

比較項目JevClaude Sonnet
サンプル数100件100件
正解率100%100%
平均応答時間529ms1,659ms
最速222ms975ms
最遅2,361ms11,146ms
推定コスト(100件)約$0.001約$0.07

結果、精度は変わらなかったものの、応答時間と推定コストの面で大きな差が確認されました。


ブラウザの操作

Playwrightを使ってブラウザを自動操作するシステムを構築しました。「現在のページの状態」をテキストでJevに渡し、「次に何をすべきか」を判断させます。ECTサイトの操作自動化やRPA的な用途への応用が期待できます。

実験内容

Sauce Demo(saucedemo.com)はSauce Labsが公開しているブラウザ自動化用のデモサイトです。実際のECサイトを模したシンプルな構造になっており、ログイン→商品一覧→カート→チェックアウトといった実務でよくある操作フローを問題なく試せる目的で使われます。

今回はこのサイトを対象に、以下7ステップを自動実行しました。

ログイン → 商品をカートに追加 → カートページへ移動 → チェックアウト開始 → 配送情報入力 → 注文確定 → 完了

Jevは各ステップで「現在のURL」と「完了済みステップ」を受け取り、次のアクションをchoiceモードで判断します。評価項目は全ステップ完了までの所要時間です。同じ操作をClaude Sonnetでも実行し、比較しました。

比較結果

比較項目JevClaude Sonnet
全ステップ完了時間2.8秒11.1秒

以下がそれぞれの実行の様子です。Jevの処理スピードが格段に速いことが視覚的に確認できます。

Jevの実行

ClaudeSonnetの実行


おわりに

今回は「Jev」を使って、アンケート分類とブラウザ自動操作の2つの事例を実装しました。どちらもClaude Sonnetと比較して大幅に高速かつ料金が抑えられる結果となりました。

Jevは「判断する」ことに特化しており、通常のLLMよりも高速・安価・エラーに強いという特徴があります。「文章を生成する必要はないけど、AIlに判断させたい」という場面では、通常のLLMより適した選択肢になることがあります。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次