Qwen 3.5 ツール呼び出しのエージェント利用向け修正:サーバーステータスとクライアント側の回避策

Qwen 3.5エージェント環境におけるツール呼び出しのバグ
コーディングエージェントや関数呼び出しループなどのエージェント環境でQwen 3.5モデルを実行する場合、4つの特定のバグが原因でツール呼び出しが完全に失敗する可能性があります。
4つの主要なバグ
- XMLツール呼び出しがプレーンテキストとして漏洩: Qwen 3.5はツール呼び出しをXML形式(例: <function=bash><parameter=command>ls</parameter></function>)で出力します。サーバーがこれを解析できない場合(特にテキストがXMLの前にあったり、思考モードが有効になっている場合)、ツール呼び出しはfinish_reason: stopを持つ生のテキストとして到着するため、エージェントはそれを実行しません。
- <think>タグがテキストに漏れてコンテキストを汚染: llama.cppはenable_thinking: falseに関わらず内部的にthinking=1を強制するため、タグがターン間で蓄積され、マルチターンセッションを破壊します。
- 間違ったfinish_reason: サーバーはツール呼び出しが存在する場合に「stop」を送信し、エージェントがそれを最終回答として扱う原因となります。
- 非標準のfinish_reason: 一部のサーバーは「eos_token」、「」、またはnullを返し、ほとんどのフレームワークがツール呼び出しの存在を確認する前に未知の値でクラッシュします。
サーバーステータス(2026年4月)
ソースは主要な推論サーバーの詳細なステータステーブルを提供します:
- LM Studio 0.4.9: XML解析のための最適なローカルオプション(v0.4.7で修正)、思考漏れ処理の改善、通常は正しいfinish_reason。
- vLLM 0.19.0: --tool-call-parser qwen3_coderフラグで動作、ストリーミングバグが存在、思考漏れは修正済み、通常は正しいfinish_reason。
- Ollama 0.20.2: 閉じられていない</think>バグの修正以来改善されたが、XML解析はまだ不安定、時々間違ったfinish_reason。
- llama.cpp b8664: パーサーは存在するが思考モードが有効な場合に失敗、思考漏れは未修正、パーサーが失敗した場合に間違ったfinish_reason。
推奨される解決策
ツール引数で|itemsフィルターが失敗する既知の問題がある標準のQwen 3.5 Jinjaテンプレートの代わりに、Unsloth GGUFsを使用してください。Unslothには21のテンプレート修正が含まれています。
サーバーが見逃したものをキャッチする3つの小さな関数でクライアント側の安全網を追加します。ソースは最初の関数を提供します:
import re, json, uuid
1. テキストコンテンツからQwen XMLツール呼び出しを解析
def parse_qwen_xml_tools(text):
results = []
for m in re.finditer(r'<function=([\w.-]+)>([\s\S]?)</function>', text):
args = {}
for p in re.finditer(r'<parameter=([\w.-]+)>([\s\S]?)</parameter>', m.group(2)):
k, v = p.group(1).strip(), p.group(2).strip()
try:
v = json.loads(v)
except:
pass
args[k] = v
この関数は、サーバーがXMLを適切に解析できない場合にテキストコンテンツからツール呼び出しを抽出し、エージェントワークフローのためのフォールバックメカニズムを提供します。
📖 完全なソースを読む: r/LocalLLaMA
👀 See Also

フロントエンド最適化のためのClaude Code:88 PSIから100 PSIへ
ある開発者がClaude Codeを使用して、PageSpeed Insightsのモバイルスコアを88から100に引き上げた。主な戦術は、srcsetによるレスポンシブ画像、IntersectionObserver、フォントのプリロード除去。Claudeはワンプロンプトで修正するのではなく、デバッグパートナーとして機能した。

ガイド:Lemonadeサーバーを介してWindowsでローカルLLMとGitHub Copilotを実行する方法
ある開発者が、Framework DesktopでLemonade Serverを使用してGitHub CopilotをローカルLLMと連携させるための手順を公開しました。これは、Windowsでのこの設定に関する簡単な手順が見つからなかったため作成されました。

Claude VS Code拡張機能のエラー修正:「command claude-vscode.editor.openLast not found」
Claude VS Code拡張機能バージョン2.1.51には、重大なバグが含まれており、ユーザーが操作しようとすると「コマンド 'claude-vscode.editor.openLast' が見つかりません」というエラーが発生します。回避策はバージョン2.1.49にダウングレードすることです。

ChatGPTの履歴をClaudeのメモリに転送する4つの方法
Claudeは現在ChatGPTデータのメモリインポートを提供していますが、4つのアプローチがあり、それぞれ異なるトレードオフがあります:速度重視の組み込みインポート、制御性重視のキュレーション抽象化、保存性重視の完全エクスポート、またはこれら3つを組み合わせたハイブリッド手法です。