Jevとは?日本語の問い合わせ分類を試してみた【実行コード付き】
執筆・制作:何でも自作する人(運営者について)
Jev / AI / PowerShell / ロリポップ
Jevは、文章の意味や文脈をもとに分類や評価を行う、判定に特化したAIモデルです。 たとえば、問い合わせの文章から担当部署を選んだり、対応の優先度を評価したりできます。
今回はロリポップ!AIゲートウェイを使って、実際に日本語の問い合わせを分類してみました。WindowsのPowerShellで試せるコードも掲載しています。登録から実行までの手順に加えて、返ってきた結果の読み方と、通常料金ならいくらになるかを紹介します。
Jevとは何ができるAIなのか
Jevは、米TypeSafe AIが開発したモデルです。文章や判断基準を渡すと、選択結果やスコアなど、プログラムがそのまま扱える形式で答えを返します。
たとえば問い合わせ対応では、「この問い合わせを配送・支払い・その他のどの担当に回すか」を選ばせ、その結果に応じてアプリ側で処理を分けられます。
| 判断の形式 | 使い道の例 |
|---|---|
| はい・いいえの判断 | 至急の対応が必要かを判定する |
| 選択肢からの分類 | 問い合わせを担当部署へ振り分ける |
| 段階に沿った評価 | 対応の優先度をスコアで表す |
結果には判断の不確かさを扱うための確率も含まれます。今回は、このうち「選択肢からの分類」を試します。
今回使ったサービスと無料期間
この記事で実際に試した日は2026年9月19日です。 無料キャンペーンは9月18日〜24日で、登録した日から1週間という意味ではありません。対象は typesafe/jev-latest、期間中の入力・出力トークンが無料になります。終了後は入力100万トークンあたり0.042米ドル、出力無料という案内です。
今回Jevにさせること
今回のゴールは、問い合わせの文章を入力して、担当を3択から選んでもらうことです。
「商品が届きません」という文章を送り、配送担当を表す delivery が返るかを確認します。
| 選択肢の名前 | 今回決めた意味 |
|---|---|
delivery | 配送に関する問い合わせ |
billing | 料金や支払いに関する問い合わせ |
other | それ以外の問い合わせ |
この英語の名前は、コード内で設定する選択肢です。Jevの結果にも同じ名前が使われます。
APIは、プログラムからサービスを呼び出すための窓口です。この記事ではPowerShellから問い合わせを送り、その返事を画面に表示します。
1. Googleアカウントでログインする
ロリポップ!AIゲートウェイを開き、今回はGoogleアカウントでログインしました。
ログイン後は「プロジェクト一覧」が表示され、「デフォルト」というプロジェクトがありました。この時点のクレジット残高は0円です。

「デフォルト」のカードをクリックすると、プロジェクトの概要が開きます。

2. APIキーを発行する
概要画面の「APIキーを発行する」をクリックします。ここでキーが作られるわけではなく、まずAPIキーの管理画面へ移動しました。

管理画面の右上にある「+ APIキーを発行する」をクリックします。
今回は次の内容で発行しました。
| 項目 | 設定した値 |
|---|---|
| APIキー名 | jev-handson |
| ルール | なし |
| 有効期限 | 30日 |

APIキー名は用途が分かる任意の名前にできます。キーの有効期限30日と、Jevの無料期間は別です。
「発行する」を押すとAPIキーが表示されます。画面には一度しか表示されないという案内があるので、閉じる前に安全な場所へ保存します。APIキーは利用者を認証する秘密の値なので、記事やスクリーンショットに載せる際は隠します。

3. Jev用のドキュメントを開く
ドキュメントの「機能」から「型付き確率的判断」を開きます。
Jevの呼び出し先は /v1/systemone です。概要画面のクイックスタートにあるチャット用のサンプルとは呼び出し先が異なるため、以下のJev用コードを使います。
記事のコードでは、利用するモデルを typesafe/jev-latest に指定しています。
4. PowerShellから問い合わせを送る
Windowsのスタートメニューで「PowerShell」を検索して開きます。今回の操作では、Pythonや追加のライブラリはインストールしていません。
APIキーを入力する
まず、次の1行だけを貼り付けてEnterを押します。
$secureKey = Read-Host "APIキー" -AsSecureString
APIキー: と表示されたら、保存したキーを貼り付けてEnterを押します。入力したキーは伏せ字になり、文字そのものは表示されません。
判定する文章と選択肢を送る
APIキーの入力が終わったら、次のコードをまとめて貼り付けて実行します。
$credential = [System.Net.NetworkCredential]::new("", $secureKey)
$body = @{
model = "typesafe/jev-latest"
state = "注文した商品がまだ届きません。配送状況を教えてください。"
questions = @{
department = @{
type = "choice"
instructions = "この問い合わせに対応する担当を選んでください。"
criteria = @{
delivery = "配送に関する問い合わせ"
billing = "料金や支払いに関する問い合わせ"
other = "それ以外の問い合わせ"
}
}
}
} | ConvertTo-Json -Depth 10
try {
$result = Invoke-RestMethod `
-Uri "https://ai-gateway.lolipop.jp/v1/systemone" `
-Method Post `
-Headers @{ Authorization = "Bearer $($credential.Password)" } `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
$result | ConvertTo-Json -Depth 20
}
finally {
Remove-Variable credential, secureKey -ErrorAction SilentlyContinue
}
最初に押さえる項目は次の4つです。
| 項目 | 何を指定しているか |
|---|---|
state | 判定してほしい問い合わせの文章 |
type = "choice" | 選択肢から選ぶ形式 |
instructions | 何を判断してほしいかという指示 |
criteria | 選択肢の名前と、それぞれの意味 |
department は今回の質問に付けた名前です。結果にも同じ名前が付くので、どの質問への答えかが分かります。
5. 返ってきた結果を読む
最初の実行では、次の結果が返りました。JSONという、項目名と値を組み合わせた形式です。

