Cortex Chat Completions API¶
Die Cortex Chat Completions API ist eine modellunabhängige Obermenge der OpenAI Chat Completions APIund ermöglicht die Kompatibilität mit einem großen Ökosystem von Tools, Bibliotheken und Drittanbieter-AI-Anwendungen.
Die Cortex Chat Completions API ist eine Begleit-API zur Cortex REST API mit erweiterter Unterstützung für OpenAI-Modelle. Weitere Details zur Cortex REST API finden Sie unter Cortex REST API.
Erste Schritte mit dem OpenAI SDK¶
Wichtig
Stellen Sie sicher, dass Sie eine offizielle Version von OpenAI SDK verwenden, wie in der `OpenAI Bibliotheksdokumentation<https://platform.openai.com/docs/libraries>`_ angegeben, z. B. in einer der folgenden Sprachen:
Python
TypeScript/JavaScript
Um zu beginnen, benötigen Sie:
Ihre Snowflake-Konto-URL. Diese wird verwendet, um die Basis-URL für den OpenAI-Client zu erstellen.
Ein programmgesteuertes Snowflake Zugriffstoken (PAT). Dies wird für die Authentifizierung bei den Cortex Chat Completions API verwendet. Weitere Informationen zum Erstellen eines PAT-Objekts finden Sie unter Generierung eines programmatischen Zugriffstokens.
Ein gültiger Modellname, der in der Anforderung verwendet werden soll. Eine Liste der unterstützten Modelle finden Sie unter Verfügbarkeit der Modelle.
Einfache Code-Beispiele¶
Die folgenden Beispiele zeigen, wie Sie Anforderungen an die OpenAI SDKs mit Python, JavaScript/TypeScript und curl stellen.
Verwenden Sie den folgenden Code, um den Einstieg in die Arbeit mit der Python SDK zu erleichtern:
from openai import OpenAI
client = OpenAI(
api_key="<SNOWFLAKE_PAT>",
base_url="https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1"
)
response = client.chat.completions.create(
model="<model_name>",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "How does a snowflake get its unique pattern?"
}
]
)
print(response.choices[0].message)
Geben Sie im obigen Code Werte für Folgendes an:
base_url: Ersetzen Sie<account-identifier>durch Ihren Snowflake-Kontobezeichner.api_key: Ersetzen Sie<SNOWFLAKE_PAT>durch Ihren Snowflake PAT (programmgesteuertes Zugriffstoken).model: Ersetzen Sie<model_name>durch den Namen des Modells, das Sie verwenden möchten. Eine Liste der unterstützten Modelle finden Sie unter Verfügbarkeit der Modelle.
Verwenden Sie den folgenden Code, um den Einstieg in JavaScript/TypeScript SDK zu erleichtern:
import OpenAI from "openai";
const openai = new OpenAI({
apikey="SNOWFLAKE_PAT",
baseURL: "https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1"
});
const response = await openai.chat.completions.create({
model: "claude-3-7-sonnet",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{
role: "user",
content: "How does a snowflake get its unique pattern?",
},
],
});
console.log(response.choices[0].message);
Geben Sie im obigen Code Werte für Folgendes an:
baseURL: Ersetzen Sie<account-identifier>durch Ihren Snowflake-Kontobezeichner.apikey: Ersetzen SieSNOWFLAKE_PATdurch Ihren Snowflake Personal Access Token (PAT).model: Ersetzen Sie<model_name>durch den Namen des Modells, das Sie verwenden möchten. Eine Liste der unterstützten Modelle finden Sie unter Verfügbarkeit der Modelle.
Verwenden Sie den folgenden curl-Befehl, um eine Anfrage an das Snowflake-gehostete Modell zu stellen:
curl "https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <SNOWFLAKE_PAT>" \
-d '{
"model": "<model_name>",
"messages": [
{"role": "user", "content": "How does a snowflake get its unique pattern?"}
]
}'
Geben Sie im obigen Code Werte für Folgendes an:
<account-identifier>: Ersetzen Sie<account-identifier>durch Ihren Snowflake-Kontobezeichner.<SNOWFLAKE_PAT>: Ersetzen Sie<SNOWFLAKE_PAT>durch Ihren Snowflake Personal Access Token (PAT).<model_name>: Ersetzen Sie<model_name>durch den Namen des Modells, das Sie verwenden möchten. Eine Liste der unterstützten Modelle finden Sie unter Verfügbarkeit der Modelle.
Antworten streamen¶
Sie können Antworten von der REST API durch Einstellen des Parameters stream auf True in der Anforderung streamen.
Der folgende Python-Code streamt eine Antwort von der REST API:
from openai import OpenAI
client = OpenAI(
api_key="<SNOWFLAKE_PAT>",
base_url="https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1"
)
response = client.chat.completions.create(
model="<model_name>",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "How does a snowflake get its unique pattern?"
}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content, end="", flush=True)
Der folgende JavaScript/TypeScript-Code streamt eine Antwort von der REST API:
import OpenAI from "openai";
const openai = new OpenAI({
apikey="SNOWFLAKE_PAT",
baseURL: "https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1"
});
const stream = await openai.chat.completions.create({
model: "<model_name>",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{
role: "user",
content: "How does a snowflake get its unique pattern?",
}
],
stream:true,
});
for await (const event of stream) {
console.log(event);
}
Der folgende curl-Befehl streamt eine Antwort von dem in Snowflake gehosteten Modell:
curl "https://<account-identifier>.snowflakecomputing.com/api/v2/cortex/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SNOWFLAKE_PAT" \
-d '{
"model": "<model_name>",
"messages": [
{"role": "user", "content": "How does a snowflake get its unique pattern?"}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'
Einschränkungen¶
Im Folgenden finden Sie Einschränkungen bei der Verwendung der OpenAI SDK mit von Snowflake gehosteten Modellen:
Es werden nur Chat Completions unterstützt.
Wenn nicht gesetzt, ist der
max_completion_tokensStandardwert 4096. Das theoretische Maximum für die Cortex Chat Completions API ist 131.072. Jedes Modell hat seine eigenen Grenzwerte für Ausgabetoken, die unter 131.072 liegen können.Der Toolaufruf wird für OpenAI- und Claude-Modelle unterstützt. Ein Beispiel für die effektive Nutzung des Tool-Aufrufs finden Sie unter Tool-Aufruf mit Beispiel einer Gedankenkette.
Audio wird nicht unterstützt.
Bildverstehen wird nur für OpenAI- und Claude-Modelle unterstützt. Pro Konversation begrenzt auf 20 Bilder mit max. Anforderungsgröße von 20 MiB.
Nur Claude-Modelle unterstützen kurzlebige Cache-Kontrollpunkte für das Caching von Eingabeaufforderungen. OpenAI-Modelle unterstützen implizites Caching.
Nur Claude-Modelle unterstützen die Rückgabe des Reasonings in der Antwort.
Fehlermeldungen werden von Snowflake und nicht von OpenAI generiert. Es wird empfohlen, gemeldete Fehler nur zu Protokollierungs- und Debugging-Zwecken zu verwenden.
Detaillierte Kompatibilitätstabelle¶
Die folgenden Tabellen fassen zusammen, welche Felder und Header für Anfragen und Antworten bei Verwendung der Cortex Chat Completions API mit verschiedenen von Snowflake gehosteten Modellen unterstützt werden.
Feld |
OpenAI-Modelle |
Claude-Modelle |
Andere Modelle |
|---|---|---|---|
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
❌-Fehler |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
✔ Nur Benutzer/Assistent/System |
✔ Nur Benutzer/Assistent/System |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
❌-Fehler |
|
❌ Ignoriert |
✔ unterstützt (nur ephemere) |
❌ Ignoriert |
|
❌-Fehler |
❌-Fehler |
❌ Ignoriert |
|
❌-Fehler |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt (veraltet) |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
✔ unterstützt |
❌ Ignoriert |
|
✔ unterstützt |
✔ nur |
❌ Ignoriert |
|
❌ Ignoriert |
✔ OpenRouter-Format |
❌ Ignoriert |
|
❌-Fehler |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
❌ Fehler (veraltet) |
❌ Fehler (veraltet) |
❌ Fehler (veraltet) |
|
✔ unterstützt (Standardeinstellung 4096, max. 131072) |
✔ unterstützt (Standardeinstellung 4096, max. 131072) |
✔ unterstützt (Standardeinstellung 4096, max. 131072) |
|
❌ Ignoriert |
❌ Ignoriert |
❌ Ignoriert |
|
❌ Ignoriert |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
❌ ignoriert (verwenden Sie das |
❌ Ignoriert |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt (überschreibt |
✔ wird in |
❌ Ignoriert |
|
❌ Ignoriert |
✔ unterstützt |
❌ Ignoriert |
|
✔ unterstützt |
✔ Only |
❌ Ignoriert |
|
❌ Ignoriert |
❌ Ignoriert |
❌ Ignoriert |
|
❌-Fehler |
❌-Fehler |
❌-Fehler |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
❌-Fehler |
❌-Fehler |
❌-Fehler |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
❌ Ignoriert |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ nur |
❌ Ignoriert |
|
✔ unterstützt |
✔ nur |
❌-Fehler |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
❌ Ignoriert |
❌ Ignoriert |
|
❌-Fehler |
❌ Ignoriert |
❌ Ignoriert |
Feld |
OpenAI-Modelle |
Claude-Modelle |
Andere Modelle |
|---|---|---|---|
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
✔ nur einfache Auswahl |
✔ nur einfache Auswahl |
|
✔ unterstützt |
❌ nicht unterstützt |
✔ nur |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
❌ nicht unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
❌ nicht unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
✔ nur |
❌ nicht unterstützt |
|
❌ nicht unterstützt |
✔ OpenRouter-Format |
❌ nicht unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
✔ nur |
❌ nicht unterstützt |
|
❌ nicht unterstützt |
✔ OpenRouter-Format |
❌ nicht unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
✔ unterstützt |
✔ unterstützt |
✔ unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
❌ nicht unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ Nur Lesecache |
✔ Lese- und Schreibcache |
❌ nicht unterstützt |
|
Siehe Unterfelder |
Siehe Unterfelder |
Siehe Unterfelder |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
❌ nicht unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
|
✔ unterstützt |
❌ nicht unterstützt |
❌ nicht unterstützt |
Header |
Unterstützung |
|---|---|
|
✔ erforderlich |
|
✔ unterstützt ( |
|
✔ unterstützt ( |
Header |
Unterstützung |
|---|---|
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
|
❌ nicht unterstützt |
Mehr erfahren¶
Eine vollständige Sammlung von Anwendungsbeispielen erhalten Sie unter OpenAI Chat Completion API-Referenz oder OpenAI Cookbook.
Zusätzlich zur Kompatibilität mit der Chat Completions API unterstützt Snowflake OpenRouter-kompatible Features für Claude-Modelle. Diese Features werden als zusätzliche Felder auf der Anforderung angezeigt.
Verwenden Sie für das Zwischenspeichern von Eingabeaufforderungen das Feld
cache_control. Siehe OpenRouter-Dokumentation zu Caching von Eingabeaufforderungen für weitere Informationen.Verwenden Sie für Reasoning-Token das Feld
reasoning. Siehe OpenRouter-Dokumentation zum Reasoning für weitere Informationen.