Kategorien:

Zeichenfolgen- und Binärfunktionen (Large Language Model)

COMPLETE (SNOWFLAKE.CORTEX) (multimodal)

Wichtig

Diese Funktion wird abgeschafft. Informationen über die aktualisierte Funktion finden Sie unter AI_COMPLETE. Snowflake bietet diese Funktion immer noch an. Verwenden Sie aber die aktualisierte Version, um das beste Ergebnis zu erzielen.

Erzeugt anhand eines Bildes und eines Prompts eine Antwort (Vervollständigung) unter Verwendung eines Sprachmodells. Diese Funktionsvariante unterstützt neben Textmodellen auch Bildmodelle und verarbeitet Bilder, die in einem internen Snowflake-Stagingbereich oder in einem externen Stagingbereich gespeichert sind. COMPLETE kann verwendet werden, um ein einzelnes Bild, mehrere Bilder im Batch (wobei auf jedes Bild der gleiche oder ein anderer Prompt angewendet wird) oder mehrere Bilder in einer einzigen Operation zu verarbeiten (z. B. Vergleich).

Syntax

Verwenden Sie eine der folgenden Optionen:

SNOWFLAKE.CORTEX.COMPLETE(
    '<model>', '<prompt>', <file_object>)
FROM <table>
Copy
SNOWFLAKE.CORTEX.COMPLETE(
    '<model>', <prompt_object> )
FROM <table>
Copy

Argumente

model

Zeichenfolge, die das zu verwendende Modell angibt. Geben Sie eines der folgenden Modelle an:

  • claude-3-5-sonnet

  • pixtral-large

Die unterstützten Modelle können unterschiedliche Kosten und Kontextfenster haben. Von Zeit zu Zeit können neue Modelle hinzugefügt werden.

prompt

Eine Zeichenfolge, die eine Frage zum Bild enthält und optional ein Ausgabeformat angibt, wie z. B. JSON. Entweder dieses oder das Argument prompt_object ist erforderlich.

prompt_object

Ein SQL-OBJECT, das einen Zeichenfolgen-Prompt mit nummerierten Platzhaltern ({0}, {1} usw.) und einen oder mehrere Text- oder FILE-Werte enthält, die in den Prompt eingefügt werden. Die Funktion Funktion PROMPT ist ein bequemer Weg, um ein Objekt mit dem gewünschten Layout zu erstellen. Entweder dieses Argument oder prompt ist erforderlich.

file_object

Ein FILE-Objekt, das eine zu verarbeitende Bilddatei enthält. Verwenden Sie die Funktion TO_FILE, um FILE-Objekte aus einem Stagingbereich zu erstellen. Erforderlich, wenn Sie einen Zeichenfolgen-Prompt verwenden.

FROM table

Eine optionale Tabelle, die Bildpfade und einen optionalen Prompt für jedes Bild enthält, ermöglicht die Batchverarbeitung von Bildern mit einem einzigen Aufruf von COMPLETE.

Rückgabewerte

Eine Zeichenfolge, die die Antwort des Sprachmodells enthält.

Nutzungshinweise

  • Um mehrere Bilder zu verarbeiten, muss die Eingabeaufforderung ein Objekt sein (normalerweise mit der PROMPT-Funktion erstellt), das eine Prompt-Vorlage und die zu verarbeitenden Dateien angibt.

  • Es werden nur Text und Bilder unterstützt. Video- und Audiodateien werden nicht unterstützt.

  • Bilder mit den Dateinamenerweiterungen .jpg, .jpeg, .png, .gif und .webp werden unterstützt. pixtral-large unterstützt auch .bmp.

  • Die maximale Bildgröße beträgt 10 MB für pixtral-large und 3,75 MB für claude-3-5-sonnet. Außerdem unterstützt claude-3-5-sonnet keine Bilder mit einer Auflösung von mehr als 8000x8000.

  • Für den Stagingbereich, der die Bilder enthält, muss die serverseitige Verschlüsselung aktiviert sein. Clientseitig verschlüsselte Stagingbereiche werden nicht unterstützt.

  • Die Funktion unterstützt keine benutzerdefinierten Netzwerkrichtlinien.

  • Bei Stagingbereich-Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden, bei Pfaden jedoch schon.

Beispiele

Die folgenden Beispiele demonstrieren die grundlegenden Möglichkeiten der Funktion COMPLETE mit Bildern.

Visuelle Beantwortung von Fragen

Ein Diagramm der Inflationsraten wird verwendet, um eine Frage zu den Daten zu beantworten.

