בדף הזה מפורטים הפרמטרים של פונקציות שונות ש-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()
כך מפעילים את הפונקציה mysql.ml_alter_model_registration() ב-SQL כדי לעדכן את המטא-נתונים של נקודת הקצה של המודל:
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()
כך מפעילים את הפונקציה mysql.ml_drop_model_registration() ב-SQL כדי להסיר נקודת קצה של מודל:
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 |
מזהה הפרויקט ב- Cloud de Confiance by S3NS שמכיל את הסוד. הפרויקט הזה יכול להיות שונה מהפרויקט שכולל את המכונה של Cloud SQL. |
SECRET_MANAGER_SECRET_ID |
מזהה הסוד שהוגדר ב-Secret Manager כשיצרתם את הסוד. |
VERSION_NUMBER |
מספר הגרסה של מזהה הסוד. |
mysql.ml_alter_sm_secret_registration()
כך מפעילים את הפונקציה mysql.ml_alter_sm_secret_registration() ב-SQL כדי לעדכן את פרטי הסוד:
CALL
mysql.ml_alter_sm_secret_registration(
'SECRET_ID',
'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
| פרמטר | תיאור |
|---|---|
SECRET_ID |
מזהה הסוד שהגדרתם, שמשמש לאחר מכן לרישום נקודת קצה של מודל. |
PROJECT_ID |
מזהה הפרויקט ב- Cloud de Confiance by S3NS שמכיל את הסוד. הפרויקט הזה יכול להיות שונה מהפרויקט שכולל את המכונה של Cloud SQL. |
SECRET_MANAGER_SECRET_ID |
מזהה הסוד שהוגדר ב-Secret Manager כשיצרתם את הסוד. |
VERSION_NUMBER |
מספר הגרסה של מזהה הסוד. |
mysql.ml_drop_sm_secret_registration()
כך מפעילים את הפונקציה mysql.ml_drop_sm_secret_registration() ב-SQL כדי למחוק סוד:
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 ;