Qwen-3 チャットテンプレート分析

Qwen-3 は柔軟で効率的なチャットテンプレートを導入

Qwen によって開発された Qwen-3 モデルは、前身である Qwen-2.5 や QwQ よりも洗練されたチャットテンプレートを備えています。この更新された Jinja テンプレートは、モデルが推論をどのように処理し、会話のコンテキストを管理し、ツールと対話するかにおいて重要な改善をもたらし、エージェント的なワークフローをより信頼性が高く効率的なものにします。

enable_thinking フラグによるオプションの推論

Qwen-3 では、enable_thinking フラグを使用して推論機能を切り替えることができ、以前のモデルで見られた強制的な思考の連鎖(chain-of-thought)パターンから脱却しています。

enable_thinkingfalse に設定されている場合、テンプレートは空の <think></think> ペアを挿入し、モデルにステップバイステップの思考をスキップするように指示します。対照的に、QwQ のようなモデルは、<think> タグを生成プロンプトに直接組み込むことで、すべての会話で推論を強制します。フラグが true に設定されている場合、モデルは推論を行うかどうかを自律的に決定する権限を保持します。

ローリングチェックポイントによる動的なコンテキスト管理

Qwen-3 は、「ローリングチェックポイント」システムを利用して、会話の進行状況に基づいて推論ブロックをインテリジェントに保持または削減します。このシステムは、メッセージリストを逆方向に走査して、ツール呼び出しではなかった最新のユーザーのターンを特定します。テンプレートは、そのインデックス以降のすべてのアシスタントの返答に対して完全な <think> ブロックを保持し、それ以前のメッセージについてはそれらを削除します。

この動的なアプローチは、いくつかの技術的な利点を提供します:

  • アクティブな計画の保持: モデルは、マルチステップのツール呼び出し中に現在の計画を可視化し続けます。
  • 入れ子になったワークフローのサポート: 情報の損失なしに、入れ子になったツールのワークフローのコンテキストを維持します。
  • トークン効率: モデルがもはや必要としない推論ブロックを削除することで、トークンを節約します。
  • ノイズの削減: 「古い」推論が新しいタスクの妨げになるのを防ぎます。

改善されたツールの引数シリアライズ

Qwen-3 は、ツールの引数の型チェックを実装することで、二重エスケープを防ぎ、ツール呼び出しの信頼性を向上させています。以前の Qwen-2.5 のようなモデルでは、入力がすでに JSON エンコードされた文字列であるかどうかにかかわらず、すべての tool_call.arguments フィールドは | tojson フィルタを通過していました。Qwen-3 では、引数がすでに文字列であるかどうかをチェックし、文字列である場合は直接出力し、入力が文字列でない場合にのみ | tojson を適用します。

デフォルトのシステムプロンプトの削除

デフォルトのシステムプロンプト(例:「You are Qwen, created by Alibaba Cloud. You are a helpful assistant」)を使用していた Qwen-2.5 シリーズとは異なり、Qwen-3 と QwQ はデフォルトのシステムプロンプトなしで提供されます。この省略にもかかわらず、モデルはユーザーから尋ねられた際に、自身の作成者を正確に特定する能力を維持しています。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch