Kategorien:

Zeichenfolgen- und Binärfunktionen (Large Language Model)

AI_COMPLETE (Einzelne Zeichenfolge)

Bemerkung

AI_COMPLETE ist die aktualisierte Version von COMPLETE (SNOWFLAKE.CORTEX). Die neueste Funktionalität finden Sie unter AI_COMPLETE.

Erzeugt eine Antwort (Vervollständigung) auf einen Text-Prompt unter Verwendung eines unterstützten Sprachmodells.

Syntax

Die Funktion enthält zwei erforderliche Argumente und vier optionale Argumente. Die Funktion kann entweder mit der Syntax für positionale oder benannte Argumente verwendet werden.

Verwendung von AI_COMPLETE mit einer einzelnen Zeichenfolgeneingabe

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters>, <response_format>, <show_details> ] )
Copy

Argumente

model

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

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • deepseek-r1

  • gemma-7b

  • jamba-1.5-mini

  • jamba-1.5-large

  • jamba-instruct

  • llama2-70b-chat

  • llama3-8b

  • llama3-70b

  • llama3.1-8b

  • llama3.1-70b

  • llama3.1-405b

  • llama3.2-1b

  • llama3.2-3b

  • llama3.3-70b

  • llama4-maverick

  • llama4-scout

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • openai-gpt4.1

  • openai-o4-mini

  • reka-core

  • reka-flash

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

Unterstützte Modelle können unterschiedliche Kosten haben.

prompt

Ein Zeichenfolgen-Prompt

model_parameters

Ein Objekt, das null oder mehr der folgenden Optionen enthält, die die Hyperparameter des Modells beeinflussen. Siehe LLM-Einstellungen.

  • temperature: Ein Wert von 0 bis 1 (einschließlich), der die Zufälligkeit der Ausgabe des Sprachmodells steuert. Eine höhere Modelltemperatur (z. B. 0,7) führt zu einer vielfältigeren und zufälligeren Ausgabe, während eine niedrigere Modelltemperatur (z. B. 0,2) die Ausgabe deterministischer und konzentrierter macht.

    Standardeinstellung: 0

  • top_p: Ein Wert von 0 bis 1 (einschließlich), der die Zufälligkeit und Diversität des Sprachmodells steuert und im Allgemeinen als Alternative zu temperature verwendet wird. Der Unterschied besteht darin, dass top_p die Menge der möglichen Token, die das Modell ausgibt, einschränkt, während temperature beeinflusst, welche Token bei jedem Schritt ausgewählt werden.

    Standardeinstellung: 0

  • max_tokens: Legt die maximale Anzahl der Ausgabe-Token in der Antwort fest. Kleine Werte können zu abgeschnittenen Antworten führen.

    Standardwert: 4.096 Maximal zulässiger Wert: 8.192

  • guardrails: Filtert potenziell unsichere und schädliche Antworten aus einem Sprachmodell unter Verwendung von Cortex Guard. Entweder TRUE oder FALSE.

    Standard: FALSE

response_format

Ein JSON-Schema, dem die Antwort folgen sollte. Dies ist ein SQL-Unterobjekt, keine Zeichenfolge. Wenn response_format nicht angegeben wird, ist die Antwort eine Zeichenfolge, die entweder die Antwort oder ein serialisiertes JSON-Objekt enthält, das die Antwort und Informationen dazu enthält.

Weitere Informationen dazu finden Sie unter Strukturierte AI_COMPLETE-Ausgaben.

show_details

Ein boolesches Flag, das angibt, ob ein serialisiertes JSON-Objekt zurückgegeben werden soll, das die Antwort und Informationen dazu enthält.

Rückgabewerte

Wenn das Argument show_details nicht angegeben oder auf FALSE festgelegt ist und das Argument response_format nicht angegeben oder auf NULL gesetzt ist, wird eine Zeichenfolge zurückgegeben, die die Antwort enthält.

Wenn das Argument show_details nicht angegeben oder auf FALSE gesetzt ist und response_format angegeben wird, wird ein Objekt zurückgegeben, das dem angegebenen Antwortformat entspricht.

