בדף הזה מפורטים הפרמטרים של פונקציות שונות ש-Cloud SQL מספק כדי לרשום ולנהל נקודות קצה של מודלים. בדף מפורטים גם הסודות שאפשר לנהל באמצעות ניהול נקודות קצה של מודלים.
מודלים
אפשר להשתמש בהפניה הזו כדי להבין את הפרמטרים של פונקציות שמאפשרות לכם לנהל נקודות קצה של מודלים.
mysql.ml_create_model_registration()
בדוגמה הבאה אפשר לראות איך משתמשים בפונקציה mysql.ml_create_model_registration() כדי לרשום מטא-נתונים של נקודת קצה של מודל:
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');
| פרמטר | חובה | תיאור |
|---|---|---|
MODEL_ID |
חובה לכל נקודות הקצה של המודלים | מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
REQUEST_URL |
יכול להיות NULL במודלים של Vertex AI | נקודת הקצה הספציפית למודל כשמוסיפים הטמעת טקסט ונקודות קצה של מודלים גנריים. כתובת ה-URL של הבקשה שהפונקציה יוצרת עבור נקודות קצה של מודלים מובנים מתייחסת לפרויקט ולאזור או למיקום של האשכול. אם רוצים להתייחס לפרויקט אחר, צריך לציין את במקרה של נקודות קצה של מודלים בהתאמה אישית שמתארחים בשרת, צריך לוודא שנקודת הקצה של המודל נגישה דרך האינטרנט. |
PROVIDER_ID |
נדרש לנקודות קצה של מודלים להטמעת טקסט עם תמיכה מובנית | הספק של נקודת הקצה של המודל. ערך ברירת המחדל הוא custom. ב-Cloud SQL, מגדירים את הספק ל-google עבור נקודות קצה של מודלים של Vertex AI, ל-open_ai עבור נקודות קצה של מודלים של OpenAI, ל-anthropic עבור נקודות קצה של מודלים של Anthropic, ל-hugging_face עבור נקודות קצה של מודלים של Hugging Face או ל-custom עבור נקודות קצה של מודלים בהוסטינג בהתאמה אישית. |
MODEL_TYPE |
יכול להיות NULL בנקודות קצה של מודלים גנריים | סוג המודל. אפשר להגדיר את הערך הזה כ-text_embedding עבור נקודות קצה של מודלים להטמעת טקסט, או כ-generic עבור כל נקודות הקצה של מודלים אחרים. |
MODEL_QUALIFIED_NAME |
חובה לנקודות קצה של מודלים של OpenAI; יכול להיות NULL לנקודות קצה של מודלים אחרים | השם המוגדר במלואו אם לנקודת הקצה של המודל יש כמה גרסאות או אם היא מוגדרת על ידי נקודת הקצה של המודל – לדוגמה, textembedding-gecko@001 או textembedding-gecko@002. מכיוון שמודל textembedding-gecko@001 רשום מראש בניהול נקודות קצה של מודלים, אפשר ליצור הטמעות באמצעות textembedding-gecko@001 כמזהה המודל. |
AUTH_TYPE |
יכול להיות NULL אלא אם לנקודת הקצה של המודל יש דרישת אימות ספציפית | סוג האימות שבו נעשה שימוש בנקודת הקצה של המודל. אפשר להגדיר את האפשרות auth_type_cloudsql_service_agent_iam למודלים של Vertex AI או auth_type_secret_manager לספקים אחרים. |
AUTH_ID |
העברה כ-NULL לנקודות קצה של Vertex AI; נדרש לכל נקודות הקצה האחרות של המודלים שמאחסנות סודות ב-Secret Manager | מזהה הסוד שהגדרתם, שמשמש בהמשך לרישום של נקודת קצה של מודל. |
GENERATE_HEADER_FUNCTION |
יכול להיות NULL | שם הפונקציה שהגדרתם ליצירת כותרות בהתאמה אישית. החתימה של הפונקציה הזו תלויה בפונקציה mysql.ml_predict_row(). מידע נוסף זמין במאמר בנושא פונקציה ליצירת כותרת HTTP. |
INPUT_TRANSFORM_FUNCTION |
אופציונלי לנקודות קצה של מודלים להטמעת טקסט עם תמיכה מובנית; לא מגדירים לנקודות קצה של מודלים גנריים | הפונקציה להמרת קלט של פונקציית החיזוי המתאימה לקלט ספציפי למודל. ראו פונקציות טרנספורמציה. |
OUTPUT_TRANSFORM_FUNCTION |
אופציונלי לנקודות קצה של מודלים להטמעת טקסט עם תמיכה מובנית; לא מגדירים לנקודות קצה של מודלים גנריים | הפונקציה להמרת פלט ספציפי של מודל לפלט של פונקציית החיזוי. ראו פונקציות טרנספורמציה. |
mysql.ml_alter_model_registration()
בדוגמה הבאה מוצג איך להפעיל את פונקציית ה-SQL mysql.ml_alter_model_registration() שמשמשת לעדכון המטא-נתונים של נקודת הקצה של המודל:
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()
בדוגמה הבאה מוצג איך להפעיל את פונקציית ה-SQL mysql.ml_drop_model_registration() שמשמשת להסרת נקודת קצה של מודל:
CALL mysql.ml_drop_model_registration('MODEL_ID');
| פרמטר | תיאור |
|---|---|
MODEL_ID |
מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
mysql.ml_list_registered_model()
בדוגמה הבאה מוצג אופן הקריאה לפונקציית ה-SQL mysql.ml_list_registered_model() שמשמשת להצגת מידע על נקודת הקצה של המודל:
SELECT mysql.ml_list_registered_model('MODEL_ID');
| פרמטר | תיאור |
|---|---|
MODEL_ID |
מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
mysql.cloudsql_ml_models
בדוגמה הבאה מוצגת שאילתה בטבלת mysql.cloudsql_ml_models שמשמשת להצגת מידע על נקודות קצה של מודלים עבור כל נקודות הקצה של המודלים:
SELECT * FROM mysql.cloudsql_ml_models;
סודות
אפשר להשתמש בהפניה הזו כדי להבין פרמטרים של פונקציות שמאפשרות לכם לנהל סודות.
mysql.ml_create_sm_secret_registration()
בדוגמה הבאה מוצג איך להפעיל את פונקציית ה-SQL mysql.ml_create_sm_secret_registration() שמשמשת להוספת הסוד שנוצר ב-Secret Manager:
CALL
mysql.ml_create_sm_secret_registration(
'SECRET_ID',
'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
| פרמטר | תיאור |
|---|---|
SECRET_ID |
מזהה הסוד שהגדרתם, שמשמש בהמשך לרישום של נקודת קצה של מודל. |
PROJECT_ID |
מזהה הפרויקט Google Cloud שמכיל את הסוד. הפרויקט הזה יכול להיות שונה מהפרויקט שמכיל את מופע Cloud SQL. |
SECRET_MANAGER_SECRET_ID |
מזהה הסוד שהוגדר ב-Secret Manager כשנוצר הסוד. |
VERSION_NUMBER |
מספר הגרסה של המזהה הסודי. |
mysql.ml_alter_sm_secret_registration()
בדוגמה הבאה מוצג אופן השימוש בפונקציית ה-SQL mysql.ml_alter_sm_secret_registration() לעדכון פרטי סוד:
CALL
mysql.ml_alter_sm_secret_registration(
'SECRET_ID',
'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
| פרמטר | תיאור |
|---|---|
SECRET_ID |
מזהה הסוד שהגדרתם, שמשמש בהמשך לרישום של נקודת קצה של מודל. |
PROJECT_ID |
מזהה הפרויקט Google Cloud שמכיל את הסוד. הפרויקט הזה יכול להיות שונה מהפרויקט שמכיל את מופע Cloud SQL. |
SECRET_MANAGER_SECRET_ID |
מזהה הסוד שהוגדר ב-Secret Manager כשנוצר הסוד. |
VERSION_NUMBER |
מספר הגרסה של המזהה הסודי. |
mysql.ml_drop_sm_secret_registration()
בדוגמה הבאה מוצג אופן ההפעלה של פונקציית ה-SQL mysql.ml_drop_sm_secret_registration() שמשמשת להסרת סוד:
CALL mysql.ml_drop_sm_secret_registration('SECRET_ID');
| פרמטר | תיאור |
|---|---|
SECRET_ID |
מזהה הסוד שהגדרתם, שמשמש בהמשך לרישום של נקודת קצה של מודל. |
פונקציות חיזוי
אפשר להשתמש בהפניה הזו כדי להבין את הפרמטרים של פונקציות שמאפשרות ליצור הטמעות או להפעיל תחזיות.
mysql.ml_embedding()
בדוגמה הבאה אפשר לראות איך יוצרים הטמעות:
SELECT
mysql.ml_embedding(
'MODEL_ID',
'CONTENT');
| פרמטר | תיאור |
|---|---|
MODEL_ID |
מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
CONTENT |
הטקסט שרוצים לתרגם להטמעה בווקטור. |
דוגמאות לשאילתות SQL ליצירת הטמעות טקסט זמינות במאמר דוגמאות.
mysql.ml_predict_row()
בדוגמה הבאה אפשר לראות איך מפעילים חיזויים:
SELECT
mysql.ml_predict_row(
'MODEL_ID',
'REQUEST_BODY');
| פרמטר | תיאור |
|---|---|
MODEL_ID |
מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
REQUEST_BODY |
הפרמטרים של פונקציית החיזוי, בפורמט JSON. |
דוגמאות לשאילתות SQL להפעלת תחזיות זמינות במאמר דוגמאות.
טרנספורמציה של פונקציות
אפשר להשתמש בהפניה הזו כדי להבין את הפרמטרים של פונקציות טרנספורמציה של קלט ופלט.
פונקציית שינוי קלט
בדוגמה הבאה מוצגת החתימה של פונקציית החיזוי לנקודות קצה של מודלים להטמעת טקסט:
CREATE FUNCTION IF NOT EXISTS
INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
| פרמטר | תיאור |
|---|---|
INPUT_TRANSFORM_FUNCTION |
הפונקציה להמרת קלט של פונקציית החיזוי המתאימה לקלט ספציפי של נקודת הקצה של המודל. |
פונקציית שינוי פלט
בדוגמה הבאה מוצגת החתימה של פונקציית החיזוי לנקודות קצה של מודלים להטמעת טקסט:
CREATE FUNCTION IF NOT EXISTS
OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;
| פרמטר | תיאור |
|---|---|
OUTPUT_TRANSFORM_FUNCTION |
הפונקציה להמרת פלט ספציפי של נקודת קצה של מודל לפלט של פונקציית החיזוי. |
דוגמה לפונקציות של שינוי
כדי להבין טוב יותר איך ליצור פונקציות טרנספורמציה לנקודת הקצה של המודל, כדאי לעיין בנקודת קצה של מודל הטמעת טקסט בהוסטינג מותאם אישית, שדורשת קלט ופלט של JSON.
בדוגמה הבאה, בקשת curl יוצרת הטמעות על סמך ההנחיה ונקודת הקצה של המודל:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["Cloud SQL Embeddings"]}'התגובה הבאה מוחזרת:
[[ 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]]
על סמך הקלט והתשובה, אפשר להסיק את הדברים הבאים:
המודל מצפה לקלט JSON דרך השדה
prompt. בשדה הזה אפשר להזין מערך של קלטים. הפונקציהmysql.ml_embedding()היא פונקציה ברמת השורה, ולכן היא מצפה לקבל קלט טקסט אחד בכל פעם. לכן, צריך ליצור פונקציית המרת קלט שיוצרת מערך עם רכיב יחיד.התשובה מהמודל היא מערך של הטמעות, אחת לכל הנחיה שהוזנה למודל. הפונקציה
mysql.ml_embedding()היא פונקציה ברמת השורה, ולכן היא מחזירה קלט יחיד בכל פעם. לכן, צריך ליצור פונקציית טרנספורמציה של פלט שאפשר להשתמש בה כדי לחלץ את ההטמעה מהמערך.
בדוגמה הבאה מוצגות פונקציות ההמרה של הקלט והפלט שמשמשות את נקודת הקצה של המודל הזו כשהיא רשומה בניהול נקודות קצה של מודלים:
פונקציית שינוי קלט
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 $$
פונקציית טרנספורמציה של פלט
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 ;
Default included transform functions
Model Endpoint Management provides in-built support for two common text embedding
model families, Google's Gemini embedding models and OpenAI's text embedding models.
The input and output transforms are preloaded when these models are registered,
for convenience. They can be overwritten by specifying your own transform
functions during registration, or by calling mysql.ml_alter_model_registration().
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 ;