話題のJevでブログのカテゴリ再編をしてみた

エンジニアが話題のJevを解説。文章生成せず「判断」に特化したAIモデルJevは、高速・安価・型安全を実現。従来のLLMの課題だったシステム組み込みやすさを評価し、Ghostブログの煩雑なカテゴリ再編をJevで効率化した具体的な活用事例と開発体験を紹介します。

※本記事は広告を含みます

初めに

どうも、職業エンジニアです。
ここ数日かなり賑わっているJevを触ってみたので、所感とかどういうものを作ってみたのかを紹介していこうと思います。

Jevってなに?

Jevは、TypeSafe AIが提供する「文章を一切生成せず、確率と確信度付きの『判断(マークシート式の答え)』だけを返す」ことに特化したAIモデル。

従来のChatGPTやClaudeのようなLLMが「文章を1文字ずつ考えて出力する」のに対し、Jevは「渡されたテキストに対して、指定された選択肢のどれに当てはまるかを判定し決まった形式(JSON)で返す」構造になっています。

3つの大きな特徴

  1. 速い!

    • 文章を組み立てる時間(デコード)が一切ないため、プログラムのif文やAPI連携の途中に挟んでもボトルネックになりません。
  2. 圧倒的な安さ

    • 入力1M(100万)トークンあたり約0.042ドル(約6円)で、出力トークンは無料。1,000回以上判定を回しても十円前後のコストで済みます。
  3. 型崩れ・ハルシネーションが構造上起きない

    • 答えの形式は以下の3つに限定されており、指定外の謎テキストや壊れたJSONが返ってくるリスクがゼロです。

      • Choice: 選択肢から1つ選択(各選択肢の確率を返す)
      • Score: 段階評価(例: 1〜5点)
      • Noul: Yes/No(真偽の確率)

高速 & 安価 & 型安全保証って感じなので、ソフトウェアへの組み込みが非常にし易いモデルと言えるでしょう。開発者目線だと、一番大きいのは型安全ですね。

これまでのモデルは「こういう形式のJSONで返却して!」と指示しても、それが守られる保証はこれまではなかったので、プログラム内でのハンドリングが煩雑になる傾向にありました。しかし、Jevは型安全が保証されているので「システム設計段階で無理なく組み込む」ことが可能となります。これだけで採用率はかなり上がるのではと思っています。

得意なこと / 苦手なこと

  • 得意なこと(直感・仕分けの代行)

    • 問い合わせフォームやサポートメールの自動ルーティング(振り分け)
    • 経理・家計簿の勘定科目仕分け
    • エージェントやCI/CDでの危険コマンド・スパム・規約違反の事前検知
  • 苦手なこと(コードや従来LLMに任せるべき領域)

    • 記事の執筆や要約(文章生成がない)
    • 数値の計算、日付の前後比較(計算機能がない)

「人間がタイトルや要約をパッと見て、数秒の直感で仕分けできる作業を、爆速・最安・型安全に自動化するAI」と捉えると、全体像が一番しっくりくるかなと思います。

今回やったこと

Ghostはカテゴリ整理が難しい

さてJevの紹介が終わったところで、今回やったことについて紹介しておきたいと思います。この記事のタイトルにもなっている通り、ブログカテゴリの再編ですね。

このブログはGhostで運用されており、WordPressのようにカテゴリを階層ごとに作成する機能がないんですよね。なんなら正確に言うとカテゴリという機能がありません。タグという機能は存在するので、これをカテゴリっぽく運用していく感じになります。

で、運用していく中でタグ構成が煩雑になってきたので、これをきれいに再構築するのにJevを利用してみました。

Jevで何をするか

再編に当たり、まずはやることを明確にしました。
具体的に言うと、以下のような仕様をざっくり決めています。

  • 複数設定できるタグの一番最初のタグを「カテゴリ」として捉える
  • カテゴリは各記事に対して一つのみ付与する
  • Jevに渡すのは「カテゴリの一覧」と「各記事の要約」
  • Jevは上記のパラメータを受け取り、適切なカテゴリを返す

上記の得意なこと、にも書いた「仕分け」の部分が担当ですね。

送受信データの具体例

次に具体的なパラメータを見ていきます。
まずはリクエストから。

