- 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> ] )
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üsselrole
und einen Schlüsselcontent
enthalten. Dercontent
-Wert ist je nach Rolle eine Aufforderung oder eine Antwort. Die Rolle muss eine der folgenden sein:role
-Wertcontent
-Wertsystem
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 zutemperature
verwendet wird. Der Unterschied besteht darin, dasstop_p
die Menge der möglichen Token, die das Modell ausgibt, einschränkt, währendtemperature
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 Argumentprompt
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?');
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;
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
}
);
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
}
}
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;
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
}
}
Rechtliche Hinweise¶
LLM-basierte Snowflake Cortex-Funktionen werden durch Machine Learning-Technologie unterstützt, einschließlich LLaMA 2 von Meta. Das grundlegende LLaMA 2-Modell ist unter der LLaMA 2 Community-Lizenz und Copyright (c) Meta Platforms, Inc. lizenziert. Alle Rechte vorbehalten. Ihre Verwendung von LLM-Funktionen, die auf dem LLama 2-Modell basieren, unterliegt der Acceptable Use Policy von Meta.
Die Machine Learning-Technologie und die bereitgestellten Ergebnisse können ungenau, unangemessen oder verzerrt sein. Entscheidungen auf der Grundlage von Ergebnissen aus Prozessen des maschinellen Lernens, einschließlich solcher, die in automatische Pipelines integriert sind, erfordern eine von Menschen durchgeführte Überwachung und Überprüfung, um sicherzustellen, dass die vom Modell generierten Inhalte korrekt sind.
Von LLM-Funktionen ausgeführte Abfragen werden wie alle anderen SQL-Abfragen behandelt, deren Metadaten untersucht werden können.
Weitere Informationen dazu finden Sie unter Snowflake AI Trust and Safety FAQ.