Com a transformação de método único (SMT, na sigla em inglês) de inferência de IA, é possível receber inferências em mensagens do Pub/Sub de modelos da Gemini Enterprise Agent Platform. Você pode usar seus próprios modelos personalizados implantados em endpoints da Agent Platform ou usar qualquer um dos modelos do Google e de parceiros disponíveis na Agent Platform. As inferências do modelo são adicionadas a cada mensagem, ficando disponíveis para processamento downstream junto com os dados da mensagem original.
Os casos de uso da SMT de inferência de IA incluem:
Enriquecimento em tempo real: adicione contexto, classificações, previsões, sentimentos ou incorporações aos dados de eventos à medida que eles fluem pelo Pub/Sub.
Pipelines de IA simplificados: elimine a necessidade de serviços intermediários para receber inferências de modelos de IA. O Pub/Sub processa a chamada do modelo de IA e enriquece a mensagem com a inferência.
Latência reduzida para pipelines de IA: remova saltos de rede extras na sua arquitetura para reduzir a latência de ponta a ponta.
Controle de fluxo aprimorado: para evitar a sobrecarga dos endpoints de modelo, o Pub/Sub otimiza a taxa de solicitações ao modelo de IA. Para mais informações, consulte Fluxo de mensagens neste documento.
A SMT de inferência de IA é compatível com os seguintes tipos de modelo:
Modelos autoimplantados. Modelos abertos, de parceiros e personalizados implantados em um endpoint público compartilhado ou dedicado da Agent Platform.
Modelos de Model-as-a-Service (MaaS). Modelos oferecidos como um serviço no Model Garden, como o Gemini e o Claude, que não exigem que você gerencie a implantação. Para conferir uma lista de modelos de MaaS compatíveis com o SMT de inferência de IA, consulte Modelos de MaaS compatíveis.
Papéis e permissões necessárias
Para receber as permissões necessárias
para criar um tópico ou uma assinatura com SMTs,
peça ao administrador para conceder a você o
papel do IAM de Editor do Pub/Sub (roles/pubsub.editor) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar um tópico ou uma assinatura com SMTs. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar um tópico ou uma assinatura com SMTs:
-
Crie um tópico:
pubsub.topics.createno projeto -
Criar uma assinatura:
pubsub.subscriptions.createno projeto
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Permissões de conta de serviço
O SMT de inferência de IA usa uma conta de serviço do IAM para chamar o endpoint da Agent Platform. Por padrão, ele usa a conta Agente de serviço do Cloud Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com). Também é possível fornecer sua própria conta de serviço.
A conta de serviço precisa das seguintes permissões no projeto Cloud de Confianceque contém o endpoint da Agent Platform:
aiplatform.endpoints.getaiplatform.endpoints.predict
Para conceder essas permissões, atribua o seguinte papel do IAM à conta de serviço:
Se você estiver usando a conta de serviço Agente de serviço do Cloud Pub/Sub, conceda o papel de Agente de serviço da Vertex AI.
Se você estiver usando uma conta de serviço diferente, conceda o papel de Usuário da Vertex AI.
Processamento de mensagens
Esta seção descreve como o SMT de inferência de IA processa mensagens do Pub/Sub.
Entrada
Os dados da mensagem do Pub/Sub precisam ser uma solicitação para enviar ao modelo de IA, como uma string JSON. Também é possível especificar outros parâmetros do modelo para enviar com cada solicitação. O SMT mescla esses parâmetros com os dados da mensagem e envia o JSON mesclado ao endpoint do modelo.
Por exemplo, se você tiver:
- Dados da mensagem de entrada:
{"messages": [{"role": "user", "content": "Explain photosynthesis"}]} - Parâmetros de SMT:
{"temperature": 0.2}
O payload resultante enviado ao modelo é:
{
"messages": [
{
"role": "user",
"content": "Explain photosynthesis"
}
],
"temperature": 0.2
}
Se um parâmetro especificado na configuração da SMT tiver o mesmo nome de um campo nos dados da mensagem, o valor nos dados da mensagem terá precedência.
A tabela a seguir mostra qual API o SMT chama para receber a inferência, com base no tipo de modelo.
| Implantação do modelo | Tipo de modelo | API |
|---|---|---|
| Autoimplantado | Todos |
rawPredict
|
| Modelo como serviço (MaaS) |
Modelo de fundação do Gemini Exemplo: |
Chat Completions API
|
|
Outros modelos do Gemini Exemplo: |
rawPredict
|
|
| Anthropic, Mistral AI ou AI21 |
rawPredict
|
|
| Todos os outros modelos de MaaS |
Chat Completions API
|
Para formatar corretamente os dados da mensagem e os parâmetros do modelo, consulte a documentação do seu modelo. Por exemplo, para modelos de base do Gemini, consulte Exemplos da API Chat Completions.
Se o aplicativo editor não puder formatar mensagens na estrutura JSON específica exigida pelo modelo (como o formato da API Chat Completions), encadeie uma UDF JavaScript SMT antes da SMT de inferência de IA para pré-processar e formatar a carga útil da solicitação. Para um exemplo, consulte Pré-processar payloads com uma UDF em JavaScript.
Saída
Se a chamada para o endpoint do modelo for bem-sucedida, o SMT vai enriquecer a mensagem original do Pub/Sub com a resposta do modelo. A mensagem enriquecida é uma
string JSON como a seguinte, em que ORIGINAL_MESSAGE
são os dados da mensagem original e INFERENCE_RESULT é
a resposta do modelo:
{
"original_message": { ORIGINAL_MESSAGE },
"model_output": { INFERENCE_RESULT }
}
Fluxo de mensagens
SMTs de tópico:quando você define uma SMT de inferência de IA em um tópico, o Pub/Sub processa as mensagens recebidas da seguinte maneira:
Um aplicativo editor envia uma mensagem para um tópico do Pub/Sub.
A mensagem é enviada ao endpoint do modelo configurado para inferência. A mensagem enriquecida, que contém os dados originais e a inferência do modelo, é gravada no armazenamento interno do Pub/Sub.
O Pub/Sub entrega a mensagem enriquecida a todas as assinaturas anexadas.
SMTs de assinatura:quando você define um SMT de inferência de IA em uma assinatura, o Pub/Sub processa as mensagens recebidas da seguinte maneira:
Um aplicativo editor envia uma mensagem para um tópico do Pub/Sub.
O Pub/Sub entrega a mensagem à assinatura.
A mensagem é enviada ao endpoint do modelo configurado para inferência.
A assinatura envia a mensagem enriquecida para o aplicativo do assinante.
O Pub/Sub otimiza a taxa de solicitações ao modelo de IA para maximizar a capacidade de processamento com base na latência e na cota da sua implantação. Observação: esse recurso não é compatível com a API unary pull.
É possível encadear uma SMT de inferência de IA com uma ou mais SMTs de UDF em JavaScript. Use esse padrão para pré-processar uma mensagem e adequá-la ao formato de entrada esperado do modelo ou pós-processar a saída do modelo antes de ela ser entregue aos assinantes.
Prática recomendada:recomendamos usar SMTs de assinatura em vez de SMTs de tópico para inferência de IA. Se o endpoint do modelo de IA for limitado, as experiências vão ter picos de latência ou ficar indisponíveis. O impacto potencial no pipeline é maior com uma SMT de tópico:
Com uma SMT de tópico, a solicitação de publicação falha, afetando diretamente a disponibilidade do aplicativo do publisher.
Com um SMT de assinatura, o Pub/Sub tenta novamente a entrega, incluindo a execução do SMT, de acordo com a política de repetição da assinatura. Você também pode configurar um tópico de mensagens inativas para lidar com falhas persistentes sem afetar a disponibilidade de ingestão.
Criar um SMT de inferência de IA
As SMTs podem ser configuradas em tópicos ou assinaturas do Pub/Sub.
- As SMTs de tópico são executadas antes que o Pub/Sub armazene a mensagem, e os resultados ficam disponíveis para todos os assinantes.
Os SMTs de assinatura são executados antes da entrega da mensagem, e os resultados estão disponíveis apenas para essa assinatura.
Console
No console Cloud de Confiance , acesse a página Tópicos do Pub/Sub.
Crie um tópico ou uma assinatura.
Para criar um tópico, clique em Criar tópico. A página Criar tópico é aberta.
Para criar uma assinatura:
Clique no nome do tópico em que você quer fazer a inscrição.
Clique em Criar assinatura. A página Adicionar assinatura ao tópico é aberta.
Em Transformações, clique em Adicionar uma transformação.
Em Tipo de transformação, selecione Inferência de IA.
Em Endpoint, insira o nome completo do recurso do endpoint do modelo:
- Modelo autogerenciado:
projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT - Modelo do Model Garden:
projects/PROJECT/locations/LOCATION/publishers/PUBLISHER/models/MODEL_NAME
- Modelo autogerenciado:
Opcional. Selecione uma conta de serviço para usar ao chamar o endpoint da Agent Platform. Para mais informações, consulte Permissões da conta de serviço.
Opcional. No campo Parâmetros, insira os parâmetros do modelo como um objeto JSON. O SMT mescla esses parâmetros com cada mensagem antes de chamar o modelo. Exemplo:
{ "temperature": 0.5, "max_tokens": 1000 }Para criar o tópico ou a assinatura, clique em Criar.
gcloud
Criar um arquivo de definição
Crie um arquivo YAML ou JSON que defina a IA de inferência.
YAML
- aiInference:
endpoint: "ENDPOINT_RESOURCE"
unstructuredInference: {
parameters:
MODEL_PARAMETERS
}
service_account_email: SERVICE_ACCOUNT
JSON
{
"aiInference": {
"endpoint": "ENDPOINT_RESOURCE",
"unstructuredInference": {
"parameters": {
MODEL_PARAMETERS
}
}
"service_account_email": SERVICE_ACCOUNT
}
}
Substitua:
ENDPOINT_RESOURCE: o nome completo do recurso do endpoint do modelo. Use o seguinte formato:
- Modelo autogerenciado:
projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT - Modelo do Model Garden:
projects/PROJECT/locations/LOCATION/publishers/PUBLISHER/models/MODEL_NAME
- Modelo autogerenciado:
MODEL_PARAMETERS: opcional. Parâmetros do modelo, especificados como um objeto JSON. O SMT mescla esses parâmetros com cada mensagem antes de chamar o modelo. Exemplo:
{ "temperature": 0.5, "max_tokens": 1000 }SERVICE_ACCOUNT: opcional. Um e-mail de conta de serviço para usar ao chamar o endpoint. Para mais informações, consulte Permissões da conta de serviço.
Criar um tópico ou uma assinatura
Para criar um tópico, execute o comando
gcloud pubsub topics create.
gcloud pubsub topics create TOPIC_ID \
--message-transforms-file=TRANSFORMS_FILE
Substitua:
- TOPIC_ID: o ID ou nome do tópico que você quer criar.
- TRANSFORMS_FILE: o caminho para o arquivo de definição.
Para criar uma assinatura, execute o comando
gcloud pubsub subscriptions create.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \
--topic=projects/PROJECT_ID/topics/TOPIC_ID \
--message-transforms-file=TRANSFORMS_FILE
Substitua:
SUBSCRIPTION_ID: o ID ou nome da assinatura a ser criada.
PROJECT_ID: o ID do projeto que contém o tópico.
TOPIC_ID: o ID do tópico a ser assinado.
TRANSFORMS_FILE: o caminho para o arquivo de definição.
Validar e testar
Se quiser, valide e teste o SMT configurado antes de criar o tópico ou a assinatura. Para mais informações, consulte estes documentos:
Exemplos
Usar a SMT de inferência de IA
O exemplo a seguir mostra como criar uma assinatura com um SMT de inferência de IA e usá-lo para enviar um comando ao Gemini.
gcloud
Usando um editor de texto, crie um arquivo chamado
ai-smt.yamle cole o texto a seguir:- aiInference: endpoint: projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-3.6-flash unstructuredInference: { parameters: { "max_tokens": 25000 } }Substitua:
- PROJECT_ID: ID do seu Cloud de Confiance projeto.
- LOCATION: o local do endpoint a ser chamado.
Exemplo:
us-central1.
Criar um novo tópico do Pub/Sub
gcloud pubsub topics create TOPIC_IDSubstitua TOPIC_ID pelo nome do tópico a ser criado. Exemplo:
topic-1.Crie uma assinatura com um SMT de inferência de IA.
gcloud pubsub subscriptions create TOPIC_ID-sub \ --ack-deadline=600 \ --topic TOPIC_ID \ --message-transforms-file ai-smt.yamlPublique uma mensagem no tópico. A mensagem contém um comando formatado para a API Chat Completions.
gcloud pubsub topics publish TOPIC_ID --message=$'{ "model":"google/gemini-3.6-flash","messages":[{ "role": "user", "content": "Explain how AI works in a few words" }] }'Receber uma mensagem da assinatura.
gcloud pubsub subscriptions pull TOPIC_ID-subSe a chamada para a Agent Platform for bem-sucedida, a mensagem será enriquecida com a saída do comando.
Pré-processar payloads com uma UDF em JavaScript
Se o aplicativo editor emitir texto bruto, registros ou payloads de eventos em vez do JSON estruturado exigido pelos modelos de IA (como o formato de conclusão de chat compatível com a OpenAI), você poderá encadear uma UDF JavaScript SMT antes da SMT de inferência de IA. A UDF atua como uma camada de tradução, transformando a mensagem bruta no formato esperado pelo modelo.
O exemplo de UDF em JavaScript a seguir mostra como pré-processar uma mensagem que contém um comando de texto em uma solicitação de API Chat Completions compatível com o Gemini 3.6 Flash:
/**
* Pre-processes a message containing a text prompt into a
* Chat Completions API request compatible with Gemini 3.6 Flash.
*/
function prepareGeminiRequest(message, metadata) {
// Assuming the incoming message data is a raw text prompt
const promptText = message.data;
const chatRequest = {
"model": "google/gemini-3.6-flash",
"messages": [
{
"role": "user",
"content": promptText
}
]
};
// Replace the message data with the stringified JSON request
message.data = JSON.stringify(chatRequest);
return message;
}
Também é possível encadear uma UDF JavaScript de pós-processamento após a SMT de inferência de IA para extrair campos específicos da resposta do modelo antes de entregá-la aos assinantes.
Modelos de MaaS compatíveis
A tabela a seguir lista os modelos de Model-as-a-Service (MaaS) que o Google testou com a SMT de inferência de IA e que são conhecidos por serem compatíveis. Essa lista está sujeita a mudanças à medida que os modelos são descontinuados ou novos modelos de MaaS são adicionados.
| Modelo | API chamada |
|---|---|
google/gemini-3.6-flash |
API Chat Completions |
google/gemini-3.5-flash |
API Chat Completions |
google/gemini-3.5-flash-lite |
API Chat Completions |
google/gemini-3.1-flash-lite |
API Chat Completions |
google/gemini-3.1-pro-preview |
API Chat Completions |
google/gemini-3-flash-preview |
API Chat Completions |
google/gemini-3.1-flash-image |
API Chat Completions |
google/gemini-3-pro-image |
API Chat Completions |
google/gemini-2.5-flash-image |
API Chat Completions |
google/gemini-2.5-pro |
API Chat Completions |
google/gemini-2.5-flash-lite |
API Chat Completions |
google/gemini-2.5-flash |
API Chat Completions |
google/gemini-2.0-flash-lite-001 |
API Chat Completions |
google/gemini-2.0-flash-001 |
API Chat Completions |
meta/llama-4-maverick-17b-128e-instruct-maas |
API Chat Completions |
meta/llama-4-scout-17b-16e-instruct-maas |
API Chat Completions |
meta/llama-3.3-70b-instruct-maas |
API Chat Completions |
deepseek-ai/deepseek-r1-0528-maas |
API Chat Completions |
deepseek-ai/deepseek-v3.1-maas |
API Chat Completions |
qwen/qwen3-235b-a22b-instruct-2507-maas |
API Chat Completions |
qwen/qwen3-coder-480b-a35b-instruct-maas |
API Chat Completions |
openai/gpt-oss-20b-maas |
API Chat Completions |
openai/gpt-oss-120b-maas |
API Chat Completions |
google/text-multilingual-embedding-002 |
rawPredict |
google/text-embedding-005 |
rawPredict |
google/text-embedding-large-exp-03-07 |
rawPredict |
google/gemini-embedding-001 |
rawPredict |
google/multimodalembedding |
rawPredict |
anthropic/claude-sonnet-4-6 |
rawPredict |
anthropic/claude-sonnet-4-5 |
rawPredict |
anthropic/claude-sonnet-4 |
rawPredict |
anthropic/claude-opus-4-6 |
rawPredict |
anthropic/claude-opus-4-5 |
rawPredict |
anthropic/claude-opus-4-1 |
rawPredict |
anthropic/claude-opus-4 |
rawPredict |
anthropic/claude-haiku-4-5 |
rawPredict |
mistralai/mistral-ocr-2505 |
rawPredict |
mistralai/mistral-small-2503 |
rawPredict |
mistralai/mistral-medium-3 |
rawPredict |
mistralai/codestral-2 |
rawPredict |
Limitações
Só é permitida uma SMT de inferência de IA por tópico ou assinatura.
Endpoints particulares não são aceitos. Os modelos com implantação própria precisam ser hospedados em endpoints públicos da Agent Platform.
O endpoint global só é compatível com modelos de base do Gemini. Para outros modelos, use um endpoint regional.
O Pub/Sub não valida os dados da mensagem de entrada. Você é responsável por garantir que o formato dos dados esteja correto.
A transformação envia uma solicitação de inferência por mensagem do Pub/Sub. O agrupamento em lote do lado do cliente não é realizado.
Não é possível fazer inferências em lote assíncronas.
A inferência não pode levar mais de 60 segundos. Se exceder 60 segundos, a tentativa de entrega vai expirar e o Pub/Sub vai tentar de novo, até a duração de retenção de mensagens configurada e as configurações da política de repetição. Se a tentativa expirar, a mensagem será encaminhada para o tópico de mensagens inativas, se houver um configurado.
Modelos sem suporte
A SMT de inferência de IA não é compatível com os seguintes modelos de MaaS. Muitos desses modelos têm versões autogerenciadas disponíveis que você pode usar.
deepseek-ai/deepseek-ocr-maasdeepseek-ai/deepseek-v3.2-maasgoogle/gemini-embedding-2-previewgoogle/lyria-002google/lyria-3-clip-previewgoogle/lyria-3-pro-previewgoogle/veo-3.1-fast-generate-001google/veo-3.1-generate-001intfloat/multilingual-e5-large-instruct-maasintfloat/multilingual-e5-small-instruct-maasminimaxai/minimax-m2-maasmoonshotai/kimi-k2-thinking-maasqwen/qwen3-next-80b-a3b-instruct-maasqwen/qwen3-next-80b-a3b-thinking-maaszai-org/glm-4.7-maaszai-org/glm-5-maas
Restrições regionais
As seguintes restrições se aplicam aos SMTs de inferência de IA com base na região do endpoint da Agent Platform.
Se um SMT de inferência de IA for definido em um tópico, a região do endpoint precisará estar dentro das regiões permitidas pela política de armazenamento de mensagens do tópico.
Essa restrição também se aplica a SMTs de assinatura se a restrição da política da organização Aplicar regiões em trânsito a mensagens do Pub/Sub estiver em vigor.
Se um SMT de inferência de IA for definido em uma assinatura de exportação, a região do endpoint precisará estar na região do recurso associado:
- Para uma assinatura do BigQuery, a região da tabela de destino.
- Para uma assinatura de armazenamento, a região do bucket do Cloud Storage.
Se uma solicitação de publicação for feita para uma região diferente da região do endpoint, o Pub/Sub vai redirecionar automaticamente a solicitação para a região do endpoint.
Se você extrair de uma assinatura com um SMT de inferência de IA e a solicitação de envio for feita para uma região diferente da região do endpoint, o Pub/Sub vai rejeitar a solicitação. Recomendamos usar um endpoint de localização para assinaturas de extração. Essa restrição se aplica ao pull de streaming e ao pull unário.
Quando uma assinatura por push tem um SMT de inferência de IA, ela envia mensagens da região do endpoint. Se ocorrer uma violação de restrição regional, o Pub/Sub vai parar de enviar mensagens dessa assinatura.
Solução de problemas
Nesta seção, você encontra dicas de solução de problemas para o SMT de inferência de IA.
Erros de SMT de tópicos. Se a inferência falhar quando a mensagem for publicada, toda a solicitação de publicação vai falhar. As informações de erro são retornadas ao cliente da editora.
Erros de SMT de assinatura. Se a inferência falhar quando a mensagem for entregue (por exemplo, devido à indisponibilidade prolongada do modelo, esgotamento sustentado da cota ou erros de argumento inválido), a mensagem original e não modificada será encaminhada para o tópico de mensagens inativas configurado. Isso garante que nenhum dado seja perdido. A mensagem encaminhada inclui um atributo
CloudPubSubDeadLetterSourceSMTErrorMessagecom os detalhes da falha no SMT. Recomendamos configurar um tópico de mensagens inativas ao usar SMTs em uma assinatura.Erros de inferência de modelo. Se a inferência falhar e retornar um erro, verifique o seguinte:
Verifique se o endpoint configurado está correto.
Verifique se os dados da mensagem do Pub/Sub contêm uma solicitação de inferência válida para seu modelo.
Verifique se todos os parâmetros do modelo são válidos.
A inferência pode falhar por outros motivos, como problemas de conectividade.
Erros de permissão ou endpoint. Se a conta de serviço configurada perder a permissão para o endpoint ou se o endpoint for excluído, a SMT vai falhar.
Cotas e limites
Além das cotas e limites do Pub/Sub, a SMT de inferência de IA está sujeita às cotas e aos limites de taxa do endpoint da Agent Platform. O controle de fluxo integrado do Pub/Sub ajusta automaticamente a taxa de solicitações para evitar sobrecarregar o endpoint, mas ela não pode exceder a cota do modelo.
O tamanho da mensagem transformada final, incluindo a mensagem original e a saída da inferência, precisa ser menor que o limite de tamanho da mensagem do Pub/Sub. Se a mensagem transformada exceder o limite, a transformação vai falhar.