Nesta página, descrevemos como invocar previsões ou gerar incorporações usando um modelo, registrando o endpoint do modelo com o gerenciamento de endpoints de modelo.
Antes de começar
Verifique se a extensão
google_ml_integration
está instalada.Verifique se a flag
google_ml_integration.enable_model_support
está definida comoon
Configurar a extensão
Conecte-se ao banco de dados usando
psql
ou o AlloyDB para PostgreSQL Studio usando o usuáriopostgres
.Opcional: Solicite acesso para interagir com os recursos do mecanismo de consulta de IA do AlloyDB para PostgreSQL (prévia), incluindo suporte para modelos multimodais, modelos de classificação e funções de operador.
Opcional: conceda permissão a um usuário do PostgreSQL que não seja superadministrador para gerenciar metadados do modelo:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
Substitua a seguinte variável:
NON_SUPER_USER
: o nome de usuário do PostgreSQL que não é superusuário.
Verifique se o IP de saída está ativado para acessar modelos hospedados fora da sua VPC, como modelos de terceiros. Para mais informações, consulte Adicionar conectividade de saída.
Configurar a autenticação
As seções a seguir mostram como configurar a autenticação antes de registrar um endpoint de modelo.
Configurar a autenticação para a Vertex AI
Para usar os endpoints de modelo da Vertex AI do Google, adicione permissões da Vertex AI à conta de serviço do AlloyDB baseada no IAM que você usa para se conectar ao banco de dados. Para mais informações sobre a integração com a Vertex AI, consulte Integrar com a Vertex AI.
Configurar a autenticação usando o Secret Manager
Nesta seção, explicamos como configurar a autenticação se você estiver usando o Secret Manager para armazenar detalhes de autenticação de provedores terceirizados.
Esta etapa é opcional se o endpoint do modelo não processar a autenticação pelo Secret Manager. Por exemplo, se o endpoint do modelo usar cabeçalhos HTTP para transmitir informações de autenticação ou não usar autenticação.
Para criar e usar uma chave de API ou um token de autenticação, siga estas etapas:
Crie o secret no Secret Manager. Para mais informações, consulte Criar um secret e acessar uma versão dele.
O caminho secreto é usado na função SQL
google_ml.create_sm_secret()
.Conceda permissões ao cluster do AlloyDB para acessar o secret.
gcloud secrets add-iam-policy-binding 'SECRET_NAME' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
Substitua:
SECRET_NAME
: o nome do secret no Secret Manager.SERVICE_ACCOUNT_ID
: o ID da conta de serviço baseada no IAM no formatoserviceAccount:service-PROJECT_ID@gcp-sa-alloydb.iam.gserviceaccount.com
. Por exemplo,service-212340152456@gcp-sa-alloydb.iam.gserviceaccount.com
.Também é possível conceder esse papel à conta de serviço no nível do projeto. Para mais informações, consulte Adicionar uma vinculação de política do Identity and Access Management.
Configurar a autenticação usando cabeçalhos
O exemplo a seguir mostra como configurar a autenticação usando uma função. A função retorna um objeto JSON que contém os cabeçalhos necessários para fazer uma solicitação ao modelo de embedding.
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;
$$;
Substitua:
HEADER_GEN_FUNCTION
: o nome da função de geração de cabeçalho que você pode usar ao registrar um modelo.API_KEY
: a chave de API do provedor do modelo.
Modelos de incorporação de texto
Nesta seção, mostramos como registrar endpoints de modelo com o gerenciamento de endpoints de modelo.
O gerenciamento de endpoints de modelo é compatível com alguns modelos de embeddings de texto e genéricos da Vertex AI como endpoints de modelo pré-registrados. Você pode usar diretamente o ID do modelo para gerar embeddings ou invocar previsões, com base no tipo de modelo. Para mais informações sobre os modelos pré-registrados compatíveis, consulte Modelos pré-registrados da Vertex AI.
O modelo gemini-embedding-001
está disponível apenas na região us-central1
.
Por exemplo, para chamar o modelo gemini-embedding-001
pré-registrado, use diretamente a função de incorporação:
SELECT
embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Se o cluster do AlloyDB e o endpoint da Vertex AI estiverem em projetos diferentes, defina model_id
como o caminho qualificado do endpoint, por exemplo, projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
.
Da mesma forma, para chamar o modelo gemini-1.5-pro:generateContent
pré-registrado, você pode chamar diretamente o modelo usando a função de previsão:
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';
Para gerar embeddings, saiba como gerar embeddings de texto. Para invocar previsões, saiba como invocar previsões.
Modelos de embedding de texto com suporte integrado
O gerenciamento de endpoints de modelo oferece suporte integrado a alguns modelos da Vertex AI e da OpenAI. Para conferir a lista de modelos com suporte integrado, consulte Modelos com suporte integrado.
Para modelos com suporte integrado, defina o nome qualificado como o nome qualificado do modelo e especifique o URL da solicitação. O gerenciamento de endpoints de modelo identifica automaticamente o modelo e configura funções de transformação padrão.
Modelos de embedding da Vertex AI
As etapas a seguir mostram como registrar modelos da Vertex AI com suporte integrado. O endpoint do modelo gemini-embedding-001
e text-multilingual-embedding-002
é usado como exemplo.
Verifique se o cluster do AlloyDB e o modelo da Vertex AI que você está consultando estão na mesma região.
Chame a função de criação de modelo para adicionar o endpoint do modelo:
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');
Se o modelo estiver armazenado em outro projeto e região que não o cluster do AlloyDB, defina o URL da solicitação como projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID
, em que REGION_ID
é a região em que o modelo está hospedado e MODEL_ID
é o nome qualificado do modelo.
Além disso, conceda o papel de usuário da Vertex AI (roles/aiplatform.user
) à conta de serviço do AlloyDB do projeto em que a instância do AlloyDB reside para que o AlloyDB possa acessar o modelo hospedado no outro projeto.
Modelo de embedding de texto da Open AI
A extensão google_ml_integration
configura automaticamente funções de transformação padrão e invoca chamadas aos
modelos remotos da OpenAI. Para conferir a lista de modelos da OpenAI com suporte integrado, consulte Modelos com suporte integrado.
O exemplo a seguir adiciona o endpoint do modelo text-embedding-ada-002
da OpenAI.
É possível registrar os endpoints de modelo text-embedding-3-small
e text-embedding-3-large
da OpenAI usando as mesmas etapas e definindo os nomes qualificados específicos para os modelos.
- Conecte-se ao banco de dados usando
psql
. - Configure a extensão
google_ml_integration
. - Adicione a chave de API da OpenAI como um secret ao Secret Manager para autenticação.
Chame o secret armazenado no 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');
Substitua:
SECRET_ID
: o ID do secret que você definiu e que é usado posteriormente ao registrar um endpoint de modelo, por exemplo,key1
.SECRET_MANAGER_SECRET_ID
: o ID do secret definido no Secret Manager quando você criou o secret.PROJECT_ID
: o ID do seu Google Cloud projeto.VERSION_NUMBER
: o número da versão do ID do secret.
Chame a função de criação de modelo para registrar o endpoint do modelo
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');
Substitua:
MODEL_ID
: um ID exclusivo para o endpoint do modelo que você define. Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar embeddings ou invocar previsões.SECRET_ID
: o ID do secret usado anteriormente no procedimentogoogle_ml.create_sm_secret()
.
Para gerar embeddings, consulte gerar embeddings de texto.
Modelo de embedding de texto hospedado de forma personalizada
Esta seção mostra como registrar um endpoint de modelo hospedado de forma personalizada, além de criar funções de transformação e, opcionalmente, cabeçalhos HTTP personalizados. Todos os endpoints de modelos hospedados de forma personalizada são compatíveis, não importa onde estejam hospedados.
O exemplo a seguir adiciona o endpoint do modelo personalizado custom-embedding-model
hospedado pelo
Cymbal. As funções de transformação cymbal_text_input_transform
e cymbal_text_output_transform
são usadas para transformar o formato de entrada e saída do modelo no formato de entrada e saída da função de previsão.
Para registrar endpoints de modelos de incorporação de texto hospedados de forma personalizada, siga estas etapas:
Opcional: adicione a chave de API como um secret ao Secret Manager para autenticação.
Chame o secret armazenado no 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');
Substitua:
SECRET_ID
: o ID do secret que você definiu e que é usado posteriormente ao registrar um endpoint de modelo, por exemplo,key1
.SECRET_MANAGER_SECRET_ID
: o ID do secret definido no Secret Manager quando você criou o secret.PROJECT_ID
: o ID do seu Google Cloud projeto.VERSION_NUMBER
: o número da versão do ID do secret.
Crie as funções de transformação de entrada e saída com base na seguinte assinatura para a função de previsão dos endpoints do modelo de embedding de texto. Para mais informações sobre como criar funções de transformação, consulte Exemplo de funções de transformação.
Confira a seguir exemplos de funções de transformação específicas para o endpoint do modelo de embedding de texto
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; $$;
Chame a função de criação de modelo para registrar o endpoint do modelo de embedding personalizado:
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');
Substitua:
MODEL_ID
: obrigatório. Um ID exclusivo para o endpoint do modelo que você define, por exemplo,custom-embedding-model
. Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar embeddings ou invocar previsões.REQUEST_URL
: obrigatório. O endpoint específico do modelo ao adicionar embeddings de texto personalizados e endpoints de modelo genéricos, por exemplo,https://cymbal.com/models/text/embeddings/v1
. Verifique se o endpoint do modelo pode ser acessado por um endereço IP interno. O gerenciamento de endpoints de modelo não é compatível com endereços IP públicos.MODEL_QUALIFIED_NAME
: obrigatório se o endpoint do modelo usar um nome qualificado. O nome totalmente qualificado caso o endpoint do modelo tenha várias versões.SECRET_ID
: o ID do secret usado anteriormente no procedimentogoogle_ml.create_sm_secret()
.
Modelo multimodal com suporte integrado
Integrar com a Vertex AI e instalar a extensão
- Integrar com a Vertex AI.
- Verifique se a versão mais recente do
google_ml_integration
está instalada.Para verificar a versão instalada, execute o seguinte comando:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.3 (1 row)
Se a extensão não estiver instalada ou se a versão instalada for anterior à 1.4.3, atualize a extensão executando os seguintes comandos:
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Se você tiver problemas ao executar os comandos anteriores ou se a extensão não for atualizada para a versão 1.4.3 depois de executar os comandos anteriores, entre em contato com o suporte do AlloyDB.
Depois de verificar se a versão está atualizada, instale a funcionalidade de prévia executando o procedimento
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)
Chamar o modelo para gerar embeddings multimodais
Como o gerenciamento de endpoints de modelo oferece suporte integrado ao modelo multimodalembedding@001
da Vertex AI, é possível chamar o modelo diretamente para gerar embeddings multimodais.
O exemplo a seguir usa o nome qualificado do modelo multimodalembedding@001
como ID para gerar embeddings de imagens multimodais:
- Conecte-se ao banco de dados usando
psql
. - Configure a extensão
google_ml_integration
. Gerar embeddings de imagens multimodais:
SELECT ai.image_embedding( model_id => 'multimodalembedding@001', image => 'IMAGE_PATH_OR_TEXT', mimetype => 'MIMETYPE');
Substitua:
- IMAGE_PATH_OR_TEXT com o caminho do Cloud Storage para a imagem, por exemplo,
gs://cymbal_user_data/image-85097193-cd9788aacebb.jpeg
para traduzir em uma incorporação de vetor ou string base64 da imagem. - MIMETYPE com o tipo MIME da imagem.
Modelos de classificação
Modelos de classificação da Vertex AI
É possível usar os modelos da Vertex AI mencionados em Modelos compatíveis sem registro.
Para saber como classificar os resultados da pesquisa usando um modelo de classificação da Vertex AI, consulte Classificar resultados da pesquisa.
Registrar um modelo de classificação de terceiros
O exemplo a seguir mostra como registrar um modelo de reclassificação da 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'
);
Modelos genéricos
Esta seção mostra como registrar qualquer endpoint de modelo genérico disponível em um provedor de modelos hospedados, como Hugging Face, OpenAI, Vertex AI, Anthropic ou qualquer outro provedor. Esta seção mostra exemplos para registrar um endpoint de modelo genérico hospedado no Hugging Face, um modelo gemini-pro
genérico do Model Garden da Vertex AI e o endpoint do modelo claude-haiku
.
É possível registrar qualquer endpoint de modelo genérico, desde que a entrada e a saída estejam no formato JSON. Com base nos metadados do endpoint do modelo, talvez seja necessário gerar cabeçalhos HTTP ou definir URLs de solicitação.
Para mais informações sobre modelos genéricos pré-registrados e modelos com suporte integrado, consulte Modelos compatíveis.
Modelos genéricos do Gemini
Esta seção mostra como registrar modelos genéricos do Gemini.
Modelo gemini-1.5-pro
Como alguns modelos gemini-pro
são pré-registrados, é possível chamar diretamente o ID do modelo para invocar previsões.
O exemplo a seguir usa o endpoint do modelo gemini-1.5-pro:generateContent
do Model Garden da Vertex AI.
- Conecte-se ao banco de dados usando
psql
. - Configure a extensão
google_ml_integration
. Invoque previsões usando o ID do modelo pré-registrado:
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';
Modelo genérico no Hugging Face
O exemplo a seguir adiciona o endpoint do modelo de classificação
personalizado facebook/bart-large-mnli
hospedado no Hugging Face.
- Conecte-se ao banco de dados usando
psql
. - Configure a extensão
google_ml_integration
. - Adicione a chave de API da OpenAI como um secret ao Secret Manager para autenticação. Se você já tiver criado um secret para outro modelo da OpenAI, poderá reutilizar o mesmo.
Chame o secret armazenado no 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');
Substitua:
SECRET_ID
: o ID secreto que você definiu e que é usado posteriormente ao registrar um endpoint de modelo.SECRET_MANAGER_SECRET_ID
: o ID do secret definido no Secret Manager quando você criou o secret.PROJECT_ID
: o ID do seu Google Cloud projeto.VERSION_NUMBER
: o número da versão do ID do secret.
Chame a função de criação de modelo para registrar o endpoint do modelo
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');
Substitua:
MODEL_ID
: um ID exclusivo para o endpoint do modelo que você define, por exemplo,custom-classification-model
. Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar embeddings ou invocar previsões.REQUEST_URL
: o endpoint específico do modelo ao adicionar incorporação de texto personalizada e endpoints de modelo genéricos, por exemplo,https://api-inference.huggingface.co/models/facebook/bart-large-mnli
.MODEL_QUALIFIED_NAME
: o nome totalmente qualificado da versão do endpoint do modelo. Por exemplo,facebook/bart-large-mnli
.SECRET_ID
: o ID do secret usado anteriormente no procedimentogoogle_ml.create_sm_secret()
.
Modelo genérico da Anthropic
O exemplo a seguir adiciona o endpoint do modelo claude-3-opus-20240229
.
O gerenciamento de endpoints de modelo fornece a função de cabeçalho necessária para registrar modelos da Anthropic.
- Conecte-se ao banco de dados usando
psql
. Crie e ative a extensão
google_ml_integration
.Secret Manager
- Adicione o token do portador como um secret ao Secret Manager para autenticação.
Chame o secret armazenado no 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');
Substitua:
SECRET_ID
: o ID secreto que você definiu e que é usado posteriormente ao registrar um endpoint de modelo.SECRET_MANAGER_SECRET_ID
: o ID do secret definido no Secret Manager quando você criou o secret.PROJECT_ID
: o ID do seu Google Cloud projeto.VERSION_NUMBER
: o número da versão do ID do secret.
Chame a função de criação de modelo para registrar o endpoint do modelo
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');
Substitua:
MODEL_ID
: um ID exclusivo para o endpoint do modelo que você define, por exemplo,anthropic-opus
. Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar embeddings ou invocar previsões.REQUEST_URL
: o endpoint específico do modelo ao adicionar incorporação de texto personalizada e endpoints de modelo genéricos, por exemplo,https://api.anthropic.com/v1/messages
.
Cabeçalho do Auth
Use a função padrão de geração de cabeçalho
google_ml.anthropic_claude_header_gen_fn
ou crie uma.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; $$;
Substitua:
ANTHROPIC_API_KEY
: a chave de API da Anthropic.ANTHROPIC_VERSION
(opcional): a versão específica do modelo que você quer usar. Por exemplo,2023-06-01
.
Chame a função de criação de modelo para registrar o endpoint do modelo
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');
Substitua:
MODEL_ID
: um ID exclusivo para o endpoint do modelo que você define, por exemplo,anthropic-opus
. Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar embeddings ou invocar previsões.REQUEST_URL
: o endpoint específico do modelo ao adicionar incorporação de texto personalizada e endpoints de modelo genéricos, por exemplo,https://api.anthropic.com/v1/messages
.
Para mais informações, consulte como invocar previsões para endpoints de modelos genéricos.
A seguir
- Saiba mais sobre a referência de gerenciamento de endpoints de modelo
- Usar modelos de amostra para registrar endpoints de modelos
- Gerar embeddings multimodais
- Classificar e pontuar resultados da pesquisa para RAG
- Usar linguagem natural em operadores SQL