{
  "model": "jev-latest",
  "state": {
    "title": "PythonでGhost APIを操作してタグを一括更新する方法",
    "current_tags": "プログラミング, python, 備忘録",
    "content_excerpt": "Ghost CMSのAdmin APIを使って投稿記事のタグを一括更新するスクリプトを作成しました..."
  },
  "questions": {
    "primary_category": {
      "type": "choice",
      "instructions": "この記事のメインカテゴリ(Primary Tag)を、以下の選択肢の中から最も適したものを1つ選択してください。",
      "criteria": {
        "it-news": "IT、テクノロジー、AI、最新テック業界ニュースやトレンド・速報",
        "programming": "プログラミング、ソースコード、開発技術、フレームワーク、実装Tips、エラー解決",
        "blog-run": "ブログ運営、CMS構築、Ghost設定、Webサイト管理、SEO、収益化",
        "gadget": "ガジェット、スマートフォン、スマート家電、イヤホン、PC周辺機器などのハードウェア紹介・レビュー",
        "novel": "小説、読書感想、ミステリ小説、作家、書籍紹介、読書レビュー",
        "game": "ゲーム全般、ポケモン、カードゲーム、ゲーム攻略・感想",
        "column": "コラム、エッセイ、日々の雑記、思考、ライフハック、健康、旅行、その他一般的な話題"
      }
    }
  }
}

前述したとおり、カテゴリの一覧と記事の要約を主として送っています。また、処理タイプはchoiceにしています。カテゴリの一覧から適切なものを1つ返してね、という指示ですね。

次にレスポンスを見ていきましょう。

{
  "model": "jev-1.13.0",
  "answers": {
    "primary_category": {
      "type": "choice",
      "choice": "programming",
      "confidence": 0.95,
      "probabilities": {
        "programming": 0.95,
        "blog-run": 0.03,
        "it-news": 0.01,
        "gadget": 0.01,
        "column": 0.0,
        "novel": 0.0,
        "game": 0.0
      }
    }
  },
  "usage": {
    "input_tokens": 412,
    "output_tokens": 36
  }
}

レスポンスデータは実際にchoiceされたものとスコアに加え、他の項目がどのくらいのスコアだったかも返ってきます(トータル100%)。なので、スコアの上位3つを採用、みたいなこともできますし、スコアが全て10%以下であれば未設定にする、みたいなこともできます。この辺りのロジックを設計しやすいのはJevの明確な利点ですね!

なお、この辺りの詳しい仕様は公式ドキュメントに記載されているのでそちらを見てみてください。

Jevを触ってみた感想

とりあえず一旦やりたいことはできたので、ここからは感想のコーナーです。

確かに速い

再編で渡した記事データ300件を3分ほど(1件あたり約0.6秒)で捌けました。これはJevだけの速度ではなく、筆者がこれ用に作ったプログラム処理を含めてこの速度なのでJev単体ではこれよりもっと速いはずです。

今回は記事の要約で100字~300字を渡しているのでJev的には多少やりづらい入力情報でしたが、それでもこの速度で処理してくれたということで、実用性はかなり高いと言えそうです。

作りやすい、デバッグしやすい

型が明確なので、プログラムを組みやすし、デバッグも楽でした!特にAIモデルを利用する際はデバッグがかなりダルくて時間がかかりがちなのですが、Jevだとこの辺りがかなり楽になるのは間違いありません。

もちろん型が明確なぶん得意なことは制限されているモデルではあるのですが、むしろ得意分野がはっきりしていた方が採用しやすいのかなとも思いましたね。AIモデルのAPIというより、従来型のAPIを触っている感じで組めますからねコレは。

どう使うか、はかなり難しい

今回やったブログのカテゴリ再編は、実はいうとAIモデルを利用しなくてもそれっぽいものは作れます。カテゴリ名が要約の中にいくつ出てきたか?みたいな感じですかね。もちろんこれだとヒットしないことが増えますし、毎回テキストに検索を書けるような処理をしているとパフォーマンスがかなり怪しくはなりますが、技術的には可能です。

そういう意味だと、Jevは「これまでプログラムで書いていたことを簡易的に行うことができる」ツールだと捉えることもできると思います。

Jevだからできる、Jevにしかできない、という使い方を探るのはかなり難しいなという所感。個人的にはプライベートで使うのなら全然アリって感じかな。

また、得意分野は仕分けなので、大量に溜まった質問票を内容や重要度で仕分けしたり、内容が近いものをグルーピングしたりとか、業務改善ツールには採用しやすいのかなという印象を受けました。

今回の利用データ。とても安いのが分かります。
今回の利用データ。とても安いのが分かります。

最後に

最近新しいものが出るスピードが速すぎる!本業では全然そんなことないのに!!!