vLLM のツール呼出精度を向上させる方法

2026/10/26 21:59

vLLM のツール呼出精度を向上させる方法

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

AI エージェントにおける 100% の精度達成を確保するには、現在では vLLM サービングエンジン内で constrained decoding を明示的に有効にする必要があります。この重要な技術設定は、モデルが "search_web" といった誤ったツール呼び出しではなく、正しい関数名である "web_search" を出力するなどの不規則なツール呼び出しを実行することを防ぎます。最近のテストでは、vLLM の新しいバージョン(具体的には 0.28+)のデフォルト設定がこの機能を無効化していることが判明しており、これは推論コストを削減するために speculative decoding と関連するバグを軽減するための措置でしたが、結果として複雑なタスクにおける信頼性の低下を引き起こしました。Moonshot AI の K2VV などのベンチマークは、これらの厳格なスキーマ制約が欠如している場合、オープンウェイトモデルが頻繁に必要な形式に適合しないことを示しており、不整合なコンテキストや関数エラーをもたらします。これを解決するためには、開発者が agentic ワークロードにおいて完璧な準拠を保証するために、手動で constrained decoding フラグを有効化する必要があります。したがって、Kimi や DeepSeek などのモデルをマルチターンセッションに展開する企業は、直ちに推論エンジンの構成を更新する必要があります。この設定を無視すると、現代のデフォルトではユーザーが別途指定しない限り一般的な安定性を厳格なスキーマ強制よりも優先するため、重大な出力品質の問題が生じるリスクがあります。

本文

オープンウェイトモデルにおけるツールコールの品質向上:制約付きデコーディングによる 100% スキーマ正確性の達成

著者:Jesse Donkervliet と Junhao Li(シニアソフトウェアエンジニア)
日付:2026 年 10 月 20 日

オープンウェイトモデルを利用する際、取得される成果が品質ベンチマークで示される水準に程遠いと感じることはありませんか?

本記事では、ツールコールの正確性と**制約付きデコーディング(constrained decoding)**について解説し、エージェント系ワークロードにおける品質を確保するための実装戦略を共有します。


ツールコールスキーマとエージェント開発

ツールコール(機能呼び出し)の正確性は、オープンウェイトモデルを提供する上で極めて重要です。

エージェント系ワークロードでの課題

  • 不正確なツールの影響: ツールコールが不正確であれば、モデルは意味をなさない文脈データを蓄積します。
  • 低品質の結果: これにより、マルチターンセッションやエージェント系ワークロードにおいて特に低品質な結果が生み出されます。
  • 既存プロバイダーの課題: 多くのプロバイダーや推論エンジンでは、ツールコールの正確性に関するテストを完全にパスできていません。

vLLM と Kimi K2.6 の事例

  • vLLM 0.28 バージョンでの実績: Kimi K2.6 を提供した際、期待されるツールコールスキーマが正常に取得できたのは約 92% のみでした。
    • 言い換えれば、試行したツールコールのうち 4 に 1 は失敗していました。
  • 解決策の登場: vLLM は直近で「制約付きデコーディング(constrained decoding)」という技術をサポートするようになり、これにより 100% のスキーマ正確性を獲得することが可能になりました。
    • 現在:vLLM 0.31 バージョンよりサーバーサイドフラグとしてリリースされています。

ツールコールスキーマの仕組み

LLM に外部ツールの呼び出しをさせるには、以下の 2 つのステップが必要です。

  1. AI モデルに対して、利用可能な外部ツールの存在を通知する。
  2. モデルに対し、構造化された形式でツールコールを出力するための指示を提供する。

具体的な構成例(OpenCode と Kimi)

OpenCode は Kimi に利用可能なツールを記述した JSON 配列を送信します。以下は「webfetch」ツールのスキーマの一例です。

[{
  "type": "function",
  "function": {
    "name": "webfetch",
    "description": "- 指定された URL からコンテンツを取得します\n- URL とオプションのフォーマットを入力として受け取ります...",
    "parameters": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "url": { "type": "string", "description": "コンテンツを取得するための URL" },
        "format": { 
          "type": "string", 
          "enum": ["text", "markdown", "html"], 
          "default": "markdown" 
        },
        "timeout": { "type": "number", "description": "オプションのタイムアウト時間(秒)" }
      },
      "required": ["url"]
    }
  }
}]

