Skip to main content
構造化出力とツール呼び出しは、ルート固有の契約です。TokenLabは複数の公開APIフォーマットを転送するため、最も安全なプロダクションパターンは、各プロバイダネイティブツールの形状を所有するルートに保持し、モデル出力を自分のアプリケーションで検証することです。

ルートを選択する

プロバイダネイティブの組み込みツールを異なるルートを通じて送信し、TokenLabが静かにそれらを翻訳することを期待しないでください。

JSONモード

ポータブル構造化レスポンスのために、Chat Completions JSONモードから始めます:
Chat Completionsのための安定した共有検証は、textjson_object を受け入れます。json_schemastrict、およびプロバイダ固有のスキーマ強制は、一部の上流ルートや変換パスに存在する可能性がありますが、すべてのTokenLabルートとモデルに対する包括的な約束ではありません。依存する前に、選択したモデルに対してそれらを検証してください。 常にサーバー上で返されたJSONを解析し、検証してください。JSONモードは形状を改善しますが、アプリケーションレベルのスキーマ検証を置き換えるものではありません。

ツール呼び出しループ

TokenLabはあなたの関数を実行しません。あなたのアプリケーションがループを所有します:
  1. メッセージとツール定義を送信します。
  2. モデルのレスポンスから tool_callsfunction_call、Anthropic tool_use、またはGemini関数呼び出し部分を読み取ります。
  3. 自分のバックエンドでツールを実行します。
  4. 同じルートによって要求される形式でツールの結果を追加します。
  5. モデルが最終的な答えを返すまで会話を続けます。
ツールループ全体で同じルートを維持してください。Chat Completions、Responses、Messages、およびGeminiフォーマットを1つの会話で混合すると、通常は微妙な状態やスキーマのバグが発生します。

Chat Completionsの例

スキーマ設計

  • スキーマは小さく明示的に保ちます。大きなネストされたスキーマはトークンを追加し、信頼性を低下させます。
  • 製品が継続できない値には必須フィールドを優先します。
  • UIやバックエンドが依存する閉じたセットにはenumを使用します。
  • モデルが形状に苦労している場合は、プロンプトに例を含めます。
  • サポートされていないフィールドエラーは契約フィードバックとして扱います。フィールドを削除するか、それを文書化しているネイティブルートを使用します。

プロダクションチェックリスト

  • ルート、モデル、ツール名、およびサニタイズされたスキーマ形状をログに記録します。
  • 副作用を実行する前にツール引数を検証します。
  • ツール実行前に独自の権限チェックを適用します。
  • クライアントの再試行が同じツール呼び出しを繰り返す可能性がある場合、ツール実行を冪等にします。
  • ツールから返された秘密をモデルが見えるメッセージにログしないでください。

APIリファレンス