本頁面說明如何透過註冊模型端點和模型端點管理服務,使用模型叫用預測或產生嵌入。
事前準備
設定擴充功能
使用
psql
或 AlloyDB for PostgreSQL Studio,以postgres
使用者身分連線至資料庫。選用: 要求存取權,與 PostgreSQL 適用的 AlloyDB AI 查詢引擎 (預先發布版) 功能互動 ,包括支援多模態模型、排名模型和運算子函式。
選用:授予非超級 PostgreSQL 使用者管理模型中繼資料的權限:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
請替換下列變數:
NON_SUPER_USER
:非超級使用者 PostgreSQL 使用者名稱。
請務必啟用輸出 IP,以便存取虛擬私有雲外部託管的模型 (例如第三方模型)。詳情請參閱「新增輸出連線」。
設定驗證方法
下列各節說明如何在註冊模型端點前設定驗證。
設定 Vertex AI 的驗證
如要使用 Google Vertex AI 模型端點,請務必將 Vertex AI 權限新增至您用來連線至資料庫的 IAM 型 AlloyDB 服務帳戶。如要進一步瞭解如何與 Vertex AI 整合,請參閱「與 Vertex AI 整合」。
使用 Secret Manager 設定驗證
本節說明如何設定驗證,前提是您使用 Secret Manager 儲存第三方供應商的驗證詳細資料。
如果模型端點不會透過 Secret Manager 處理驗證,則可略過這個步驟。舉例來說,如果模型端點使用 HTTP 標頭傳遞驗證資訊,或完全不使用驗證,則可略過這個步驟。
如要建立及使用 API 金鑰或不記名權杖,請完成下列步驟:
在 Secret Manager 中建立密鑰。詳情請參閱「建立密鑰及存取密鑰版本」。
密鑰路徑會用於
google_ml.create_sm_secret()
SQL 函式。授予 AlloyDB 叢集存取密鑰的權限。
gcloud secrets add-iam-policy-binding 'SECRET_NAME' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
更改下列內容:
SECRET_NAME
:Secret Manager 中的密鑰名稱。SERVICE_ACCOUNT_ID
:IAM 型服務帳戶的 ID,格式為serviceAccount:service-PROJECT_ID@gcp-sa-alloydb.iam.gserviceaccount.com
,例如service-212340152456@gcp-sa-alloydb.iam.gserviceaccount.com
。您也可以在專案層級將這個角色授予服務帳戶。詳情請參閱「新增身分與存取權管理政策繫結」。
使用標頭設定驗證
以下範例說明如何使用函式設定驗證。這個函式會傳回 JSON 物件,其中包含向嵌入模型提出要求時所需的標頭。
CREATE OR REPLACE FUNCTION HEADER_GEN_FUNCTION(
model_id VARCHAR(100),
input_text TEXT
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
DECLARE
api_key VARCHAR(255) := 'API_KEY';
header_json JSON;
BEGIN
header_json := json_build_object(
'Content-Type', 'application/json',
'Authorization', 'Bearer ' || api_key
);
RETURN header_json;
END;
$$;
更改下列內容:
HEADER_GEN_FUNCTION
:您註冊模型時可使用的標頭產生函式名稱。API_KEY
:模型供應商的 API 金鑰。
文字嵌入模型
本節說明如何使用模型端點管理服務註冊模型端點。
模型端點管理工具支援部分文字嵌入和一般 Vertex AI 模型,做為預先註冊的模型端點。您可以根據模型類型,直接使用模型 ID 生成嵌入內容或叫用預測。 如要進一步瞭解支援的預先註冊模型,請參閱「預先註冊的 Vertex AI 模型」。
gemini-embedding-001
模型僅適用於 us-central1
區域。
舉例來說,如要呼叫預先註冊的 gemini-embedding-001
模型,可以直接使用嵌入函式呼叫模型:
SELECT
embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
如果 AlloyDB 叢集和 Vertex AI 端點位於不同專案中,請將 model_id
設為端點的合格路徑,例如 projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
。
同樣地,如要呼叫預先註冊的 gemini-1.5-pro:generateContent
模型,可以直接使用預測函式呼叫模型:
SELECT google_ml.predict_row(
model_id => 'gemini-1.5-pro:generateContent',
request_body => '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation. Only provide SQL query with no explanation."
}
]
}
]
}')-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
如要生成嵌入,請參閱生成文字嵌入。如要叫用預測功能,請參閱這篇文章。
內建支援的文字嵌入模型
模型端點管理功能內建支援 Vertex AI 和 OpenAI 的部分模型。如需內建支援的型號清單,請參閱「內建支援的型號」。
對於內建支援的模型,您可以將合格名稱設為模型合格名稱,並指定要求網址。模型端點管理功能會自動識別模型,並設定預設轉換函式。
Vertex AI 嵌入模型
下列步驟說明如何註冊內建支援的 Vertex AI 模型。以 gemini-embedding-001
和 text-multilingual-embedding-002
模型端點為例。
確認 AlloyDB 叢集和您查詢的 Vertex AI 模型位於同一區域。
呼叫建立模型函式,加入模型端點:
gemini-embedding-001
CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'publishers/google/models/gemini-embedding-001', model_provider => 'google', model_qualified_name => 'gemini-embedding-001', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam');
text-multilingual-embedding-002
CALL google_ml.create_model( model_id => 'text-multilingual-embedding-002', model_request_url => 'publishers/google/models/text-multilingual-embedding-002', model_provider => 'google', model_qualified_name => 'text-multilingual-embedding-002', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam' model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform');
如果模型儲存在 AlloyDB 叢集以外的專案和區域,請將要求網址設為 projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID
,其中 REGION_ID
是模型代管所在的區域,MODEL_ID
則是合格的模型名稱。
此外,請將 Vertex AI 使用者 (roles/aiplatform.user
) 角色授予 AlloyDB 執行個體所在專案的 AlloyDB 服務帳戶,讓 AlloyDB 能夠存取其他專案中託管的模型。
Open AI 文字嵌入模型
google_ml_integration
擴充功能會自動設定預設轉換函式,並叫用對遠端 OpenAI 模型的呼叫。如需內建支援的 OpenAI 模型清單,請參閱「內建支援的模型」。
以下範例會新增 text-embedding-ada-002
OpenAI 模型端點。您可以按照相同步驟註冊 OpenAI text-embedding-3-small
和 text-embedding-3-large
模型端點,並設定模型專屬的合格名稱。
- 使用
psql
連線至資料庫。 - 設定
google_ml_integration
擴充功能。 - 將 OpenAI API 金鑰新增為 Secret Manager 的密鑰,用於驗證。
呼叫儲存在 Secret Manager 中的密鑰:
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,後續註冊模型端點時會使用這個 ID,例如key1
。SECRET_MANAGER_SECRET_ID
:您建立密鑰時在 Secret Manager 中設定的密鑰 ID。PROJECT_ID
:您的 Google Cloud 專案 ID。VERSION_NUMBER
:密鑰 ID 的版本號碼。
呼叫建立模型函式,註冊
text-embedding-ada-002
模型端點:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'open_ai', model_type => 'text_embedding', model_qualified_name => 'text-embedding-ada-002', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');
更改下列內容:
MODEL_ID
:您定義的模型端點專屬 ID。模型端點需要這個模型 ID,才能生成嵌入內容或叫用預測功能。SECRET_ID
:您在先前的google_ml.create_sm_secret()
程序中使用的密鑰 ID。
如要生成嵌入,請參閱生成文字嵌入。
自訂代管文字嵌入模型
本節說明如何註冊自訂代管模型端點,以及建立轉換函式和自訂 HTTP 標頭 (選用)。無論自訂代管模型端點的代管位置為何,系統都支援。
以下範例會新增 Cymbal 代管的 custom-embedding-model
自訂模型端點。cymbal_text_input_transform
和 cymbal_text_output_transform
轉換函式可用來將模型的輸入和輸出格式,轉換為預測函式的輸入和輸出格式。
如要註冊自訂主機代管的文字嵌入模型端點,請完成下列步驟:
呼叫儲存在 Secret Manager 中的密鑰:
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,後續註冊模型端點時會使用這個 ID,例如key1
。SECRET_MANAGER_SECRET_ID
:您建立密鑰時在 Secret Manager 中設定的密鑰 ID。PROJECT_ID
:您的 Google Cloud 專案 ID。VERSION_NUMBER
:密鑰 ID 的版本號碼。
根據文字嵌入模型端點的預測函式,建立輸入和輸出轉換函式。如要進一步瞭解如何建立轉換函式,請參閱轉換函式範例。
以下是專為
custom-embedding-model
文字嵌入模型端點設計的轉換函式範例:-- Input Transform Function corresponding to the custom model endpoint 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; $$; -- Output Transform Function corresponding to the custom model endpoint 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; $$;
呼叫建立模型函式,註冊自訂嵌入模型端點:
CALL google_ml.create_model( model_id => 'MODEL_ID', model_request_url => 'REQUEST_URL', model_provider => 'custom', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_in_transform_fn => 'cymbal_text_input_transform', model_out_transform_fn => 'cymbal_text_output_transform');
更改下列內容:
MODEL_ID
:必填。您定義的模型端點專屬 ID,例如custom-embedding-model
。模型端點需要這個模型 ID,才能生成嵌入內容或叫用預測功能。REQUEST_URL
:必填。新增自訂文字嵌入和一般模型端點時,模型專屬的端點 (例如https://cymbal.com/models/text/embeddings/v1
)。確認可透過內部 IP 位址存取模型端點。模型端點管理服務不支援公開 IP 位址。MODEL_QUALIFIED_NAME
:如果模型端點使用限定名稱,則為必要欄位。如果模型端點有多個版本,則為完整名稱。SECRET_ID
:您在先前的google_ml.create_sm_secret()
程序中使用的密鑰 ID。
內建支援的多模態模型
與 Vertex AI 整合並安裝擴充功能
- 與 Vertex AI 整合。
- 確認已安裝最新版
google_ml_integration
。如要檢查已安裝的版本,請執行下列指令:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.3 (1 row)
如果未安裝擴充功能,或安裝的版本低於 1.4.3,請執行下列指令更新擴充功能:
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
如果您在執行上述指令時遇到問題,或執行上述指令後,擴充功能未更新至 1.4.3 版,請與 AlloyDB 支援團隊聯絡。
確認版本為最新後,請執行
upgrade_to_preview_version
程序,安裝預覽功能:CALL google_ml.upgrade_to_preview_version(); SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.4 (1 row)
呼叫模型來生成多模態嵌入
由於模型端點管理功能內建支援 Vertex AI 的 multimodalembedding@001
模型,因此您可以直接呼叫模型來生成多模態嵌入。
下列範例使用 multimodalembedding@001
合格模型名稱做為模型 ID,生成多模態圖片嵌入:
- 使用
psql
連線至資料庫。 - 設定
google_ml_integration
擴充功能。 生成多模態圖片嵌入:
SELECT ai.image_embedding( model_id => 'multimodalembedding@001', image => 'IMAGE_PATH_OR_TEXT', mimetype => 'MIMETYPE');
更改下列內容:
- IMAGE_PATH_OR_TEXT,其中包含圖片的 Cloud Storage 路徑,例如
gs://cymbal_user_data/image-85097193-cd9788aacebb.jpeg
,可轉換為圖片的向量嵌入或 base64 字串。 - MIMETYPE 改為圖片的 MIME 類型。
排名模型
Vertex AI 排名模型
您可以使用「支援的模型」一節中提及的 Vertex AI 模型,無須註冊。
如要瞭解如何使用 Vertex AI 排序模型為搜尋結果排序,請參閱「排序搜尋結果」。
註冊第三方排名模型
以下範例說明如何註冊 Cohere 的重排序模型。
CREATE OR REPLACE FUNCTION cohere_rerank_input_transform(
model_id VARCHAR(100),
search_string TEXT,
documents TEXT[],
top_n INT DEFAULT NULL
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
DECLARE
transformed_input JSONB;
BEGIN
-- Basic Input Validation
IF search_string IS NULL OR search_string = '' THEN
RAISE EXCEPTION 'Invalid input: search_string cannot be NULL or empty.';
END IF;
IF documents IS NULL OR array_length(documents, 1) IS NULL OR array_length(documents, 1) = 0 THEN
RAISE EXCEPTION 'Invalid input: documents array cannot be NULL or empty.';
END IF;
IF top_n IS NOT NULL AND top_n < 0 THEN
RAISE EXCEPTION 'Invalid input: top_n must be greater than or equal to zero. Provided value: %', top_n;
END IF;
-- Construct the base JSON payload for Cohere Rerank API
transformed_input := jsonb_build_object(
'model', google_ml.model_qualified_name_of(model_id),
'query', search_string,
'documents', to_jsonb(documents), -- Convert TEXT[] directly to JSON array
'return_documents', false -- Explicitly set to false (optional, as its default)
);
-- Add top_n to the payload only if it's provided and valid
IF top_n IS NOT NULL THEN
transformed_input := transformed_input || jsonb_build_object('top_n', top_n);
END IF;
-- Return the final JSON payload
RETURN transformed_input::JSON;
END;
$$;
CREATE OR REPLACE FUNCTION cohere_rerank_output_transform(
model_id VARCHAR(100),
response_json JSON
)
RETURNS TABLE (index INT, score REAL)
LANGUAGE plpgsql
AS $$
DECLARE
result_item JSONB;
response_jsonb JSONB;
cohere_index INT; -- 0-based index from Cohere response
BEGIN
-- Validate response_json
IF response_json IS NULL THEN
RAISE EXCEPTION 'Invalid model response: response cannot be NULL.';
END IF;
-- Convert JSON to JSONB for easier processing
response_jsonb := response_json::JSONB;
-- Check top-level structure
IF jsonb_typeof(response_jsonb) != 'object' THEN
RAISE EXCEPTION 'Invalid model response: response must be a JSON object. Found: %', jsonb_typeof(response_jsonb);
END IF;
-- Check for the 'results' array
IF response_jsonb->'results' IS NULL OR jsonb_typeof(response_jsonb->'results') != 'array' THEN
-- Check for potential Cohere error structure
IF response_jsonb->'message' IS NOT NULL THEN
RAISE EXCEPTION 'Cohere API Error: %', response_jsonb->>'message';
ELSE
RAISE EXCEPTION 'Invalid model response: response does not contain a valid "results" array.';
END IF;
END IF;
-- Loop through the 'results' array (JSONB array indices are 0-based)
FOR i IN 0..jsonb_array_length(response_jsonb->'results') - 1 LOOP
result_item := response_jsonb->'results'->i;
-- Validate individual result item structure
IF result_item IS NULL OR jsonb_typeof(result_item) != 'object' THEN
RAISE WARNING 'Skipping invalid result item at array index %.', i;
CONTINUE;
END IF;
IF result_item->'index' IS NULL OR jsonb_typeof(result_item->'index') != 'number' THEN
RAISE WARNING 'Missing or invalid "index" field in result item at array index %.', i;
CONTINUE;
END IF;
IF result_item->'relevance_score' IS NULL OR jsonb_typeof(result_item->'relevance_score') != 'number' THEN
RAISE WARNING 'Missing or invalid "relevance_score" field in result item at array index %.', i;
CONTINUE;
END IF;
-- Extract values
BEGIN
cohere_index := (result_item->>'index')::INT;
-- Assign values to the output table columns
-- Cohere returns 0-based index, map it to 1-based for consistency
-- with input document array position
index := cohere_index + 1;
score := (result_item->>'relevance_score')::REAL;
RETURN NEXT; -- Return the current row
EXCEPTION WHEN others THEN
RAISE WARNING 'Error processing result item at array index %: %', i, SQLERRM;
CONTINUE; -- Skip this item and continue with the next
END;
END LOOP;
RETURN; -- End of function
END;
$$;
CALL
google_ml.create_sm_secret(
'<SECRET_ID>',
'projects/<PROJECT_NUMBER>/secrets/<SECRET_ID>/versions/latest');
CALL
google_ml.create_model(
model_id => 'cohere-reranker',
model_type => 'reranking',
model_provider => 'custom',
model_request_url => 'https://api.cohere.com/v2/rerank',
model_qualified_name => 'rerank-v3.5',
model_auth_type => 'secret_manager',
model_auth_id => '<SECRET_ID>',
model_in_transform_fn => 'cohere_rerank_input_transform',
model_out_transform_fn => 'cohere_rerank_output_transform'
);
通用模型
本節說明如何註冊任何可透過代管模型供應商 (例如 Hugging Face、OpenAI、Vertex AI、Anthropic 或任何其他供應商) 提供的通用模型端點。本節將提供範例,說明如何註冊在 Hugging Face 上代管的一般模型端點、Vertex AI Model Garden 中的一般gemini-pro
模型,以及claude-haiku
模型端點。
只要輸入和輸出內容採用 JSON 格式,您就可以註冊任何一般模型端點。根據模型端點中繼資料,您可能需要產生 HTTP 標頭或定義要求網址。
如要進一步瞭解預先註冊的通用模型和內建支援的模型,請參閱「支援的型號」。
一般 Gemini 模型
本節說明如何註冊一般 Gemini 模型。
gemini-1.5-pro 模型
由於部分 gemini-pro
模型已預先註冊,您可以直接呼叫模型 ID 來叫用預測。
下列範例使用 Vertex AI Model Garden 中的 gemini-1.5-pro:generateContent
模型端點。
- 使用
psql
連線至資料庫。 - 設定
google_ml_integration
擴充功能。 使用預先註冊的模型 ID 叫用預測:
SELECT json_array_elements( google_ml.predict_row( model_id => 'gemini-1.5-pro:generateContent', request_body => '{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation." } ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
Hugging Face 上的通用模型
以下範例會新增在 Hugging Face 上代管的 facebook/bart-large-mnli
自訂分類模型端點。
- 使用
psql
連線至資料庫。 - 設定
google_ml_integration
擴充功能。 - 將 OpenAI API 金鑰新增為 Secret Manager 的密鑰,用於驗證。如果您已為其他 OpenAI 模型建立密鑰,可以重複使用該密鑰。
呼叫儲存在 Secret Manager 中的密鑰:
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,用於註冊模型端點。SECRET_MANAGER_SECRET_ID
:您建立密鑰時在 Secret Manager 中設定的密鑰 ID。PROJECT_ID
:您的 Google Cloud 專案 ID。VERSION_NUMBER
:密鑰 ID 的版本號碼。
呼叫建立模型函式,註冊
facebook/bart-large-mnli
模型端點:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'hugging_face', model_request_url => 'REQUEST_URL', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');
更改下列內容:
MODEL_ID
:您定義的模型端點專屬 ID,例如custom-classification-model
。模型端點需要這個模型 ID,才能生成嵌入內容或叫用預測功能。REQUEST_URL
:新增自訂文字嵌入和通用模型端點時的模型專屬端點,例如https://api-inference.huggingface.co/models/facebook/bart-large-mnli
。MODEL_QUALIFIED_NAME
:模型端點版本的完整名稱,例如facebook/bart-large-mnli
。SECRET_ID
:您在先前的google_ml.create_sm_secret()
程序中使用的密鑰 ID。
Anthropic 通用模型
以下範例會新增 claude-3-opus-20240229
模型端點。
模型端點管理功能提供註冊 Anthropic 模型所需的標頭函式。
- 使用
psql
連線至資料庫。 建立並啟用
google_ml_integration
擴充功能。Secret Manager
- 將不記名權杖新增為 Secret Manager 的密鑰,以進行驗證。
呼叫儲存在 Secret Manager 中的密鑰:
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,用於註冊模型端點。SECRET_MANAGER_SECRET_ID
:您建立密鑰時在 Secret Manager 中設定的密鑰 ID。PROJECT_ID
:您的 Google Cloud 專案 ID。VERSION_NUMBER
:密鑰 ID 的版本號碼。
呼叫建立模型函式,註冊
claude-3-opus-20240229
模型端點。CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'anthropic', model_request_url => 'REQUEST_URL', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', generate_headers_fn => 'google_ml.anthropic_claude_header_gen_fn');
更改下列內容:
MODEL_ID
:您定義的模型端點專屬 ID,例如anthropic-opus
。模型端點需要這個模型 ID,才能生成嵌入內容或叫用預測功能。REQUEST_URL
:新增自訂文字嵌入和通用模型端點時的模型專屬端點,例如https://api.anthropic.com/v1/messages
。
驗證標頭
使用
google_ml.anthropic_claude_header_gen_fn
預設標頭產生函式,或建立標頭產生函式。CREATE OR REPLACE FUNCTION anthropic_sample_header_gen_fn(model_id VARCHAR(100), request_body JSON) RETURNS JSON LANGUAGE plpgsql AS $$ #variable_conflict use_variable BEGIN RETURN json_build_object('x-api-key', 'ANTHROPIC_API_KEY', 'anthropic-version', 'ANTHROPIC_VERSION')::JSON; END; $$;
更改下列內容:
ANTHROPIC_API_KEY
:Anthropic API 金鑰。ANTHROPIC_VERSION
(選用):要使用的特定模型版本,例如2023-06-01
。
呼叫建立模型函式,註冊
claude-3-opus-20240229
模型端點。CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'anthropic', model_request_url => 'REQUEST_URL', generate_headers_fn => 'google_ml.anthropic_claude_header_gen_fn');
更改下列內容:
MODEL_ID
:您定義的模型端點專屬 ID,例如anthropic-opus
。模型端點需要這個模型 ID,才能生成嵌入內容或叫用預測功能。REQUEST_URL
:新增自訂文字嵌入和通用模型端點時的模型專屬端點,例如https://api.anthropic.com/v1/messages
。
詳情請參閱如何叫用一般模型端點的預測結果。