Snowflake Cortex-AI-Funktion: Verbesserungen bei der Behandlung mehrzeiliger Fehler (Vorschau)

Achtung

Diese Verhaltensänderung ist in Bundle 2026_02 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Wenn dieses Verhaltensänderungs-Bundle aktiviert ist, geben die meisten:doc:` Snowflake Cortex-AI-Funktionen </user-guide/snowflake-cortex/aisql>` NULL bei einem Fehler zurück, anstatt den Fehler auszulösen. Dadurch können mehrzeilige Abfragen abgeschlossen werden, auch wenn einige Zeilen Fehler aufweisen. Außerdem passt die AI_PARSE_DOCUMENT-Funktion ihren Rückgabewert an, um mit der Fehlerbehandlung anderer AI-Funktionen konsistenter zu sein.

Vor der Änderung

Die meisten AI-Funktionen lösen einen Fehler aus, wenn die Funktion nicht erfolgreich ist, wodurch verhindert wird, dass mehrzeilige Abfragen abgeschlossen werden, wenn auch nur eine Zeile nicht verarbeitet werden kann.

Nach der Änderung

Die meisten AI-Funktionen geben NULL zurück, wenn die Funktion nicht erfolgreich ist, sodass mehrzeilige Abfragen abgeschlossen werden können, wenn einige Zeilen nicht verarbeitet werden können. Fehlerhafte Zeilen können aus mehrzeiligen Ergebnissen leicht ausgeschlossen werden.

Ein neuer, optionaler, endgültiger Parameter (return_error_details, wenn vorhanden und auf TRUE gesetzt) in den betroffenen AI-Funktionen bewirkt, dass die Funktionen ein OBJECT mit value- und error-Feldern zurückgeben und nicht den früheren Ergebnistyp. Wenn die Funktion erfolgreich war, weist das error-Feld den Wert NULL und das value-Feld den tatsächlichen Rückgabewert auf. Wenn die Funktion fehlgeschlagen ist, weist das value-Feld den Wert NULL und das error- Feld eine Fehlermeldung auf. Neben der Möglichkeit, fehlerhafte Zeilen aus mehrzeiligen Ergebnissen auszuschließen, können Fehler auch bei einer späteren Überprüfung erfasst werden.

Außerdem wurden kleinere Änderungen am Rückgabewert der AI_PARSE_DOCUMENT-Funktion vorgenommen, um sie wie folgt konsistenter mit anderen AI-Funktionen zu machen:

  • Wenn das return_error_details-Argument den Wert FALSE aufweist oder nicht vorhanden ist und ein Fehler auftritt, gibt die Funktion NULL zurück.

  • Wenn return_error_details vorhanden ist und den Wert TRUE aufweist, hat der Rückgabewert die folgenden Änderungen im Vergleich zum vorherigen Verhalten:

    • Das metadata-Feld, bisher ein Unterfeld des Wertefelds der obersten Ebene, ist jetzt selbst ein Feld der obersten Ebene.

    • Das errorInformation-Unterfeld des Felds value der obersten Ebene wird für Konsistenz mit dem Fehlerfeld der oberen Ebene in error umbenannt. Das error-Unterfeld ist jedoch nicht vorhanden, wenn kein Fehler auftritt, während das error-Feld der obersten Eben NULL ist.

BetroffeneAI-Funktionen

Die folgenden AI-Funktionen sind von diesem Verhaltensänderungs-Bundle betroffen.

  • AI_COMPLETE: Generiert Textantworten aus Text- oder Bilder-Prompts unter Verwendung eines bestimmten großen Sprachmodells (LLM ).

  • AI_CLASSIFY: Klassifiziert Text oder Bilder in benutzerdefinierte Kategorien.

  • AI_FILTER: Wendet semantische Filter auf Text und Bilder an, die in natürlicher Sprache ausgedrückt sind.

  • AI_PARSE_DOCUMENT: Extrahiert die Dokumentstruktur, den Text, die Bilder und die Tabellen als Markdown.

  • AI_TRANSCRIBE: Transkribiert Auto- oder Videodateien mit Sprecheridentifikation und Zeitstempeln.

  • AI_TRANSLATE: Übersetzt Text zwischen unterstützten Sprachen.

  • AI_SENTIMENT: Führt eine Stimmungsklassifizierung für Textinhalte aus.

  • AI_COUNT_TOKENS: Schätzt die Token-Nutzung für Prompts.

Nicht betroffene AI-Funktionen

Die folgendenAI-Funktionen sind nicht von dieser Verhaltensänderung betroffen:

  • AI_EXTRACT: Diese Funktion behandelt Fehler bereits, indem sie Fehlerinformationen als separates Feld im Ergebnis zurückgibt und nicht dazu führt, dass mehrzeilige Abfragen aufgrund eines Einzelfehlers fehlschlagen. Das Verhalten von AI_EXTRACT ist ähnlich wie das neue Verhalten anderer AI-Funktionen, wenn``return_error_details`` TRUE ist, obwohl diese Funktion return_error_details nicht akzeptiert.

  • AI_AGG und AI_SUMMARIZE_AGG: Aggregatfunktionen fallen nicht in den Bereich dieser BCR. Snowflake prüft immer noch, wie sich Zeilen, die Fehler verursachen, in der Aggregation verhalten sollen. Das Verhalten dieser Funktionen kann sich in einer zukünftigen BCR ändern.

  • AI_EMBED: Diese Funktion gibt einen VECTOR-Wert zurück, was derzeit für nicht VARIANT-Objekte unterstützt wird. Das Verhalten dieser Funktion kann sich in einer zukünftigen BCR ändern.

  • Ältere AI-Funktionen imSNOWFLAKE.CORTEX-Namespace. Snowflake beabsichtigt keine Änderung des Verhaltens dieser Funktionen.

