構造化出力¶
このトピックでは、JSON を使用してエージェントワークフローからスキーマ検証済みの JSON を返す方法について説明します。エージェントはタスクを完了するために必要な任意のツールを使用でき、検証に成功すると、スキーマに一致する構造化データが結果に含まれます。
必要な構造の JSON スキーマ を定義すると、SDK が定義されたスキーマに基づいてモデルの最終出力を検証します。
構造化出力を使用する理由¶
エージェントはデフォルトで自由形式のテキストを返します。これは会話のユースケースでは機能しますが、出力をプログラムで使用する必要がある場合は機能しません。構造化出力には、アプリケーションロジック、データベース、または UI コンポーネントに直接渡すことができる型付きデータが含まれています。
コードベースを分析するエージェントについて考えてみましょう。構造化出力がないと、ご自分で解析する必要のある自由形式のテキストが取得されます。構造化出力を使用すると、必要な形状を定義し、直接使用できる型付きデータを取得できます。
構造化出力なし |
構造化出力あり |
|---|---|
クイックスタート¶
JSON スキーマを outputFormat (TypeScript)または output_format (Python)のオプションに渡します。検証に成功すると、結果メッセージにスキーマに一致するデータが格納されている structured_output フィールドが含まれます。再試行後にエージェントがスキーマを満たすことができない場合は、SDK が代わりにエラー結果を返します。
ZodとPydanticによる型セーフなスキーマ¶
JSON スキーマを手動で記述する代わりに、`Zod<https://zod.dev/>`_ (TypeScript)または Pydantic (Python)を使用してスキーマを定義します。これらのライブラリは JSONスキーマを生成します。オートコンプリートと型チェックを使用して、応答を完全に型付けされたオブジェクトに解析できます。
例: TODO 追跡エージェント¶
この例では、マルチステップツール使用の構造化出力を示しています。エージェントは、組み込みツール(Grep、Bash)を使用してコードベースで TODO コメントを見つけ、結果を構造化データとして返します。author などのオプションフィールドは、git責任情報が利用できない可能性があるケースを処理します。
例: SQL クエリ結果¶
Cortex Codeには、Snowflake SQL ツールが組み込まれています。これらを構造化出力と組み合わせて、型付きのクエリ結果を取得できます。
出力形式の構成¶
outputFormat (TypeScript)または output_format (Python)の各オプションは、次のフィールドを持つオブジェクトを受け入れます。
フィールド |
値 |
説明 |
|---|---|---|
|
|
必須です。 |
|
JSON スキーマオブジェクト |
出力構造を定義します。 |
サポートされている標準 JSON スキーマ機能: すべての基本型(object、 array、 string、 number、 boolean、 null)、enum、const、required、ネストされたオブジェクト、および $ref 定義。
エラー処理¶
エージェントがスキーマに一致する有効な JSON を生成できない場合は、構造化出力の生成に失敗する可能性があります。この問題が発生すると、結果メッセージにどのような問題が発生したかを示す subtype が表示されます。
サブタイプ |
意味 |
|---|---|
|
出力が生成され、正常に検証されました |
|
複数回試行した後に、エージェントが有効な出力を生成できませんでした |
Tip
エラーを回避するためのヒント:
スキーマに焦点を当てます。 多くの必須フィールドを持つ深くネストされたスキーマは、要件を満たすことが困難です。シンプルな状態から始めて、必要に応じて複雑さを追加します。
スキーマをタスクに一致させる。 スキーマが必要とするすべての情報がタスクにない可能性がある場合は、これらのフィールドをオプションにします。
明確なプロンプトを使用する。 あいまいなプロンプトは、エージェントがどのような出力を生成する必要があるかを把握するのを困難にします。
法的通知¶
Cortexコードの設定が `モデルとサービスのパススルー規約<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/ai-features/model-pass-through-terms/>`__ において提供されるモデルを使用する場合、そのモデルの使用にはそのページにあるモデルの規約も適用されます。
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
|---|---|---|
Usage Data |
顧客データ |
カバーされているAI機能[1]_ |
詳細については、 Snowflake AI と ML をご参照ください。