Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Bringing TypeSafe AI Jev Model to Go

2026年09月25日に「Dev.to」が公開したITニュース「Bringing TypeSafe AI Jev Model to Go」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

従来のAI(LLM)は自動化タスクに時間がかかる問題があった。TypeSafe AIのJevモデルは、テキスト生成せず、高速に構造化データを返す新しいAIだ。Go言語でJevを利用する公式SDKがなかったため、非公式SDK「taurus-jev-sdk-go」が開発された。これにより、GoアプリでAIによる迅速な分類や評価が容易に実現できる。

出典: Bringing TypeSafe AI Jev Model to Go | Dev.to公開日:

ITニュース解説

近年のAI技術の進歩は目覚ましく、大規模言語モデル(LLM)は私たちの生活やビジネスに大きな影響を与えている。しかし、これらの従来のLLMが、システム開発の現場で直面する特定の課題には必ずしも最適ではない場合がある。例えば、顧客からの問い合わせを分類したり、取引のリスクを評価したり、データを適切な部署にルーティングするといった自動化タスクにおいて、従来のLLMはしばしば速度が遅く、計算リソースを多く消費するという問題があった。これは、従来のLLMがテキストを一つ一つの単語(トークン)を順番に生成していく仕組みによるもので、心理学でいう「システム2」的思考、つまり熟考を要し、比較的遅い推論プロセスに例えられる。多くのバックエンドシステムは、もっと迅速な判断や直感的な評価、そして厳密なデータ形式(型)での応答を必要としており、これは「システム1」的思考に相当する。

このような課題に対応するため、元OpenAIのエンジニアによって設立されたTypeSafe AI社は、新しいタイプのAIモデルとして「システム1モデル」を開発した。その最初のモデルが「Jev(ジェブ)」である。Jevは、従来のLLMとは異なり、テキストを生成したりチャットを行うためのモデルではない。その代わりに、与えられた生データと質問群を同時に処理し、構造化された形式での出力を返すことに特化している。具体的には、「はい/いいえ」の判断、数値スコア、分類ラベルといった形で結果を返し、それぞれの回答にはその確からしさを示す確率も併せて提供される。テキスト生成のプロセスを完全に排除することで、Jevは非常に低い応答時間(レイテンシ)を実現している。わずか70ミリ秒から500ミリ秒という高速な応答が可能であり、これはリアルタイムに近いシステムでの利用に極めて適している。Jevからの応答は、浮動小数点数、文字列、整数といった標準的なデータ型で返されるため、プログラムのif/else文などの論理分岐に直接組み込んで利用できるという大きな利点がある。

TypeSafe AIはJevモデルを開発したが、公式に提供しているソフトウェア開発キット(SDK)はPythonとJavaScript/TypeScript向けのみであった。もしGo言語でバックエンドシステムを開発している場合、Jevモデルを利用するには、手動でHTTPリクエストを作成し、データを整形し、エラー処理も自分で行う必要があった。これは、Go言語のアプリケーションにJevの機能を組み込む上で、開発者にとって大きな手間と複雑さをもたらす課題であった。

この課題を解決するために、あるチームが「taurus-jev-sdk-go」というGo言語用のSDKを開発した。このSDKを使うことで、Go言語の開発者はJevモデルの機能を自分のアプリケーションに簡単に、そしてスムーズに統合できるようになった。

Jevモデルには、用途に応じた3種類の質問タイプが用意されており、このGo SDKはそれら全てに対応している。一つ目はjev.Noulというタイプで、これは「この記述は真実か?」といった二者択一の質問に用いる。戻り値は0から1の間の浮動小数点数で、質問に対する真偽の確率を表す。例えば、0.9という値は「90%の確率で真実である」と解釈できる。二つ目はjev.Choiceというタイプで、「どのラベルが最も適切か?」といった分類タスクに利用する。戻り値として、最も当てはまるラベルと、その選択に対する信頼度(確信度)が提供される。これにより、複数の選択肢の中から最適なものをAIに選ばせることができる。三つ目はjev.Scoreというタイプで、これは「この状況をスケールで評価するとどうなるか?」といった段階的な評価に用いる。戻り値は数値スコア、そのスコアが示す意味を説明する凡例、そしてその評価に対する信頼度から構成される。これにより、例えば1から5までの評価など、段階的な判断をAIにさせることが可能となる。