Hilfreiche Funktionen

Diese BCR enthält zwei Hilfsfunktionen, die beim Extrahieren von Informationen aus dem Fehlerdetails-Objekt helfen, das zurückgegeben wird, wenn return_error_details aufTRUE gesetzt ist. Diese Funktionen bieten einen bequemen Zugriff auf alternatives Fehlerbehandlungsverhalten, wenn return_error_details auf TRUE gesetzt ist.

  • AI_NULL_IF_ERROR: Gibt NULL zurück, wenn das:code:error-Feld des angegebenen Wertes nicht NULL ist; andernfalls wird das value-Feld zurückgegeben. Dies ist das gleiche Verhalten, wie wenn:code:return_error_details auf FALSE gesetzt ist.

  • AI_THROW_IF_ERROR: Löst einen Fehler vom error-Feld des angegebenen Objekts aus, wenn es nicht NULL ist; andernfalls wird das value-Feld zurückgegeben. Dies ist das gleiche Verhalten, das AI-Funktionen vor dieser Verhaltensänderung hatten.

Beispiele

Die folgenden Beispiele veranschaulichen das neue Verhalten bei der Fehlerbehandlung. Diese Beispiele verwendenAI_TRANSLATE, aber das Verhalten ist für alle betroffenen Funktionen gleich.

Neues Verhalten mit und ohne Fehler

Das erste Codebeispiel zeigt die Ausgabe, wenn die Funktion erfolgreich ist, und das zweite Beispiel zeigt die Ausgabe, wenn die Funktion aufgrund eines ungültigen Sprachcodes fehlschlägt.

-- succeeds
SELECT AI_TRANSLATE(spanish_comment, 'es', 'en') as english_comment, "Este es un commentario" as spanish_comment;
Copy

Ergebnis:

+-------------------+------------------+
| ENGLISH_COMMENT   | SPANISH_COMMENT  |
|-------------------+------------------|
| This is a comment | Este es un       |
|                   | comentario       |
+-------------------+------------------+
-- fails
SELECT AI_TRANSLATE(spanish_comment, 'es', 'xx') as english_comment, "Este es un commentario" as spanish_comment;
Copy

Ergebnis

+-------------------+------------------+
| ENGLISH_COMMENT   | SPANISH_COMMENT  |
|-------------------+------------------|
| NULL              | Este es un       |
|                   | comentario       |
+-------------------+------------------+

Neues Verhalten mit Fehlerdetails

Wie zuvor zeigt das erste Codebeispiel eine erfolgreiche Funktion und das zweite eine fehlgeschlagene Funktion.

  -- succeeds
  SELECT AI_TRANSLATE(spanish_comment, 'es', 'en', TRUE) as result, "Este es un commentario" as spanish_comment;

Result:
Copy
+--------------------------------+------------------+
| RESULT                         | SPANISH_COMMENT  |
|--------------------------------|------------------|
| {                              | Este es un       |
|   "value": "This is a comment",| comentario       |
|   "error": NULL                |                  |
| }                              |                  |
+--------------------------------+------------------+
-- fails
SELECT AI_TRANSLATE(spanish_comment, 'es', 'xx', TRUE) as result, "Este es un commentario" as spanish_comment;
Copy

Ergebnis:

+--------------------------------+------------------+
| RESULT                         | SPANISH_COMMENT  |
|--------------------------------|------------------|
| {                              | Este es un       |
|   "value": NULL,               | comentario       |
|   "error": "Invalid language   |                  |
|           \"xx\"               |                  |
+--------------------------------+------------------+

Mehrzeilige Abfrage

Die folgenden Beispiele zeigen, wie Sie das neue Fehlerbehandlungsverhalten in einer mehrzeiligen Abfrage verwenden können. Tritt beim Verarbeiten einer Zeile ein Fehler auf, wird diese Zeile nicht in das Ergebnis aufgenommen. Bei den Beispieldaten wird angenommen, dass es sich um eine Tabelle mit Benutzerkommentaren in verschiedenen Sprachen handelt, und die Abfrage versucht, diese alle mit AI_TRANSLATE ins Englische zu übersetzen.

SELECT
  AI_TRANSLATE(comment, comment_language, 'en') as translation_result,
  comment_language,
  comment
FROM comments
WHERE translation_result IS NOT NULL;
Copy

Das folgende Beispiel zeigt die Verwendung des:code:return_error_details-Parameter, um das gleiche Ergebnis wie im vorherigen Beispiel zu erzielen.

SELECT
  AI_TRANSLATE(comment, comment_language, 'en', TRUE) as translation_result,
  comment_language,
  comment
FROM comments
WHERE translation_result:value IS NOT NULL;
Copy

Ref: 2184