Auf dieser Seite werden Parameter für verschiedene Funktionen aufgeführt, die von Cloud SQL zum Registrieren und Verwalten von Modellendpunkten bereitgestellt werden. Auf der Seite sind auch die Secrets aufgeführt, die Sie mit der Verwaltung von Modellendpunkten verwalten können.
Modelle
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Modellendpunkte verwalten können.
mysql.ml_create_model_registration()
Im Folgenden wird gezeigt, wie Sie mit der Funktion mysql.ml_create_model_registration()
Metadaten für den Modellendpunkt registrieren:
CALL
mysql.ml_create_model_registration(
'MODEL_ID',
'REQUEST_URL',
'PROVIDER_ID',
'MODEL_TYPE',
'MODEL_QUALIFIED_NAME',
'AUTH_TYPE',
'AUTH_ID',
'GENERATE_HEADER_FUNCTION',
'INPUT_TRANSFORM_FUNCTION',
'OUTPUT_TRANSFORM_FUNCTION');
Parameter | Erforderlich | Beschreibung |
---|---|---|
MODEL_ID |
Für alle Modellendpunkte erforderlich | Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
REQUEST_URL |
Kann für Vertex AI-Modelle NULL sein | Der modellspezifische Endpunkt beim Hinzufügen anderer Endpunkte für Texteinbettung und generische Modelle. Die Anfrage-URL, die die Funktion für integrierte Modellendpunkte generiert, bezieht sich auf das Projekt und die Region oder den Standort Ihres Clusters. Wenn Sie auf ein anderes Projekt verweisen möchten, müssen Sie Bei benutzerdefinierten gehosteten Modellendpunkten muss der Modellendpunkt über das Internet zugänglich sein. |
PROVIDER_ID |
Erforderlich für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung | Der Anbieter des Modellendpunkts. Der Standardwert ist custom . Legen Sie für Cloud SQL den Anbieter auf google für Vertex AI-Modellendpunkte, open_ai für OpenAI-Modellendpunkte, anthropic für Anthropic-Modellendpunkte, hugging_face für Hugging Face-Modellendpunkte oder custom für benutzerdefinierte gehostete Modellendpunkte fest. |
MODEL_TYPE |
Kann für generische Modellendpunkte NULL sein | Der Modelltyp. Sie können diesen Wert für Endpunkte von Modelle für Texteinbettungen auf text_embedding und für alle anderen Modellendpunkte auf generic festlegen. |
MODEL_QUALIFIED_NAME |
Erforderlich für OpenAI-Modellendpunkte; kann für andere Modellendpunkte NULL sein | Der voll qualifizierte Name, falls der Modellendpunkt mehrere Versionen hat oder wenn er vom Modellendpunkt definiert wird, z. B. textembedding-gecko@001 oder textembedding-gecko@002 . Da das textembedding-gecko@001 -Modell bereits bei der Modellendpunktverwaltung registriert ist, können Sie Einbettungen mit textembedding-gecko@001 als Modell-ID generieren. |
AUTH_TYPE |
Kann NULL sein, sofern für den Modellendpunkt keine spezifische Authentifizierung erforderlich ist. | Der vom Modellendpunkt verwendete Authentifizierungstyp. Sie können sie entweder auf auth_type_cloudsql_service_agent_iam für Vertex AI-Modelle oder auf auth_type_secret_manager für andere Anbieter festlegen. |
AUTH_ID |
Als NULL für Vertex AI-Endpunkte übergeben; für alle anderen Modellendpunkte erforderlich, in denen Secrets in Secret Manager gespeichert werden | Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird. |
GENERATE_HEADER_FUNCTION |
Kann NULL sein | Der Funktionsname, den Sie zum Generieren benutzerdefinierter Header festlegen. Die Signatur dieser Funktion hängt von der mysql.ml_predict_row() -Funktion ab. Weitere Informationen finden Sie unter Funktion zum Generieren von HTTP-Headern. |
INPUT_TRANSFORM_FUNCTION |
Optional für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung; nicht für generische Modellendpunkte festlegen | Die Funktion zum Transformieren der Eingabe der entsprechenden Vorhersagefunktion in die modellspezifische Eingabe. Weitere Informationen finden Sie unter Transformationsfunktionen. |
OUTPUT_TRANSFORM_FUNCTION |
Optional für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung; nicht für generische Modellendpunkte festlegen | Die Funktion zum Transformieren der modellspezifischen Ausgabe in die Ausgabe der Vorhersagefunktion. Weitere Informationen finden Sie unter Transformationsfunktionen. |
mysql.ml_alter_model_registration()
Im Folgenden sehen Sie, wie die SQL-Funktion mysql.ml_alter_model_registration()
aufgerufen wird, mit der Metadaten von Modellendpunkten aktualisiert werden:
CALL
mysql.ml_alter_model_registration(
'MODEL_ID',
'REQUEST_URL',
'PROVIDER_ID',
'MODEL_TYPE',
'MODEL_QUALIFIED_NAME',
'AUTH_TYPE',
'AUTH_ID',
'GENERATE_HEADER_FUNCTION',
'INPUT_TRANSFORM_FUNCTION',
'OUTPUT_TRANSFORM_FUNCTION');
mysql.ml_drop_model_registration()
Im Folgenden sehen Sie, wie die SQL-Funktion mysql.ml_drop_model_registration()
aufgerufen wird, mit der ein Modellendpunkt gelöscht wird:
CALL mysql.ml_drop_model_registration('MODEL_ID');
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
mysql.ml_list_registered_model()
Im Folgenden sehen Sie, wie Sie die SQL-Funktion mysql.ml_list_registered_model()
aufrufen, mit der Informationen zum Modellendpunkt aufgeführt werden:
SELECT mysql.ml_list_registered_model('MODEL_ID');
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
mysql.cloudsql_ml_models
Im Folgenden sehen Sie, wie Sie die Tabelle mysql.cloudsql_ml_models
abfragen, die zum Auflisten von Informationen zu Modellendpunkten für alle Modellendpunkte verwendet wird:
SELECT * FROM mysql.cloudsql_ml_models;
Secrets
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Secrets verwalten können.
mysql.ml_create_sm_secret_registration()
Im Folgenden wird gezeigt, wie die SQL-Funktion mysql.ml_create_sm_secret_registration()
aufgerufen wird, um das in Secret Manager erstellte Secret hinzuzufügen:
CALL
mysql.ml_create_sm_secret_registration(
'SECRET_ID',
'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter | Beschreibung |
---|---|
SECRET_ID |
Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird. |
PROJECT_ID |
Die ID Ihres Trusted Cloud by S3NS -Projekts, das das Secret enthält. Dieses Projekt kann sich von dem Projekt unterscheiden, das Ihre Cloud SQL-Instanz enthält. |
SECRET_MANAGER_SECRET_ID |
Die Secret-ID, die in Secret Manager festgelegt wurde, als Sie das Secret erstellt haben. |
VERSION_NUMBER |
Die Versionsnummer der Secret-ID. |
mysql.ml_alter_sm_secret_registration()
Im Folgenden wird gezeigt, wie die SQL-Funktion mysql.ml_alter_sm_secret_registration()
aufgerufen wird, mit der geheime Informationen aktualisiert werden:
CALL
mysql.ml_alter_sm_secret_registration(
'SECRET_ID',
'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter | Beschreibung |
---|---|
SECRET_ID |
Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird. |
PROJECT_ID |
Die ID Ihres Trusted Cloud by S3NS -Projekts, das das Secret enthält. Dieses Projekt kann sich von dem Projekt unterscheiden, das Ihre Cloud SQL-Instanz enthält. |
SECRET_MANAGER_SECRET_ID |
Die Secret-ID, die in Secret Manager festgelegt wurde, als Sie das Secret erstellt haben. |
VERSION_NUMBER |
Die Versionsnummer der Secret-ID. |
mysql.ml_drop_sm_secret_registration()
Im Folgenden wird gezeigt, wie die SQL-Funktion mysql.ml_drop_sm_secret_registration()
aufgerufen wird, mit der ein Secret gelöscht wird:
CALL mysql.ml_drop_sm_secret_registration('SECRET_ID');
Parameter | Beschreibung |
---|---|
SECRET_ID |
Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird. |
Vorhersagefunktionen
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Einbettungen generieren oder Vorhersagen aufrufen können.
mysql.ml_embedding()
Im Folgenden wird gezeigt, wie Einbettungen generiert werden:
SELECT
mysql.ml_embedding(
'MODEL_ID',
'CONTENT');
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
CONTENT |
Der Text, der in eine Vektoreinbettung übersetzt werden soll. |
Beispiele für SQL-Abfragen zum Generieren von Texteinbettungen finden Sie unter Beispiele.
mysql.ml_predict_row()
Im Folgenden wird gezeigt, wie Vorhersagen aufgerufen werden:
SELECT
mysql.ml_predict_row(
'MODEL_ID',
'REQUEST_BODY');
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
REQUEST_BODY |
Die Parameter für die Vorhersagefunktion im JSON-Format. |
Beispiele für SQL-Abfragen zum Aufrufen von Vorhersagen finden Sie unter Beispiele.
Transformationsfunktionen
In dieser Referenz finden Sie Informationen zu Parametern für Eingabe- und Ausgabe-Transformationsfunktionen.
Eingabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Texteinbettungsmodellen:
CREATE FUNCTION IF NOT EXISTS
INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
Parameter | Beschreibung |
---|---|
INPUT_TRANSFORM_FUNCTION |
Die Funktion zum Transformieren der Eingabe der entsprechenden Vorhersagefunktion in die eingabespezifische Eingabe des Modellendpunkts. |
Ausgabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Texteinbettungsmodellen:
CREATE FUNCTION IF NOT EXISTS
OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;
Parameter | Beschreibung |
---|---|
OUTPUT_TRANSFORM_FUNCTION |
Die Funktion zum Transformieren der ausgabespezifischen Ausgabe des Modellendpunkts in die Ausgabe der Vorhersagefunktion. |
Beispiel für Transformationsfunktionen
Um besser zu verstehen, wie Sie Transformationsfunktionen für Ihren Modellendpunkt erstellen, sehen Sie sich einen benutzerdefinierten gehosteten Texteinbettungsmodellendpunkt an, für den JSON-Ein- und -Ausgabe erforderlich ist.
Mit der folgenden Beispiel-curl-Anfrage werden Einbettungen basierend auf dem Prompt und dem Modellendpunkt erstellt:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["Cloud SQL Embeddings"]}'
Die folgende Beispielantwort wird zurückgegeben:
[[ 0.3522231 -0.35932037 0.10156056 0.17734447 -0.11606089 -0.17266059
0.02509351 0.20305622 -0.09787305 -0.12154685 -0.17313677 -0.08075467
0.06821183 -0.06896557 0.1171584 -0.00931572 0.11875633 -0.00077482
0.25604948 0.0519384 0.2034983 -0.09952664 0.10347155 -0.11935943
-0.17872004 -0.08706985 -0.07056875 -0.05929353 0.4177883 -0.14381726
0.07934926 0.31368294 0.12543282 0.10758053 -0.30210832 -0.02951015
0.3908268 -0.03091059 0.05302926 -0.00114946 -0.16233777 0.1117468
-0.1315904 0.13947351 -0.29569918 -0.12330773 -0.04354299 -0.18068913
0.14445548 0.19481727]]
Anhand dieser Eingabe und Antwort können Sie Folgendes ableiten:
Das Modell erwartet JSON-Eingabe über das Feld
prompt
. In dieses Feld kann ein Array von Eingaben eingegeben werden. Da die Funktionmysql.ml_embedding()
eine Funktion auf Zeilenebene ist, wird jeweils nur eine Texteingabe erwartet. Sie müssen also eine Eingabetransformationsfunktion erstellen, die ein Array mit einem einzelnen Element erstellt.Die Antwort des Modells ist ein Array von Einbettungen, eine für jeden Prompt, der in das Modell eingegeben wird. Da die Funktion
mysql.ml_embedding()
eine Funktion auf Zeilenebene ist, wird jeweils nur eine Eingabe zurückgegeben. Daher müssen Sie eine Ausgabetransformationsfunktion erstellen, mit der das Embedding aus dem Array extrahiert werden kann.
Im folgenden Beispiel sehen Sie die Ein- und Ausgabetransformationsfunktionen, die für diesen Modellendpunkt verwendet werden, wenn er bei der Modellendpunktverwaltung registriert ist:
Eingabetransformationsfunktion
DELIMITER $$
CREATE FUNCTION IF NOT EXISTS cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC
BEGIN
RETURN JSON_OBJECT('prompt', JSON_ARRAY(input_text));
END $$
Ausgabetransformationsfunktion
CREATE FUNCTION IF NOT EXISTS cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS BLOB
DETERMINISTIC
BEGIN
RETURN STRING_TO_VECTOR(
JSON_EXTRACT(
content,
'$.predictions[0].embeddings.values'
)
);
END $$
DELIMITER ;
HTTP header generation function
The following shows signature for the header generation function that can be used with the `mysql.ml_embedding()` prediction function when registering other text embedding model endpoints.
CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
For the mysql.ml_predict_row()
prediction function, the signature is as
follows:
CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON DETERMINISTIC;
Parameter | Description |
---|---|
GENERATE_HEADERS |
The function to generate custom headers. You can also pass the authorization header generated by the header generation function while registering the model endpoint. |
Header generation function example
To better understand how to create a function that generates output in JSON key value pairs that are used as HTTP headers, consider a custom-hosted text embedding model endpoint.
The following example curl request passes the version
HTTP header, which is
used by the model endpoint:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json" \
-H "version: 2024-01-01" \
-d '{"prompt": ["Cloud SQL Embeddings"]}'
The model expects text input through the version
field and returns the version
value in JSON format. The following example shows the header generation function
that is used for this text embedding model endpoint when it is registered with model
endpoint management:
DELIMITER $$
CREATE FUNCTION IF NOT EXISTS header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC
BEGIN
RETURN JSON_OBJECT('version', '2024-01-01');
END;
$$
DELIMITER ;