이 페이지에는 google_ml_integration
확장 프로그램에서 모델 엔드포인트를 등록하고 관리하기 위해 제공하는 다양한 함수의 매개변수가 나와 있습니다. 이 페이지에는 모델 엔드포인트 관리를 사용하여 관리할 수 있는 보안 비밀도 표시됩니다. 프로덕션 환경에서 AI 모델을 사용하려면 Cloud SQL을 사용하여 생성형 AI 애플리케이션 빌드를 참고하세요.
모델
이 참조를 사용하여 모델 엔드포인트를 관리할 수 있는 함수의 매개변수를 알아보세요.
google_ml.create_model()
다음은 모델 엔드포인트 메타데이터를 등록하는 데 사용되는 google_ml.create_model()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
매개변수 | 필수 | 설명 |
---|---|---|
MODEL_ID |
모든 모델 엔드포인트에 필요 | 사용자가 정의한 모델 엔드포인트의 고유 ID입니다. |
REQUEST_URL |
기본 지원이 포함된 텍스트 임베딩 모델 엔드포인트의 경우 선택사항 |
다른 텍스트 임베딩 및 일반 모델 엔드포인트를 추가할 때의 모델별 엔드포인트입니다. 함수가 내장 모델 엔드포인트에 대해 생성하는 요청 URL은 클러스터의 프로젝트 및 리전 또는 위치를 참조합니다. 다른 프로젝트를 참조하려면 맞춤 호스팅된 모델 엔드포인트의 경우 인터넷을 통해 모델 엔드포인트에 액세스할 수 있는지 확인합니다. |
PROVIDER_ID |
기본 지원이 포함된 텍스트 임베딩 모델 엔드포인트에 필요 | 모델 엔드포인트의 제공업체입니다. 기본값은 custom 입니다. Cloud SQL의 경우 Vertex AI 모델 엔드포인트의 경우 google , OpenAI 모델 엔드포인트의 경우 open_ai , Anthropic 모델 엔드포인트의 경우 anthropic , Hugging Face 모델 엔드포인트의 경우 hugging_face , 맞춤 호스팅 모델 엔드포인트의 경우 custom 로 제공자를 설정합니다. |
MODEL_TYPE |
일반 모델 엔드포인트의 경우 선택사항 | 모델 유형입니다. 이 값은 텍스트 임베딩 모델 엔드포인트의 경우 text_embedding 로, 다른 모든 모델 엔드포인트의 경우 generic 로 설정할 수 있습니다. |
MODEL_QUALIFIED_NAME |
OpenAI 모델 엔드포인트에 필요하며 다른 모델 엔드포인트에는 선택사항입니다. | 모델 엔드포인트에 여러 버전이 있거나 모델 엔드포인트에서 정의하는 경우의 정규화된 이름입니다(예: textembedding-gecko@001 또는 textembedding-gecko@002 ). textembedding-gecko@001 모델은 모델 엔드포인트 관리에 사전 등록되어 있으므로 textembedding-gecko@001 를 모델 ID로 사용하여 임베딩을 생성할 수 있습니다. |
AUTH_TYPE |
모델 엔드포인트에 특정 인증 요구사항이 없는 한 선택사항 | 모델 엔드포인트에서 사용하는 인증 유형입니다. Vertex AI 모델의 경우 cloudsql_service_agent_iam 로, 다른 제공업체의 경우 secret_manager 로 설정할 수 있습니다. |
AUTH_ID |
Vertex AI 모델 엔드포인트에는 설정하지 마세요. Secret Manager에 비밀을 저장하는 다른 모든 모델 엔드포인트에는 필요합니다. | 설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 비밀 ID입니다. |
GENERATE_HEADER_FUNCTION |
선택사항 | 맞춤 헤더를 생성하도록 설정한 함수 이름입니다. 이 함수의 서명은 google_ml.predict_row() 함수에 따라 다릅니다. HTTP 헤더 생성 함수를 참고하세요. |
INPUT_TRANSFORM_FUNCTION |
내장 지원이 있는 텍스트 임베딩 모델 엔드포인트의 경우 선택사항입니다. 일반 모델 엔드포인트에는 설정하지 마세요. | 해당 예측 함수의 입력을 모델별 입력으로 변환하는 함수입니다. 변환 함수를 참고하세요. |
OUTPUT_TRANSFORM_FUNCTION |
내장 지원이 있는 텍스트 임베딩 모델 엔드포인트의 경우 선택사항입니다. 일반 모델 엔드포인트에는 설정하지 마세요. | 모델별 출력을 예측 함수 출력으로 변환하는 함수입니다. 변환 함수를 참고하세요. |
google_ml.alter_model()
다음은 모델 엔드포인트 메타데이터를 업데이트하는 데 사용되는 google_ml.alter_model()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL
google_ml.alter_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
google_ml.drop_model()
다음은 모델 엔드포인트를 삭제하는 데 사용되는 google_ml.drop_model()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL google_ml.drop_model('MODEL_ID');
매개변수 | 설명 |
---|---|
MODEL_ID |
사용자가 정의한 모델 엔드포인트의 고유 ID입니다. |
google_ml.list_model()
다음은 모델 엔드포인트 정보를 나열하는 데 사용되는 google_ml.list_model()
SQL 함수를 호출하는 방법을 보여줍니다.
SELECT google_ml.list_model('MODEL_ID');
매개변수 | 설명 |
---|---|
MODEL_ID |
사용자가 정의한 모델 엔드포인트의 고유 ID입니다. |
google_ml.model_info_view
다음은 모든 모델 엔드포인트의 모델 엔드포인트 정보를 나열하는 데 사용되는 google_ml.model_info_view
뷰를 호출하는 방법을 보여줍니다.
SELECT * FROM google_ml.model_info_view;
보안 비밀
이 참조를 사용하여 비밀을 관리할 수 있는 함수의 매개변수를 알아보세요.
google_ml.create_sm_secret()
다음은 Secret Manager에서 만든 보안 비밀을 추가하는 데 사용되는 google_ml.create_sm_secret()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL
google_ml.create_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
매개변수 | 설명 |
---|---|
SECRET_ID |
설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 비밀 ID입니다. |
PROJECT_ID |
보안 비밀이 포함된 Google Cloud 프로젝트의 ID입니다. 이 프로젝트는 Cloud SQL 인스턴스가 포함된 프로젝트와 다를 수 있습니다. |
SECRET_MANAGER_SECRET_ID |
보안 비밀을 만들 때 Secret Manager에 설정된 보안 비밀 ID입니다. |
VERSION_NUMBER |
보안 비밀 ID의 버전 번호입니다. |
google_ml.alter_sm_secret()
다음은 보안 비밀 정보를 업데이트하는 데 사용되는 google_ml.alter_sm_secret()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL
google_ml.alter_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
매개변수 | 설명 |
---|---|
SECRET_ID |
설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 비밀 ID입니다. |
PROJECT_ID |
보안 비밀이 포함된 Google Cloud 프로젝트의 ID입니다. 이 프로젝트는 Cloud SQL 인스턴스가 포함된 프로젝트와 다를 수 있습니다. |
SECRET_MANAGER_SECRET_ID |
보안 비밀을 만들 때 Secret Manager에 설정된 보안 비밀 ID입니다. |
VERSION_NUMBER |
보안 비밀 ID의 버전 번호입니다. |
google_ml.drop_sm_secret()
다음은 보안 비밀을 삭제하는 데 사용되는 google_ml.drop_sm_secret()
SQL 함수를 호출하는 방법을 보여줍니다.
CALL google_ml.drop_sm_secret('SECRET_ID');
매개변수 | 설명 |
---|---|
SECRET_ID |
설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 비밀 ID입니다. |
예측 함수
이 참조를 사용하여 임베딩을 생성하거나 예측을 호출할 수 있는 함수의 매개변수를 알아보세요.
google_ml.embedding()
다음은 임베딩을 생성하는 방법을 보여줍니다.
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => 'CONTENT');
매개변수 | 설명 |
---|---|
MODEL_ID |
사용자가 정의한 모델 엔드포인트의 고유 ID입니다. |
CONTENT |
벡터 임베딩으로 변환할 텍스트입니다. |
텍스트 임베딩을 생성하는 SQL 쿼리의 예는 예시를 참고하세요.
google_ml.predict_row()
다음은 예측을 호출하는 방법을 보여줍니다.
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
매개변수 | 설명 |
---|---|
MODEL_ID |
사용자가 정의한 모델 엔드포인트의 고유 ID입니다. |
REQUEST_BODY |
JSON 형식의 예측 함수 매개변수입니다. |
예측을 호출하는 SQL 쿼리의 예는 예시를 참고하세요.
변환 함수
이 참조를 사용하여 입력 및 출력 변환 함수의 매개변수를 알아보세요.
입력 변환 함수
다음은 텍스트 임베딩 모델 엔드포인트의 예측 함수 서명을 보여줍니다.
CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
매개변수 | 설명 |
---|---|
INPUT_TRANSFORM_FUNCTION |
상응하는 예측 함수의 입력을 모델 엔드포인트별 입력으로 변환하는 함수입니다. |
출력 변환 함수
다음은 텍스트 임베딩 모델 엔드포인트의 예측 함수 서명을 보여줍니다.
CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
매개변수 | 설명 |
---|---|
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]]
이 입력과 응답을 바탕으로 다음을 추론할 수 있습니다.
모델은
prompt
필드를 통해 JSON 입력을 예상합니다. 이 필드는 입력 배열을 허용합니다.google_ml.embedding()
함수는 행 수준 함수이므로 한 번에 하나의 텍스트 입력을 예상합니다. 따라서 단일 요소로 배열을 빌드하는 입력 변환 함수를 만들어야 합니다.모델의 응답은 모델에 입력된 각 프롬프트에 대해 하나씩의 임베딩 배열입니다.
google_ml.embedding()
함수는 행 수준 함수이므로 한 번에 하나의 입력을 반환합니다. 따라서 배열에서 임베딩을 추출하는 데 사용할 수 있는 출력 변환 함수를 만들어야 합니다.
다음 예는 이 모델 엔드포인트가 모델 엔드포인트 관리에 등록될 때 이 모델 엔드포인트에 사용되는 입력 및 출력 변환 함수를 보여줍니다.
입력 변환 함수
CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
DECLARE
transformed_input JSON;
model_qualified_name TEXT;
BEGIN
SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
RETURN transformed_input;
END;
$$;
출력 변환 함수
CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS REAL[]
LANGUAGE plpgsql
AS $$
DECLARE
transformed_output REAL[];
BEGIN
SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
RETURN transformed_output;
END;
$$;
HTTP 헤더 생성 함수
다음은 다른 텍스트 임베딩 모델 엔드포인트를 등록할 때 google_ml.embedding()
예측 함수와 함께 사용할 수 있는 헤더 생성 함수의 서명을 보여줍니다.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
google_ml.predict_row()
예측 함수의 서명은 다음과 같습니다.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
매개변수 | 설명 |
---|---|
GENERATE_HEADERS |
커스텀 헤더를 생성하는 함수입니다. 모델 엔드포인트를 등록하는 동안 헤더 생성 함수에서 생성된 승인 헤더를 전달할 수도 있습니다. |
헤더 생성 함수 예시
HTTP 헤더로 사용되는 JSON 키-값 쌍으로 출력을 생성하는 함수를 만드는 방법을 더 잘 이해하려면 맞춤 호스팅 텍스트 삽입 모델 엔드포인트를 참고하세요.
다음 cURL 요청 예에서는 모델 엔드포인트에서 사용하는 version
HTTP 헤더를 전달합니다.
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"]}'
모델은 version
필드를 통해 텍스트 입력을 예상하고 버전 값을 JSON 형식으로 반환합니다. 다음 예는 이 텍스트 임베딩 모델 엔드포인트가 모델 엔드포인트 관리에 등록될 때 사용되는 헤더 생성 함수를 보여줍니다.
CREATE OR REPLACE FUNCTION header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
BEGIN
RETURN json_build_object('version', '2024-01-01')::JSON;
END;
$$;
요청 URL 생성
요청 URL 생성 함수를 사용하여 내장 지원이 있는 모델 엔드포인트의 요청 URL을 추론합니다. 다음은 이 함수의 서명을 보여줍니다.
CREATE OR REPLACE FUNCTION GENERATE_REQUEST_URL(provider google_ml.model_provider, model_type google_ml.MODEL_TYPE, model_qualified_name VARCHAR(100), model_region VARCHAR(100) DEFAULT NULL)
매개변수 | 설명 |
---|---|
GENERATE_REQUEST_URL |
기본 제공 지원이 있는 모델 엔드포인트의 확장 프로그램에서 생성된 요청 URL을 생성하는 함수입니다. |