Cortex Analyst¶
Übersicht¶
Cortex Analyst ist ein vollständig verwaltetes, LLM-gestütztes Snowflake Cortex Feature, mit dem Sie Anwendungen erstellen können, die in der Lage sind, Geschäftsfragen auf der Grundlage Ihrer strukturierten Daten in Snowflake zuverlässig zu beantworten. Mit Cortex Analyst können geschäftliche Benutzer Fragen in natürlicher Sprache stellen und erhalten direkte Antworten, ohne SQL schreiben zu müssen. Erhältlich als praktische REST API, kann Cortex Analyst nahtlos in jede Anwendung integriert werden.
Die Entwicklung einer produktionsreifen, dialogorientierten Self-Service-Analyselösung erfordert einen Dienst, der präzise Text-zu-SQL-Antworten generiert. Für die meisten Teams ist die Entwicklung eines solchen Dienstes, der Präzision, Latenzzeit und Kosten in Einklang bringt, eine gewaltige Aufgabe. Cortex Analyst vereinfacht diesen Prozess, indem ein vollständig verwaltetes, anspruchsvolles agentenbasiertes AI-System bereitgestellt wird, das all diese Komplexitäten bewältigt und hochpräzise Text-zu-SQL-Antworten erzeugt. Es hilft Ihnen, die Bereitstellung hochpräziser, selbstbedienbarer Konversationsanalysen für Geschäftsteams zu beschleunigen und gleichzeitig Zeitfresser wie komplexe RAG-Lösungsmuster, Modellexperimente und GPU-Kapazitätsplanung zu vermeiden. Die generierten SQL-Abfragen werden mit der skalierbaren Snowflake-Engine ausgeführt, die eine branchenführende Leistung und niedrigere Gesamtbetriebskosten (TCO) gewährleistet.
Tipp
Möchten Sie schnell mit Cortex Analyst loslegen? Probieren Sie das Tutorial Tutorial: Beantworten Sie Fragen zu Zeitserienumsatzdaten mit Cortex Analyst aus.
Wichtige Features¶
Selbstbedienungsanalysen über Abfragen in natürlicher Sprache Begeistern Sie Ihre Geschäftsteams und technisch nicht versierten Benutzer mit sofortigen Antworten und Einblicken aus ihren strukturierten Daten in Snowflake. Mit Cortex Analyst können Sie nachgelagerte Chat-Anwendungen erstellen, die es Ihren Benutzern ermöglichen, Fragen in natürlicher Sprache zu stellen und sofort präzise Antworten zu erhalten.
Praktische REST-API für die Integration in bestehende Geschäftsabläufe. Cortex Analyst verfolgt einen API-First-Ansatz, der Ihnen die volle Kontrolle über das Endnutzererlebnis gibt. Integrieren Sie Cortex Analyst ganz einfach in bestehende Tools und Plattformen und bringen Sie die Leistungsfähigkeit von Erkenntnissen aus Dateien dorthin, wo Benutzer bereits arbeiten, z. B. in Streamlit-Apps, Slack, Teams, benutzerdefinierte Weboberflächen und mehr.
Unterstützt von hochmodernen großen Sprachmodellen (Large Language Models): Standardmäßig wird Cortex Analyst von den neuesten Meta Llama- und Mistral-Modellen unterstützt, die sicher innerhalb von Snowflake Cortex ausgeführt werden, dem intelligenten, vollständig verwalteten AI-Dienst von Snowflake. Optional können Sie Cortex Analyst auch Zugriff auf die neuesten in Azure gehosteten OpenAI GPT-Modelle geben. Zur Laufzeit wählt Cortex Analyst die beste Kombination von Modellen aus, um für jede Abfrage die höchste Genauigkeit und Leistung zu gewährleisten. Weitere Details dazu finden Sie unter Ermöglichung der Nutzung von Azure OpenAI-Modellen. Im Zuge der Weiterentwicklung von LLMs wird Snowflake weitere Modelle hinzufügen, um Leistung und Genauigkeit weiter zu verbessern.
Semantisches Modell für hohe Präzision und Genauigkeit: Generische AI-Lösungen haben oft Probleme mit der Konvertierung von Text in SQL, wenn nur ein Datenbankschema vorliegt, da den Schemas kritisches Wissen wie Geschäftsprozessdefinitionen und die Handhabung von Metriken fehlt. Cortex Analyst überwindet diese Beschränkung durch die Verwendung eines semantischen Modells, das die Lücke zwischen Benutzern und Datenbanken schließt. Die Gesamtstruktur und die Konzepte des semantischen Modells, das in einer einfachen YAML-Datei gespeichert ist, ähneln denen von Datenbankschemas, ermöglichen jedoch eine umfassendere Beschreibung der semantischen Informationen rund um die Daten.
Sicherheit und Governance. Das datenschutzfreundliches Fundament von Snowflake und unternehmensweite Sicherheit sorgen dafür, stellen sicher, dass Sie AI-gesteuerte Anwendungsfälle mit der Gewissheit erkunden kann, dass Ihre Daten durch die höchsten Standards in Bezug auf Datenschutz und Governance geschützt sind.
Cortex Analyst trainiert nicht mit Kundendaten. Wir verwenden Ihre Kundendaten nicht, um ein Modell zu trainieren oder zu optimieren, das für die Nutzung durch unseren gesamten Kundenstamm zur Verfügung gestellt werden soll. Darüber hinaus verwendet Cortex Analyst die in der Datei des semantischen Modells YAML enthaltenen Metadaten (z. B. Tabellennamen, Spaltennamen, Wertetyp, Beschreibungen usw.) nur für die Generierung von SQL-Abfragen. Diese SQL-Abfrage wird dann in Ihrem virtuellen Snowflake-Warehouse ausgeführt, um die endgültige Ausgabe zu generieren.
Die Daten bleiben innerhalb der Snowflake Governance-Grenzen. Standardmäßig wird Cortex Analyst durch die in Snowflake gehosteten LLMs von Mistral und Meta betrieben, wodurch sichergestellt wird, dass keine Daten, einschließlich Metadaten oder Eingabeaufforderungen, die Governance-Grenze von Snowflake verlassen. Wenn Sie sich für die Verwendung von Azure OpenAI-Modellen entscheiden, werden nur Metadaten und Eingabeaufforderungen außerhalb der Governance-Grenze von Snowflake übertragen.
Nahtlose Integration mit den Datenschutz- und Governance-Features von Snowflake. Cortex Analyst ist vollständig mit den Snowflake-Richtlinien zur rollenbasierten Zugriffssteuerung (RBAC) integriert und stellt sicher, dass die generierten und ausgeführten SQL-Abfragen alle festgelegten Zugriffssteuerungen einhalten. Dies garantiert eine robuste Sicherheit und Governance für Ihre Daten.
Anforderungen an die Zugriffssteuerung¶
Um Cortex Analyst mit einem semantischen Modell zu verwenden, benötigen Sie die folgenden Berechtigungen:
Berechtigung |
Objekt |
---|---|
USAGE |
Stagingbereich, der die Datei des semantischen YAML-Modells enthält, wenn das semantische Modell in einen Stagingbereich hochgeladen wird. |
SELECT |
Die im semantischen Modell definierten Tabellen |
Anfragen an die Cortex Analyst API müssen Authentifizierungsinformationen enthalten. Das Beispiel in diesem Thema verwendet ein Sitzungstoken, um sich bei einem Snowflake-Konto zu authentifizieren.
Regionsverfügbarkeit¶
Cortex Analyst ist in den folgenden Regionen nativ verfügbar.
AWS ap-northeast-1 (Tokio)
AWS ap-southeast-2 (Sydney)
AWS us-ost-1 (Virginia)
AWS us-west-2 (Oregon)
AWS eu-central-1 (Frankfurt)
AWS eu-west-1 (Irland)
East US 2 (Virginia)
West Europe (Niederlande)
Wenn sich Ihr Snowflake Konto in einer anderen Cloudregion befindet, können Sie Cortex Analyst trotzdem nutzen, indem Sie Regionenübergreifende Inferenz verwenden. Sobald die regionsübergreifende Inferenz aktiviert ist, verarbeitet Cortex Analyst Anfragen in anderen Regionen nach Modellen, die in Ihrer Standardregion nicht verfügbar sind. Für optimale Leistung konfigurieren Sie regionsübergreifend mit AWS US-Regionen.
Bemerkung
Wenn Sie sich für die Verwendung von Azure OpenAI-Modellen entscheiden, ist Cortex Analyst für die Verwendung in allen AWS-, Azure- und GCP-Regionen verfügbar, mit Ausnahme von Gov- und VPS-Implementierungen.
Bekannte Probleme und Beschränkungen¶
Wenn Sie eine YAML-Datei mit einem semantischen Modell in einen Stagingbereich hochladen, wird der Zugriff auf dieses semantische Modell durch den Zugriff auf den Stagingbereich gesteuert, in den es hochgeladen wurde. Das bedeutet, dass jede Rolle mit Zugriff auf den Stagingbereich auf die semantischen Modelle in diesem Stagingbereich zugreifen kann, auch wenn die Rolle keinen Zugriff auf die zugrunde liegenden Tabellen hat.
Verknüpfungen werden im semantischen Modell nicht direkt unterstützt. Verwenden Sie stattdessen Ansichten, die bereits verknüpfte Daten enthalten.
Standardmäßig ist Cortex Analyst auf 20 Anfragen pro Minute beschränkt, was für einen „Proof of Concept“ ausreichen sollte. Wenden Sie sich an Ihren Vertriebsingenieur, um ein höheres Limit zu beantragen.
Ermöglichung der Nutzung von Azure OpenAI-Modellen¶
Standardmäßig wird Cortex Analyst von Snowflake-gehosteten Cortex-LLMs unterstützt. Sie können sich jedoch explizit dafür entscheiden, Cortex Analyst zu erlauben, neben den von Snowflake gehosteten Modellen auch die neuesten OpenAI GPT-Modelle zu verwenden, die von Microsoft Azure gehostet werden. Während der Laufzeit wählt Cortex Analyst die optimale Kombination von Modellen aus, um die höchste Genauigkeit und Leistung für jede Abfrage zu gewährleisten.
Mit dem Parameter ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI können Sie Ihr Konto so konfigurieren, dass es die Verwendung der Azure OpenAI GPT-Modelle erlaubt. Standardmäßig ist der Parameter deaktiviert und kann nur von der Rolle ACCOUNTADMIN mit dem Befehl ALTER ACCOUNT festgelegt werden:
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI = TRUE;
Tipp
Um den aktuellen Wert dieses Parameters zu sehen, verwenden Sie die folgende SQL-Anweisung.
SHOW PARAMETERS LIKE 'ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI' IN ACCOUNT
Weitere Details dazu finden Sie unter ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI.
Wenn dieser Parameter aktiviert ist, kann Cortex Analyst durch eine beliebige Kombination von Folgendem unterstützt werden:
Snowflake-gehostete Modelle, derzeit die Modelle Mistral Large und Llama3
Azure OpenAI-Modelle, derzeit GPT-4o (erfordert explizites Opt-in)
Bemerkung
Cortex Analyst könnte in Zukunft andere Modelle verwenden, um Leistung und Genauigkeit weiter zu verbessern.
Hinweise¶
Semantische Modelldateien werden als Metadaten klassifiziert. Wenn Sie sich für die Verwendung von Azure OpenAI-Modellen in Cortex Analyst entscheiden, wird Ihr semantisches Modell von Microsoft Azure, einem Drittanbieter, verarbeitet. Kundendaten werden jedoch nicht an Azure weitergegeben oder von Azure verarbeitet.
ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI¶
Die ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI Kontoparameter ermöglichen, wenn TRUE, Cortex Analyst die Verwendung von Azure OpenAI-Modellen.
Parametertyp |
Sitzung |
---|---|
Datentyp |
BOOLEAN |
Beschreibung |
Steuert, ob Cortex Analyst Azure OpenAI-Modelle zur Verarbeitung von Anfragen verwenden kann. |
Werte |
|
Standard |
FALSE |
Cortex Analyst-Beispiel¶
Folgen Sie diesen Schritten, um ein interaktives Streamlit in Snowflake (SiS) oder eine eigenständige Streamlit-App zu erstellen, die Cortex Analyst verwendet.
Erstellen und Ausführen einer Streamlit-in-Snowflake-App
Ein semantisches Modell erstellen¶
Das semantische Modell ist ein einfacher Mechanismus, der Probleme im Zusammenhang mit dem Sprachunterschied zwischen Geschäftsanwendern und Datenbankdefinitionen löst, indem er die Angabe zusätzlicher semantischer Details zu einem Datenset ermöglicht. Diese zusätzlichen semantischen Details, wie aussagekräftigere Namen oder Synonyme, ermöglichen es Cortex Analyst, Datenfragen viel zuverlässiger zu beantworten.
Beginnen Sie mit einer Liste von Fragen, die Sie von Cortex Analyst beantwortet haben möchten. Entscheiden Sie sich auf dieser Grundlage für das Datenset für Ihr semantisches Modell.
Erstellen Sie Ihr semantisches Modell YAML auf der Grundlage der Spezifikation. Probieren Sie den Generator für semantische Modelle aus. Beachten Sie auch die Tipps für Erstellung eines semantischen Modells.
Semantisches Modell hochladen¶
Sie können eine YAML-Datei mit semantischem Modell in einen Stagingbereich hochladen oder das semantische Modell YAML als Zeichenfolge im Body der Anfrage übergeben. Wenn Sie ein semantisches Modell im YAML Format in einen Stagingbereich hochladen, wird der Zugriff auf dieses semantische Modell durch den Zugriff auf den Stagingbereich kontrolliert, in den es hochgeladen wurde. Das bedeutet, dass jede Rolle mit Zugriff auf den Stagingbereich auf die semantischen Modelle in diesem Stagingbereich zugreifen kann, auch wenn die Rolle keinen Zugriff auf die Tabellen hat, auf denen die Modelle basieren. Stellen Sie sicher, dass Rollen, denen Zugriff auf einen Stagingbereich gewährt wurde, SELECT-Zugriff auf alle Tabellen haben, auf die in allen semantischen Modellen in diesem Stagingbereich verwiesen wird.
Im Folgenden sehen Sie ein Beispiel für das Setup der Stagingbereiche, die die semantischen Modelle enthalten. Ein Stagingbereich (public
) ist für alle Mitglieder der Organisation zugänglich, während ein anderer Stagingbereich (sales
) nur für die Rolle sales_analyst
zugänglich ist.
Erstellen Sie die Datenbank und das Schema für den Stagingbereich. Das folgende Beispiel erstellt eine Datenbank mit dem Namen semantic_model
und einem Schema mit dem Namen definition
. Sie können jedoch jede gültige Zeichenfolge für diese Namen verwenden.
CREATE DATABASE semantic_model;
CREATE SCHEMA semantic_model.definitions;
GRANT USAGE ON DATABASE semantic_model TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA semantic_model.definitions TO ROLE PUBLIC;
USE SCHEMA semantic_model.definitions;
Erstellen Sie dann die Stagingbereiche für die Speicherung Ihrer semantischen Modelle:
CREATE STAGE public DIRECTORY = (ENABLE = TRUE);
GRANT READ ON STAGE public TO ROLE PUBLIC;
CREATE STAGE sales DIRECTORY = (ENABLE = TRUE);
GRANT READ ON STAGE sales TO ROLE sales_analyst;
Datenbank Wenn Sie Snowsight verwenden, können Sie die Seite aktualisieren und die neu erstellten Stagingbereiche im Datenbank-Objekt-Explorer finden. Sie können die Seite „Stagingbereich“ in einer neuen Registerkarte öffnen und Ihre YAML-Dateien in Snowsight hochladen.
Alternativ können Sie auch den Snowflake-CLI-Client verwenden, um von Ihrem lokalen Dateisystem hochzuladen.
snow stage copy file:///path/to/local/file.yaml @sales
Erstellen einer Streamlit-in-Snowflake-App¶
In diesem Beispiel wird gezeigt, wie Sie in Snowflake eine Streamlit-App erstellen, die eine Frage in natürlicher Sprache als Eingabe nimmt und Cortex Analyst aufruft, um eine Antwort auf der Grundlage des von Ihnen bereitgestellten semantischen Modells zu generieren.
Weitere Informationen zum Erstellen und Ausführen von Streamlit-Anwendungen in Snowflake finden Sie unter Allgemeine Informationen zu Streamlit in Snowflake.
Folgen Sie den Anweisungen in Erstellen einer Streamlit-App mithilfe von Snowsight, um eine neue Streamlit-App in Snowsight zu erstellen.
Kopieren Sie den Streamlit-Code unten in den Code-Editor.
Ersetzen Sie die Platzhalterwerte durch Ihre Kontodaten.
Um eine Vorschau der App anzuzeigen, wählen Sie Run aus, um den Inhalt im Streamlit-Vorschaufenster zu aktualisieren.
from typing import Dict, List, Optional
import _snowflake
import json
import streamlit as st
import time
from snowflake.snowpark.context import get_active_session
DATABASE = "SNOWFLAKE_SEMANTIC_CONTEXT"
SCHEMA = "DEFINITIONS"
STAGE = "PUBLIC"
FILE = "revenue_timeseries.yaml"
def send_message(prompt: str) -> dict:
"""Calls the REST API and returns the response."""
request_body = {
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt
}
]
}
],
"semantic_model_file": f"@{DATABASE}.{SCHEMA}.{STAGE}/{FILE}",
}
resp = _snowflake.send_snow_api_request(
"POST",
f"/api/v2/cortex/analyst/message",
{},
{},
request_body,
{},
30000,
)
if resp["status"] < 400:
return json.loads(resp["content"])
else:
st.session_state.messages.pop()
raise Exception(
f"Failed request with status {resp['status']}: {resp}"
)
def process_message(prompt: str) -> None:
"""Processes a message and adds the response to the chat."""
st.session_state.messages.append(
{"role": "user", "content": [{"type": "text", "text": prompt}]}
)
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
with st.spinner("Generating response..."):
response = send_message(prompt=prompt)
request_id = response["request_id"]
content = response["message"]["content"]
st.session_state.messages.append(
{**response['message'], "request_id": request_id}
)
display_content(content=content, request_id=request_id) # type: ignore[arg-type]
def display_content(
content: List[Dict[str, str]],
request_id: Optional[str] = None,
message_index: Optional[int] = None,
) -> None:
"""Displays a content item for a message."""
message_index = message_index or len(st.session_state.messages)
if request_id:
with st.expander("Request ID", expanded=False):
st.markdown(request_id)
for item in content:
if item["type"] == "text":
st.markdown(item["text"])
elif item["type"] == "suggestions":
with st.expander("Suggestions", expanded=True):
for suggestion_index, suggestion in enumerate(item["suggestions"]):
if st.button(suggestion, key=f"{message_index}_{suggestion_index}"):
st.session_state.active_suggestion = suggestion
elif item["type"] == "sql":
display_sql(item["statement"])
@st.cache_data
def display_sql(sql: str) -> None:
with st.expander("SQL Query", expanded=False):
st.code(sql, language="sql")
with st.expander("Results", expanded=True):
with st.spinner("Running SQL..."):
session = get_active_session()
df = session.sql(sql).to_pandas()
if len(df.index) > 1:
data_tab, line_tab, bar_tab = st.tabs(
["Data", "Line Chart", "Bar Chart"]
)
data_tab.dataframe(df)
if len(df.columns) > 1:
df = df.set_index(df.columns[0])
with line_tab:
st.line_chart(df)
with bar_tab:
st.bar_chart(df)
else:
st.dataframe(df)
def show_conversation_history() -> None:
for message_index, message in enumerate(st.session_state.messages):
chat_role = "assistant" if message["role"] == "analyst" else "user"
with st.chat_message(chat_role):
display_content(
content=message["content"],
request_id=message.get("request_id"),
message_index=message_index,
)
def reset() -> None:
st.session_state.messages = []
st.session_state.suggestions = []
st.session_state.active_suggestion = None
st.title("Cortex analyst")
st.markdown(f"Semantic Model: `{FILE}`")
if "messages" not in st.session_state:
reset()
with st.sidebar:
if st.button("Reset conversation"):
reset()
show_conversation_history()
if user_input := st.chat_input("What is your question?"):
process_message(prompt=user_input)
if st.session_state.active_suggestion:
process_message(prompt=st.session_state.active_suggestion)
st.session_state.active_suggestion = None
Interaktion mit der Streamlit App¶
Navigieren Sie zur Streamlit-App in Ihrem Browser oder zum Vorschaubereich von Streamlit in Snowflake.
Stellen Sie Fragen zu Ihren Daten in natürlicher Sprache (z. B. „Welche Fragen kann ich stellen?“).
Eigenständige Streamlit-App erstellen¶
Sie können den obigen Beispielcode auch verwenden, um eine eigenständige Anwendung zu erstellen.
Installieren Sie Streamlit.
Erstellen Sie lokal eine Python-Datei mit dem Namen
analyst_api.py
.Kopieren Sie den folgenden Streamlit-Code in die Datei.
Ersetzen Sie die Platzhalterwerte durch Ihre Kontodaten.
Führen Sie die Streamlit-App mit
streamlit run analyst_api.py
aus.
Die Datenbank und das Schema, die im folgenden Code angegeben sind, sind der Speicherort für die Stagingdatei des semantischen Modells im YAML-Format. Die im Snowflake Connector verwendete Rolle sollte Zugriff auf die zugrunde liegenden Daten haben, die im semantischen Modell definiert sind.
from typing import Any, Dict, List, Optional
import pandas as pd
import requests
import snowflake.connector
import streamlit as st
HOST = "<host>"
DATABASE = "<database>"
SCHEMA = "<schema>"
STAGE = "<stage>"
FILE = "<file>"
if 'CONN' not in st.session_state or st.session_state.CONN is None:
st.session_state.CONN = snowflake.connector.connect(
user="<user>",
password="<password>",
account="<account>",
host=HOST,
port=443,
warehouse="<warehouse>",
role="<role>",
)
def send_message(prompt: str) -> Dict[str, Any]:
"""Calls the REST API and returns the response."""
request_body = {
"messages": [{"role": "user", "content": [{"type": "text", "text": prompt}]}],
"semantic_model_file": f"@{DATABASE}.{SCHEMA}.{STAGE}/{FILE}",
}
resp = requests.post(
url=f"https://{HOST}/api/v2/cortex/analyst/message",
json=request_body,
headers={
"Authorization": f'Snowflake Token="{st.session_state.CONN.rest.token}"',
"Content-Type": "application/json",
},
)
request_id = resp.headers.get("X-Snowflake-Request-Id")
if resp.status_code < 400:
return {**resp.json(), "request_id": request_id} # type: ignore[arg-type]
else:
st.session_state.messages.pop()
raise Exception(
f"Failed request (id: {request_id}) with status {resp.status_code}: {resp.text}"
)
def process_message(prompt: str) -> None:
"""Processes a message and adds the response to the chat."""
st.session_state.messages.append(
{"role": "user", "content": [{"type": "text", "text": prompt}]}
)
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
with st.spinner("Generating response..."):
response = send_message(prompt=prompt)
request_id = response["request_id"]
content = response["message"]["content"]
st.session_state.messages.append(
{**response['message'], "request_id": request_id}
)
display_content(content=content, request_id=request_id) # type: ignore[arg-type]
def display_content(
content: List[Dict[str, str]],
request_id: Optional[str] = None,
message_index: Optional[int] = None,
) -> None:
"""Displays a content item for a message."""
message_index = message_index or len(st.session_state.messages)
if request_id:
with st.expander("Request ID", expanded=False):
st.markdown(request_id)
for item in content:
if item["type"] == "text":
st.markdown(item["text"])
elif item["type"] == "suggestions":
with st.expander("Suggestions", expanded=True):
for suggestion_index, suggestion in enumerate(item["suggestions"]):
if st.button(suggestion, key=f"{message_index}_{suggestion_index}"):
st.session_state.active_suggestion = suggestion
elif item["type"] == "sql":
display_sql(item["statement"])
@st.cache_data
def display_sql(sql: str) -> None:
with st.expander("SQL Query", expanded=False):
st.code(sql, language="sql")
with st.expander("Results", expanded=True):
with st.spinner("Running SQL..."):
df = pd.read_sql(sql, st.session_state.CONN)
if len(df.index) > 1:
data_tab, line_tab, bar_tab = st.tabs(
["Data", "Line Chart", "Bar Chart"]
)
data_tab.dataframe(df)
if len(df.columns) > 1:
df = df.set_index(df.columns[0])
with line_tab:
st.line_chart(df)
with bar_tab:
st.bar_chart(df)
else:
st.dataframe(df)
def show_conversation_history() -> None:
for message_index, message in enumerate(st.session_state.messages):
chat_role = "assistant" if message["role"] == "analyst" else "user"
with st.chat_message(chat_role):
display_content(
content=message["content"],
request_id=message.get("request_id"),
message_index=message_index,
)
def reset() -> None:
st.session_state.messages = []
st.session_state.suggestions = []
st.session_state.active_suggestion = None
st.title("Cortex analyst")
st.markdown(f"Semantic Model: `{FILE}`")
if "messages" not in st.session_state:
reset()
with st.sidebar:
if st.button("Reset conversation"):
reset()
show_conversation_history()
if user_input := st.chat_input("What is your question?"):
process_message(prompt=user_input)
if st.session_state.active_suggestion:
process_message(prompt=st.session_state.active_suggestion)
st.session_state.active_suggestion = None
Cortex Analyst-Funktionalität deaktivieren¶
Wenn Sie nicht möchten, dass Cortex Analyst in Ihrem Konto verfügbar ist, deaktivieren Sie das Feature, indem Sie den Parameter ENABLE_CORTEX_ANALYST über die Rolle ACCOUNTADMIN ändern:
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST = FALSE;
Parametertyp |
Sitzung |
---|---|
Datentyp |
BOOLEAN |
Beschreibung |
Steuert, ob die Funktion Cortex Analyst in Ihrem Konto aktiviert ist. |
Werte |
|
Standard |
TRUE |
Hinweise zu Kosten¶
Cortex Analyst ist bis zum 15. November 2024 kostenlos. Weitere Informationen zu Preisen und Abrechnung werden in Kürze verfügbar sein.
Rechtliche Hinweise¶
Cortex Analyst basiert auf Technologien des maschinellen Lernens, darunter die Modelle Llama 3 und Mistral Large von Meta. Die zugrunde liegenden Llama 3-Modelle sind lizenziert unter der Llama 3 Community License und Copyright (c) Meta Platforms, Inc. Alle Rechte vorbehalten. Die Nutzung dieses Features unterliegt der Acceptable Use Policy von Meta.
Die Datenklassifizierung der Eingaben und Ausgaben ist in der folgenden Tabelle aufgeführt.
Klassifizierung von Eingabedaten |
Klassifizierung von Ausgabedaten |
Benennung |
---|---|---|
Usage Data |
Usage Data |
Preview AI Features [1] |
Weitere Informationen dazu finden Sie unter KI und ML in Snowflake.