トークン変換プロセス

  1. 推論エンジンによるラッピング: JSON 記述は、LLM がツール宣言を認識するためのトークンにラップされます。
    <|im_system|>tool_declare<|im_middle|>[{"type":"function","function":{...}, ...]
    
  2. ユーザーからのリクエスト: ユーザーから Web ページ取得の依頼があった場合、LLM は以下のような出力を生成します。
    I'll fetch that page. <|tool_calls_section_begin|><|tool_call_begin|>functions.webfetch:0<|tool_call_argument_begin|>{"url": "https://ubicloud.com", "format": "markdown"}<|tool_call_end|><|tool_calls_section_end|>
    
  3. パーサーによる解析: 推論サーバーはトークンを抽出し、コールを JSON オブジェクトに変換してハルネス(例:OpenCode)へ返却します。
    {
      "role": "assistant",
      "content": "I'll fetch that page.",
      "tool_calls": [
        {
          "id": "functions.webfetch:0",
          "type": "function",
          "function": {
            "name": "webfetch",
            "arguments": "{\"url\": \"https://ubicloud.com\", \"format\": \"markdown\"}"
          }
        }
      ]
    }
    

スキーマ正確性の重要性

ツールコールが成功するためには、コールは必ずツールのスキーマに準拠していなければなりません。

単純なアプローチの限界

  • 手法: モデルによる生成を自由にさせ、トレーニングにより正しいコールが生成されると信頼する。
  • 問題点:
    • 文法的に正しい文章を生成する際と同様に、「多くの場合」しか機能しません。
    • 「多くの場合で成功」ということは、多くのツールコールが依然として失敗することを意味します。
  • 引き起こされるリスク:
    • エラーメッセージによるコンテキストウィンドウの汚染
    • モデル性能の低下
    • コスト増(エージェントがコールを 1 回以上再試行するため)

品質評価基準:K2VV ToolCall ベンチマーク

Moonshot AI は、Kimi K2.6 の品質を検証するための「K2VV ToolCall ベンチマーク」を発表しました。

  • 構成: ツールコール生成タイミングおよび文法正しさを評価する 2,000 件のリクエスト。
  • 主要指標:
    1. トリガー類似度(trigger similarity): サービス側がツールコールのトリガーを判断するタイミングと Moonshot AI のサービスとの類似性。
    2. スキーマ正確性(schema accuracy): スキーマに準拠し成功して呼び出されるツールコールの割合。

例: スキーマ正確性が 50% の場合、モデルによって生成されたツールコールの半分に破損があることになります。

失敗の主な原因

  • 言語モデルの確率的な性質: モデルはトークンの出現可能性に基づいて生成しており、コンパイラーや型チェックを行っていません。
  • トレーニングデータと環境の不整合:
    • トレーニングデータに含まれるツール名やフィールド名(例:
      search_web
      )が、現在のプロダクション環境のスキーマ(例:
      web_search
      )と異なる場合、エラーが発生します。

制約付きデコーディング(Constrained Decoding)による解決

基本概念

  • 仕組み: 推論エンジンが生成を段階的にガイドし、各ステップにおいて有効なトークンのみが許可されます。
  • 効果:
    • 文法的に無効なツールコールにつながるトークンのサンプリングを防ぎます。
    • 「尽力に基づくアプローチ」から**「ランタイムでの保証」**へと変化します。
  • パフォーマンス: トークンマスクを事前計算し GPU で効率的に適用するため、わずかなオーバーヘッドしかありません。

実装例(vLLM と XGrammar)

vLLM は XGrammar ライブラリの構造的タグを使用して制約付きデコーディングを実装しています。以下は Kimi K2.6 での実装抜粋です。

# Kimi K2.6 のツールコール構文:
# <|tool_call_begin|>{function.name}:{index}
# <|tool_call_argument_begin|>{arguments}
# <|tool_call_end|>
TagFormat(
    begin=f"{TOOL_CALL_BEGIN_PREFIX}{name}{TOOL_CALL_SUFFIX}",
    content=SequenceFormat(
        elements=[
            RegexFormat(pattern=r"\d+"),
            ConstStringFormat(value=TOOL_CALL_ARGUMENT_BEGIN),
            JSONSchemaFormat(
                json_schema=parameters,
                any_order=any_order,
                max_whitespace_cnt=max_whitespace_cnt,
            ),
        ]
    ),
    end=TOOL_CALL_END,
)

有効な経路: ツールコール開始 → ツール名 → ツールコールインデックス → 引数の開始 → スキーマに制約された JSON → ツールコール終了。
無効な経路(例:整数トークン以外)は生成中にブロックされます。


制約付きデコーディングの実装における注意点

vLLM の振る舞いに関する課題

Moonshot AI は制約付きデコーディングを推奨していますが、vLLM の初期実装にはいくつかの課題がありました。

問題点と対応策

  1. 初期の失敗(vLLM 0.28):

    • vLLM に機能を追加しましたが、デフォルト設定では正確性スコアが再び 91% に低下しました。
    • 原因:vLLM は幅広いモデルをサポートするため、制約付きデコーディングを明示的にオンにしないリクエストに対してデフォルトの振る舞いを変更していたためです。
  2. 特定のモデルでの問題カテゴリー:

    • 汎用モデルの問題: 非制約出力がスキーマから逸脱し、意図しないトークンを選択してしまう場合がある(gpt-oss-20b, Qwen 3.6, GLM 5.1 など)。
    • 文法変換のバグ: モデル固有の文法への変換でエラーが発生し、制約付きデコーディングが無効化される。
    • 機能間相互作用のバグ: 推測的デコーディング(speculative decoding)との連携で失敗するケースがある。

対応と現状

  • vLLM の方向転換: 多くの報告から、モデルアグノースティックな vLLM ではデフォルトで無効化とするのが安全な選択となりました。
    • 最新:
      --tool-strict-level
      フラグを追加し、ユーザーが環境に合わせて厳格度を調整可能にしています。
  • Ubicloud のアプローチ:
    • vLLM とは異なり、ファーストパーティプロバイダーとして**期待される品質(K2VV ToolCall ベンチマーク 100%)**を提供することに焦点を当てています。
    • 対策: 常に制約付きデコーディングを有効にし、すべての提供モデルで 100% の正確性を確認した後に本番環境に展開しています。

結論

LLM を使用する際、観察される品質はモデルそのものだけで決定されるわけではありません。推論エンジンもまた重要な役割を果たします。

  • Kimi K2.6 および DeepSeek V4 Flashにおける品質低下の要因:ツールコールスキーマの不正確さ。
  • 解決策: vLLM のフォーク版を維持しつつ、新しい制約付きデコーディング機能を明示的に有効化しました。
  • 成果: K2VV ToolCall ベンチマークにおけるツールコールの正確性を 92% から 100% に改善することに成功しました。

推論エンジンやその設定を変更することで、モデルの出力品質を劇的に変化させることができます。もしご興味がある方や、モデル提供に関する戦術的知恵(war stories)をお持ちでしたら、サポートまでご連絡ください。

同じ日のほかのニュース

一覧に戻る →

2026/10/27 6:18

コリドーキー 2.0

## Japanese Translation: Corridor Digital は、CorridorKey 2.0(CK2.0)を発売しました。これは、Resolve、Nuke、After Effects、Premiere Pro、Blender のすべてに対応した初の公式ワンクリックキーイングプラグインです。サブスクリプションモデルとは異なり、一回購入制を採用し、柔軟なライセンス体系を提供しています。個人ユーザーは 2 回のアクティベーションが可能で、スタジオでは最大 24 セットまでの中央集約型請求によるライセンスが可能です。ソフトウェアは「Son of a Dungeon」(11 月 7 日初公開予定)からの 400 ショット以上を使用した厳密な 6 ヶ月のテストに基づいて構築されており、ネイティブ 4K HDR、浮動小数点色深度、フリッカー除去、ヘアやモーションブラーといった複雑な要素に対して AlphaHint インプットなどの機能により対応しています。 **ハードウェア要件:** Windows PC に NVIDIA RTX グラフィックスカード(RTX 30 シリーズ以降が推奨、ベータ版では RTX 20 で対応)または macOS 14 以降を実行する M シリーズ Mac の必要があります。Linux、Intel マック、AMD GPU は現時点で未対応です。Mac ではスタンドアロンアプリに加え、OpenFX/Blender/AE/Pr プラグインが提供されます。 **価格とスケジュール:** 個人向けベータ版価格は税金込みで 54.45 ドル(米ドル)ですが、11 月 21 日以降は 108.90 ドルに引き上がります。スタジオ向けボリューム価格は 1 セットあたり 42.50 ドルから始まり、11 月 21 日以降は引き上がります。ベータコード CK2BETA は 11 月 20 日まで有効です。本製品には 14 日間の全額返金保証が含まれ、月額費用なしでアーティストに強力な合成制御を提供し、2.x ラインのライフタイムアップデートを約束しています。

2026/10/27 3:14

タイプサーバープロトコル

## Japanese Translation: 元のサマリーは簡潔であるが、Key Points に記載されているいくつかの具体的な技術詳細を欠いている。以下に、それらを組み入れながら明瞭性を維持した改善版を示す: ## 改善されたサマリー: Type Server Protocol(TSP)は、Python アナリシスデータを効率的に取得するための専用の JSON-RPC スタンダードを確立し、Position、Range、URI の表現について Language Server Protocol(LSP)の慣習に従うとともに、`typeServer/` 接頭辞付きの方法を用いる。権威ある定義は `typeServerProtocol.ts` などのファイルに記述されており、TSP はプロトコルバージョン、スナップショット、検索パス、インポート解決、および 3 つの特定の型アナリシス(computed、declared、expected)を含む多様なクエリを支援する。アーキテクチャ上の重要な革新として、バージョン 0.4.1 で導入されたマルチ接続サポートがある;このオプションモードでは、クライアントが高負荷な同時クエリ(`getComputedType` または `resolveImport` など)に対してメイン接続をブロックせずに追加の読み取り専用接続を開くことが可能であり、メイン接続は状態変更操作と LSP ライフサイクルメッセージの独占的な所有権を保持する。接続はメインチャンネル上の JSON 制御メッセージ(`open` / `close`)を通じて管理される。TSP はマイナーな 0.x の変化であっても破壊的変更になり得る点において厳密なセマンティックバージョニングを強制し、破棄されたスナップショットには -32802、無効なパラメータには -32602 とする標準的な JSON-RPC エラーコードを利用する。結果はスナップショットのコンテキスト内でのみ有効であり、権威ある定義は `tsp.json` に記述されているため、TSP は高パフォーマンスと後方互換性の期待をバランスさせた堅牢な Python ツーリングの基盤を提供しており、現在は Pylance 2026.4.1 と整合している。

2026/10/27 0:11

セバスチャン・ラスカによるゼロから始める推論モデル構築ビデオコース

## Japanese Translation: 本稿では、ゼロから環境設定を開始し、Python および PyTorch を用いて高度な推論モデルを構築する方法を教える 8 部構成の 11 時間の動画シリーズを紹介する。これらのモデルは標準的な LLM よりも大幅に高性能であり、検証可能な報酬を取り入れたポストトレーニング手法やインフェレンススケールアップにより達成されている。カリキュラムでは、事前学習済みの Qwen3 0.6B モデルをベースとして使用し、強化学習(RLVR)、教師モデルからの蒸留(例:DeepSeek R1)、MATH-500 データセットに対する数学回答検証器等の独自ツールを用いた評価といった技術を実装する。具体的なモジュールには、環境設定、検証器の構築、インフェレンススケールアップ(自己一貫性投票を含む)、自己改善ループ、Group Relative Policy Optimization(GRPO)を用いた RLVR 訓練、KL ロスなどの訓練指標の解析が含まれる。「Build a Reasoning Model (From Scratch)」という本によって裏付けられ、これらのリソースは、文脈管理やツール利用を制御するアクセスしやすい「エージェントハネス」を通じて、コーディングや旅行予約といった複雑なタスクを実行できる洗練された AI エージェントを作成することを学習者に導く。

vLLM のツール呼出精度を向上させる方法 | そっか~ニュース