Wenn das Argument show_details auf TRUE gesetzt ist und response_format nicht angegeben wird, wird ein JSON-Objekt zurückgegeben, das die folgenden Schlüssel enthält:

  • "choices": Ein Array mit den Antworten des Modells. (Derzeit wird nur eine Antwort bereitgestellt.) Jede Antwort ist ein Objekt, das einen Schlüssel "messages" enthält, dessen Wert die Antwort des Modells auf die letzte Eingabeaufforderung ist.

  • "created": UNIX-Zeitstempel (Sekunden seit Mitternacht des 1. Januar 1970) für das Generieren der Antwort.

  • "model": Name des Modells, das die Antwort erstellt hat.

  • "usage": Objekt, das die Anzahl der von dieser Vervollständigung verbrauchten und generierten Token erfasst. Enthält die folgenden Unterschlüssel:

    • "completion_tokens": Anzahl der Token in der generierten Antwort.

    • "prompt_tokens": Anzahl der Token im Prompt.

    • "total_tokens": Gesamtzahl der verbrauchten Token, die sich aus der Summe der beiden anderen Werte ergibt.

Wenn das Argument show_details auf TRUE gesetzt ist und response_format angegeben wird, wird ein JSON-Objekt zurückgegeben, das die folgenden Schlüssel enthält:

  • "structured_output": Ein JSON-Objekt, das dem angegebenen Antwortformat entspricht

  • "created": UNIX-Zeitstempel (Sekunden seit Mitternacht des 1. Januar 1970) für das Generieren der Antwort.

  • "model": Name des Modells, das die Antwort erstellt hat.

  • "usage": Objekt, das die Anzahl der von dieser Vervollständigung verbrauchten und generierten Token erfasst. Enthält die folgenden Unterschlüssel:

    • "completion_tokens": Anzahl der Token in der generierten Antwort.

    • "prompt_tokens": Anzahl der Token im Prompt.

    • "total_tokens": Gesamtzahl der verbrauchten Token, die sich aus der Summe der beiden anderen Werte ergibt.

Beispiele

Einzelne Antwort

So generieren Sie eine einzige Antwort:

SELECT AI_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

Antworten aus Tabellenspalte

Das folgende Beispiel erzeugt eine Antwort für jede Zeile in der Tabelle reviews, wobei die Spalte content als Eingabe verwendet wird. Jedes Abfrageergebnis enthält eine Kritik der entsprechenden Rezension.

SELECT AI_COMPLETE(
    'mistral-large',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Copy

Tipp

Wie in diesem Beispiel gezeigt, können Sie in der Eingabeaufforderung mittels Tagging die Art der generierten Antwort steuern. Tipps dazu finden Sie unter Leitfaden zu Eingabeaufforderungen mit LLaMA 2.

Modellparameter kontrollieren

Das folgende Beispiel gibt die model_parameters an, die für die Bereitstellung einer Antwort verwendet werden.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

Die Antwort ist eine Zeichenfolge, die die Nachricht des Sprachmodells und andere Informationen enthält. Beachten Sie, dass die Antwort wie für das model_parameters-Argument angegeben gekürzt wird.

"The unique pattern on a snowflake is"
Copy

Detaillierte Ausgabe

Das folgende Beispiel zeigt, wie Sie das Argument show_details verwenden können, um zusätzliche Inferenzdetails zurückzugeben.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    },
    show_details => true
);
Copy

Die Antwort ist ein JSON-Objekt mit der Nachricht des Modells und den zugehörigen Details. Das Argument options wurde verwendet, um die Ausgabe abzuschneiden.

{
    "choices": [
        {
            "messages": " The unique pattern on a snowflake is"
        }
    ],
    "created": 1708536426,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 10,
        "prompt_tokens": 22,
        "guardrail_tokens": 0,
        "total_tokens": 32
    }
}
Copy

JSON-Antwortformat festlegen

Dieses Beispiel veranschaulicht die Verwendung des Arguments response_format der Funktion, um eine strukturierte Antwort zurückzugeben.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    }
);
Copy

Die Antwort ist ein JSON-Objekt, das dem strukturierten Antwortformat entspricht.

Antwort:

{
    "sentiment_categories": [
        {
            "food_cost": "negative",
            "food_quality": "positive",
            "food_taste": "positive",
            "wait_time": "neutral"
        }
    ]
}

JSON-Antwortformat mit detaillierter Ausgabe festlegen

Dieses Beispiel veranschaulicht die Verwendung des Arguments response_format der Funktion zur Rückgabe einer strukturierten Antwort in Kombination mit show_details, um zusätzliche Informationen zu erhalten.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    },
    show_details => true
);
Copy

Die Antwort ist ein JSON-Objekt, das eine strukturierte Antwort mit zusätzlichen Inferenz-Metadaten enthält.

{
    "created": 1738683744,
    "model": "mistral-large2",
    "structured_output": [
        {
            "raw_message": {
                "sentiment_categories": [
                    {
                        "food_cost": "negative",
                        "food_quality": "positive",
                        "food_taste": "positive",
                        "wait_time": "neutral"
                    }
                ]
            },
            "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 60,
        "prompt_tokens": 94,
        "total_tokens": 154
    }
}