Spring 日本語 フォロー Spring AI 2.0における自己補正構造化出力 大規模言語モデルは強力ですが、ソフトウェア統合のための構造化データには苦労します。Spring AI の構造化出力は、モデルが定義されたスキーマに準拠したテキストを生成できるようにすることで、このギャップを埋めます。このテキストは、その後、型付きオブジェクトに解析されます。Spring AI 2.0 は、プロバイダーネイティブの構造化出力と自己修正スキーマ検証という 2 つの主要な強化機能を導入しています。デフォルトは変更されていないため、既存のコードは互換性を保ちます。構造化出力を生成するために、開発者は Java のレコードを定義し、次に .entity() メソッドを使用してターゲット型を指定します。このプロセスは内部的にレコードから JSON スキーマを生成し、それをプロンプトに追加し、モデルの JSON レスポンスを目的のオブジェクトに解析し直します。Spring AI 2.0 より前のこのプロセスでは保証がなく、モデルがスキーマから逸脱した場合に解析エラーが発生する可能性がありました。.validateSchema() スイッチは、自己修正リトライループをアクティブにし、モデルのレスポンスをスキーマに対して自動的に検証し、検証が失敗した場合は特定のエラーフィードバックとともにプロンプトを再発行します。より強力な保証のために、.useProviderStructuredOutput() は、プロバイダー固有の API 機能を利用して、ソースでスキーマ準拠を強制します。これにより、無効なレスポンスが最初から発行されるのを防ぐことで、不正な出力が最小限に抑えられます。これらの 2 つの機能は、プロバイダーネイティブ出力がプライマリ制約として機能し、スキーマ検証がフォールバックとして機能することで、最大の回復力を実現するために組み合わせることができます。List や Map のようなジェネリック型の場合、単純な Class の代わりに ParameterizedTypeReference が使用されます。.responseEntity() メソッドは、解析されたエンティティとメタデータ用の生の ChatResponse の両方にアクセスできます。組み込みコンバーターが不十分な場合、カスタム StructuredOutputConverter 実装は、標準外の JSON ラッピングや、YAML や CSV のようなまったく異なる形式を処理できます。これにより、多様な統合ニーズに対してさらなる柔軟性が提供されます。 Self-Correcting Structured Output in Spring AI 2.0 spring.io Spring 日本語 RSS thenote.app
.entity()メソッドを使用してターゲット型を指定します。このプロセスは内部的にレコードから JSON スキーマを生成し、それをプロンプトに追加し、モデルの JSON レスポンスを目的のオブジェクトに解析し直します。Spring AI 2.0 より前のこのプロセスでは保証がなく、モデルがスキーマから逸脱した場合に解析エラーが発生する可能性がありました。.validateSchema()スイッチは、自己修正リトライループをアクティブにし、モデルのレスポンスをスキーマに対して自動的に検証し、検証が失敗した場合は特定のエラーフィードバックとともにプロンプトを再発行します。より強力な保証のために、.useProviderStructuredOutput()は、プロバイダー固有の API 機能を利用して、ソースでスキーマ準拠を強制します。これにより、無効なレスポンスが最初から発行されるのを防ぐことで、不正な出力が最小限に抑えられます。これらの 2 つの機能は、プロバイダーネイティブ出力がプライマリ制約として機能し、スキーマ検証がフォールバックとして機能することで、最大の回復力を実現するために組み合わせることができます。List や Map のようなジェネリック型の場合、単純な Class の代わりに ParameterizedTypeReference が使用されます。.responseEntity()メソッドは、解析されたエンティティとメタデータ用の生の ChatResponse の両方にアクセスできます。組み込みコンバーターが不十分な場合、カスタム StructuredOutputConverter 実装は、標準外の JSON ラッピングや、YAML や CSV のようなまったく異なる形式を処理できます。これにより、多様な統合ニーズに対してさらなる柔軟性が提供されます。