担当の分類結果は、choice の値で確認できます。
"choice": "delivery"
「この問い合わせは配送担当に振り分ける」という結果です。 delivery は、コード内で配送担当に付けた選択肢の名前です。
その下の probabilities は、候補ごとの確率を表しています。
"probabilities": {
"other": 0,
"billing": 0,
"delivery": 1
}
今回は配送が1、その他と支払いが0でした。1は100%に相当する表示ですが、実際の正解を保証するものではありません。
confidence は、候補への確率がどれだけ集中しているかを表す値です。今回は配送に集中しているので1になっています。選ばれた候補の確率そのものとは別の項目です。
最後の usage は、処理した文章量を数えるトークンの使用量です。input_tokens: 396 は入力が396トークンだったことを表します。料金の計算方法は後半で説明します。
| 表示された項目 | 今回の値 | 読み方 |
|---|---|---|
model | typesafe/jev-latest | 応答したモデル |
choice | delivery | 選ばれた担当 |
input_tokens | 396 | 入力側のトークン数 |
output_tokens | 38 | 出力側のトークン数 |
6. 文章を変えて結果を比べる
次は、コードの state の行だけを変更しました。
state = "商品は届きましたが、クレジットカードに同じ金額が2回請求されています。"
今度は配送ではなく、支払い担当になりそうな文章です。選択肢や判断の指示は変えません。
手順4のAPIキー入力からもう一度実行し、続いて state を変更したコード全体を実行します。 実行のたびにキーを入れた変数が削除されるため、再入力が必要です。
実際に返った結果から、分類部分を抜き出すと次のようになりました。
"department": {
"type": "choice",
"choice": "billing",
"confidence": 1,
"probabilities": {
"delivery": 0,
"other": 0,
"billing": 1
}
}
今度は billing、つまり料金・支払い担当が選ばれました。
| 入力した文章 | 実際に返った分類 |
|---|---|
| 商品が届かないので、配送状況を知りたい | delivery(配送) |
| 商品は届いたが、同じ金額が2回請求されている | billing(料金・支払い) |
2つ目の文章にも「商品」「届きました」という言葉がありますが、結果は支払い担当でした。今回試した2例では、問い合わせの主題に合った分類になっています。
7. 管理画面で使用状況を確認する
ロリポップ!AIゲートウェイの管理画面へ戻り、「使用状況」を開きました。

最終的な表示は、3リクエスト・1,309トークン・利用額0円でした。
配送に関する文章を2回、支払いに関する文章を1回実行した記録です。
| 入力した文章 | 実行回数 | 入力トークン/回 | 出力トークン/回 | 合計トークン |
|---|---|---|---|---|
| 配送の問い合わせ | 2 | 396 | 38 | 868 |
| 支払いの問い合わせ | 1 | 403 | 38 | 441 |
| 合計 | 3 | — | — | 1,309 |
無料キャンペーン期間中の今回は、クレジット残高0円の状態から実行でき、使用状況でも利用額0円を確認できました。
通常料金なら今回の3回分はいくらか
ロリポップ!の案内では、無料期間終了後は入力100万トークンあたり0.042米ドルで、出力は無料です。画面には入力と出力を合わせた1,309トークンが表示されていますが、料金計算に使うのは入力側です。
トークンは文章を処理する単位で、画面に出た文字数そのものではありません。送る内容には問い合わせ文だけでなく、判断の指示や選択肢も含まれます。
最初の問い合わせを2回、変更後を1回実行したときの使用量から計算します。
| 項目 | 計算 | 合計 |
|---|---|---|
| 入力トークン | 396 × 2 + 403 | 1,195 |
| 出力トークン | 38 × 3 | 114(出力料金は無料) |
1,195 ÷ 1,000,000 × 0.042米ドル
= 0.00005019米ドル
通常料金でも、今回の3回分は約0.00005米ドルです。 円で大きさをつかむために仮に1米ドル=150円とすると、約0.0075円、1銭未満に相当します。
これは2026年9月19日に確認した公表単価による単純計算です。150円は換算例で、実際の請求時の為替や端数処理を再現した金額ではありません。今回、管理画面で実際に確認できた利用額は無料期間中の0円です。
分類結果をアプリに組み込むには
アプリに組み込むなら、delivery が返ったら配送担当の一覧へ、billing なら支払い担当の一覧へ送る、という処理につなげられます。今回は、その前段階の分類と結果表示までを試しました。
2種類の文章はどちらも期待した担当に分類されました。曖昧な問い合わせや複数の用件が混ざる場合の精度、応答速度の測定は、今回の検証には含めていません。