Kategorien:

Zeichenfolgen- und Binärfunktionen (Large Language Model)

COMPLETE (SNOWFLAKE.CORTEX)

Generiert für eine gegebene Eingabeaufforderung eine Antwort (Vervollständigung) unter Verwendung eines von Ihnen gewählten unterstützten Sprachmodells.

Syntax

SNOWFLAKE.CORTEX.COMPLETE(
    <model>, <prompt_or_history> [ , <options> ] )
Copy

Argumente

Benötigt:

model

Zeichenfolge, die das zu verwendende Modell angibt. Dies muss eine der folgenden sein:

  • 'mistral-large'

  • 'mixtral-8x7b'

  • 'llama2-70b-chat'

  • 'mistral-7b'

  • 'gemma-7b'

Unterstützte Modelle können unterschiedliche Kosten und Kontingente haben.

prompt_or_history

Eingabeaufforderung oder Konversationsverlauf, die zum Erstellen einer Vervollständigung (Completion) verwendet werden sollen.

Wenn options nicht vorhanden ist, muss die angegebene Eingabeaufforderung eine Zeichenfolge sein.

Wenn options vorhanden ist, muss das Argument ein Array von Objekten sein, die eine Konversation in chronologischer Reihenfolge darstellen. Jedes Objekt muss einen Schlüssel role und einen Schlüssel content enthalten. Der content-Wert ist je nach Rolle eine Aufforderung oder eine Antwort. Die Rolle muss eine der folgenden sein:

role-Wert

content-Wert

system

Eine anfängliche Eingabeaufforderung in einfachem Englisch für das Sprachmodell, um es mit Hintergrundinformationen und Anweisungen für einen Antwortstil zu versorgen. Zum Beispiel: „Antworte im Stil eines Piraten“. Das Modell generiert keine Antwort auf eine System-Eingabeaufforderung. Es darf nur eine System-Eingabeaufforderung angegeben werden, und wenn diese vorhanden ist, muss sie die erste im Array sein.

'user'

Eine vom Benutzer bereitgestellte Eingabeaufforderung. Muss der System-Eingabeaufforderung (falls vorhanden) oder einer „assistant“-Antwort folgen.

'assistant'

Eine Antwort, die zuvor vom Sprachmodell bereitgestellt wurde. Muss einer Benutzer-Eingabeaufforderung folgen. Frühere Antworten können verwendet werden, um eine zustandsabhängige Konversation zu ermöglichen. Siehe Nutzungshinweise.

Optional:

options

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.

  • 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.

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

Die Angabe des Arguments options, auch wenn es sich um ein leeres Objekt ({}) handelt, wirkt sich darauf aus, wie das Argument prompt interpretiert und die Antwort formatiert wird.

Rückgabewerte

Wenn das Argument options nicht angegeben wird, eine Zeichenfolge.

Wenn das Argument options angegeben wird, eine Zeichenfolgenrepräsentation für das JSON-Objekt, 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 in der Eingabeaufforderung.

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

Zugriffssteuerung

Benutzer müssen eine Rolle verwenden, der die Datenbankrolle SNOWFLAKE.CORTEX_USER zugewiesen wurde: Weitere Informationen zum Erteilen dieser Berechtigung finden Sie unter Erforderliche Berechtigungen.

Nutzungshinweise

COMPLETE behält den Status von einem Aufruf zum nächsten nicht bei. Um die Funktion COMPLETE für eine zustandsabhängige Konversationserfahrung zu verwenden, übergeben Sie alle vorherigen Benutzer-Eingabeaufforderungen und Modellantworten in der Konversation als Teil des Arrays prompt_or_history. (Siehe Vorlagen für Chat-Modelle.) Beachten Sie, dass sich die Anzahl der verarbeiteten Token mit jeder „Runde“ erhöht und die Kosten proportional dazu steigen.

Beispiele

Einzelne Antwort

So generieren Sie eine einzige Antwort:

SELECT SNOWFLAKE.CORTEX.COMPLETE('mistral-large', 'What are large language models?');
Copy

Antworten aus Tabellenspalte

Im folgenden Beispiel wird eine Antwort aus jeder Zeile einer Tabelle generiert (in diesem Beispiel ist content eine Spalte der Tabelle reviews). Die Tabelle reviews enthält eine Spalte namens review_content, die den Text der von den Benutzern abgegebenen Bewertungen enthält. Die Abfrage gibt eine Kritik zu jeder Bewertung zurück.

SELECT SNOWFLAKE.CORTEX.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.

Steuerung von Modelltemperatur und Token

Dieses Beispiel veranschaulicht die Verwendung des options-Arguments der Funktion zur Steuerung der Inferenzhyperparameter in einer einzigen Antwort. Beachten Sie, dass in dieser Form der Funktion die Eingabeaufforderung als Array angegeben werden muss, da diese Form mehrere Eingabeaufforderungen und Antworten unterstützt.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-7b-chat',
    [
        {
            'role': 'user',
            'content': 'how does a snowflake get its unique pattern?'
        }
    ],
    {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

Die Antwort ist ein JSON-Objekt, das die Meldung des Sprachmodells und andere Informationen enthält. Beachten Sie, dass die Antwort wie für das options-Argument angegeben gekürzt wird.

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

Beispiel: Bereitstellen einer System-Eingabeaufforderung

Dieses Beispiel veranschaulicht die Verwendung einer System-Eingabeaufforderung, um eine Stimmungsanalyse von Filmkritiken auszuführen. Das Argument prompt ist hier ein Array von Objekten, die jeweils einen entsprechenden role-Wert haben.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-70b-chat',
    [
        {'role': 'system', 'content': 'You are a helpful AI assistant. Analyze the movie review text and determine the overall sentiment. Answer with just \"Positive\", \"Negative\", or \"Neutral\"' },
        {'role': 'user', 'content': 'this was really good'}
    ], {}
    ) as response;
Copy

Die Antwort ist ein JSON-Objekt, das die Antwort des Sprachmodells und andere Informationen enthält.

{
    "choices": [
        {
        "messages": " Positive"
        }
    ],
    "created": 1708479449,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 3,
        "prompt_tokens": 64,
        "total_tokens": 67
    }
}
Copy