Diagramm der Inflationsraten im Jahr 2023 mit Schätzungen für 2024

Vergleich zwischen den Inflationsraten im Jahr 2023 und 2024 (Statista))

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    'Which country will observe the largest inflation change in 2024 compared to 2023?',
    TO_FILE('@myimages', 'highest-inflation.png'));
Copy

Antwort:

Looking at the data, Venezuela will experience the largest change in inflation rates between 2023 and 2024.
The inflation rate in Venezuela is projected to decrease significantly from 337.46% in 2023 to 99.98% in 2024,
representing a reduction of approximately 237.48 percentage points. This is the most dramatic change among
all countries shown in the chart, even though Zimbabwe has higher absolute inflation rates.

Bildklassifizierung

Dieses Beispiel klassifiziert die Sehenswürdigkeit, die in einem einzelnen Bild identifiziert wurde.

Foto von der Space Needle in Seattle mit einem Welpen
SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    'Classify the landmark identified in this image. Respond in JSON only with the landmark name.',
    TO_FILE('@myimages', 'Seattle.jpg'));
Copy

Antwort:

{"landmark": "Space Needle"}

Extraktion von Entitäten aus einem Bild

Dieses Beispiel extrahiert die Entitäten (Objekte) aus einem Bild und gibt die Ergebnisse im JSON-Format zurück.

Foto einer Küche nach der Umgestaltung
SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    'Extract the kitchen appliances identified in this image. Respond in JSON only with the identified appliances.',
    TO_FILE('@myimages', 'kitchen.png'));
Copy

Antwort:

{
    "appliances": [ "microwave","electric stove","oven","refrigerator" ]
}

Batchverarbeitung von Bildern aus einem Verzeichnis oder einer Tabelle

Für die Batchverarbeitung mehrerer Bilder, bei der für jedes Bild die gleiche Operation durchgeführt wird, speichern Sie die Bilddateien im gleichen Stagingbereich. Wenden Sie die Funktion COMPLETE auf jede Zeile der Tabelle an.

Bemerkung

Der Stagingbereich muss über eine Verzeichnistabelle verfügen, um die Pfade zu seinen Dateien abrufen zu können.

Erstellen Sie zunächst die Tabelle, indem Sie die Speicherorte der Bilder aus dem Verzeichnis abrufen, diese in FILE-Objekte konvertieren und die resultierenden FILE-Objekte in einer Spalte in einer Tabelle speichern. Verwenden Sie SQL wie folgt:

CREATE TABLE image_table AS
    (SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));
Copy

Wenden Sie dann die Funktion COMPLETE auf die Spalte an, die die FILE-Objekte enthält. Das folgende Beispiel klassifiziert jedes Bild in der Tabelle:

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON', img_file)) AS image_classification
FROM image_table;
Copy

Antwort:

{ "classification": "Inflation Rates" }
{ "classification": "beverage refrigerator" }
{ "classification": "Space Needle" }
{ "classification": "Modern Kitchen" }
{ "classification": "Pie Chart" }
{ "classification": "Economic Graph" }
{ "classification": "Persian Cat" }
{ "classification": "Labrador Retriever" }
{ "classification": "Jedi Cat" }
{ "classification": "Sleeping cat" }
{ "classification": "Persian Cat" }
{ "classification": "Garden Costume" }
{ "classification": "Floral Fashion" }

Wenn Sie bereits über eine Tabelle mit Pfaden zu den Bildern verfügen, können Sie die Funktion TO_FILE verwenden, um die FILE-Objekte innerhalb der Abfrage zu erstellen:

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', img_path)) AS image_classification
FROM image_table;
Copy

Sie können die zu verarbeitenden Bilder auch direkt aus dem Verzeichnis eines Stagingbereichs abrufen, wie hier gezeigt:

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', RELATIVE_PATH))) as image_classification
FROM DIRECTORY(@myimages);
Copy

Bilder und Prompts in einer Tabelle bereitstellen

Wenn Sie für jedes Bild in einer Tabelle eine andere Operation durchführen möchten, stellen Sie die Bilder und die entsprechenden Prompts in einer Tabelle bereit. Im folgenden Beispiel enthält die Tabelle den Stagingbereichspfad eines jeden Bildes in der Spalte img_path und den Prompt in der Spalte prompt.

SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
    PROMPT('Given the input image {0}, {1}. Respond in JSON',
        TO_FILE('@myimages', img_path), prompt) as image_result)
FROM image_table;
Copy