それでは、このSDKをGo言語のコードでどのように利用するか、具体的な例を挙げて説明する。例えば、自動化されたサポートチケット処理システムを構築するシナリオを考えてみよう。AIにチケットの内容を分析させ、直ちにカテゴリ分けさせたい場合、以下のような質問が考えられる。「このチケットは請求に関する問題か?」「ユーザーの感情的なトーンはどのようなものか?」「このチケットの緊急度はどれくらいか?」

SDKを利用するための最初のステップは、TypeSafe AIから取得したAPIキーを設定することだ。これは、環境変数TYPESAFE_API_KEYとして設定するのが一般的だ。次に、Go言語のプロジェクトでgo get github.com/KKloudTarus/taurus-jev-sdk-goコマンドを実行し、SDKをインストールする。

実際のコードでは、まずjev.New()関数を呼び出してJevクライアントを初期化する。この際、先ほど設定した環境変数からAPIキーが自動的に読み込まれる。クライアントの初期化に成功したら、分析したいサポートチケットの内容をマップ形式で準備する。このマップは、チケットの件名や本文などの情報を含む。

その後、client.SystemOne()メソッドを呼び出してJevモデルに質問を送信する。このメソッドには、Goのコンテキスト情報、分析対象のデータ(チケットの内容)、そして質問群を渡す。質問群は、先ほど説明したjev.Noul、jev.Choice、jev.Scoreの各タイプを組み合わせて定義できる。例えば、「請求の問題か?」という質問にはjev.Noulタイプを使い、質問内容をInstructionsとして指定する。「ユーザーのトーンは何か?」という質問にはjev.Choiceタイプを使い、Instructionsに加え、Criteriaとして「怒り」「穏やか」といった選択肢とその説明を定義する。「緊急度」を問う質問にはjev.Scoreタイプを使い、Instructionsと、Criteriaとして「通常営業時間内で対応可能」「今週中に対応が必要」「今日中に緊急対応が必要」といった評価尺度をリスト形式で定義する。これらの複数の質問は、たった一つのリクエストでJevモデルに同時に送信される。

API呼び出し後には、エラーが発生していないかを確認し、適切に処理することが重要だ。例えば、AIサービスが過負荷状態の場合や、APIキーが無効な場合は、それぞれ特定のエラーが返されるため、それに応じて再試行したり、警告を出したりといった対応をとることができる。

Jevモデルからの応答を受け取ったら、SDKが提供するヘルパーメソッドを使って結果を取り出す。例えば、response.NoulOf("is_billing")を使えば、請求に関する質問の確率を取り出せる。この確率が0.85(85%)を超えていれば、そのチケットは請求問題であると判断し、経理部門にルーティングするといったビジネスロジックを実装できる。同様に、response.ChoiceOf("tone")でユーザーのトーンを取得し、それが「angry(怒り)」であれば、チケットをエスカレートさせるなどの対応が可能だ。緊急度についてもresponse.ScoreOf("urgency")でスコアと凡例を取得し、その情報に基づいて処理を行うことができる。

Jevモデルからの全ての応答は、SDKによってGoの標準的なデータ型に既に解析されているため、正規表現を用いた複雑な文字列解析や手動での型変換は一切不要となる。これにより、開発者はAIからの応答を直接、安全かつ効率的にGoプログラムのロジックに組み込めるのだ。

このように、Jevモデルとtaurus-jev-sdk-goは、Go言語で開発されたシステムにおいて、高速かつ型安全な方法でAIの判断能力を活用するための強力な手段を提供する。従来のLLMが苦手とする「システム1」的な高速判断を必要とする場面で、この技術は開発の効率性とシステムの応答性を大幅に向上させる可能性を秘めていると言える。

関連コンテンツ

関連IT用語

関連ITニュース