Antes de começar
Antes de ingerir e gerenciar cardápios usando a API Food Ordering AI Agent, faça o seguinte:
Ative a API Food Ordering AI Agent:
gcloud services enable foodorderingaiagent.googleapis.com --project=PROJECTVerifique se você tem as permissões necessárias do IAM. Conceda o seguinte papel do Identity and Access Management (IAM) ao usuário ou à conta de serviço que interage com a API:
- Administrador do agente de pedidos de comida (
roles/foodorderingaiagent.admin): esse papel oferece acesso total para criar, ler, atualizar e excluir todos os recursos do agente de IA para pedidos de comida, incluindo marcas, lojas e cardápios.
É possível conceder papéis do IAM usando o console do Google Cloud , a ferramenta de linha de comando
gcloudou a API IAM. Para mais informações, consulte Conceder um papel do IAM.Para conceder o papel usando o console Google Cloud :
- No console do Google Cloud , acesse a página IAM.
- Clique em Adicionar.
- Insira o principal (e-mail do usuário ou da conta de serviço).
- Selecione a função Administrador do agente de IA para pedidos de comida.
- Clique em Salvar.
Sem as permissões adequadas, as chamadas de API para criar ou modificar marcas, lojas ou menus são negadas. A função
Food Ordering Agent Viewernão é suficiente para as tarefas descritas neste guia, já que ela concede apenas acesso de leitura.- Administrador do agente de pedidos de comida (
Visão geral
A API Menu do agente de IA para pedidos de comida foi projetada para ser flexível e acomodar várias estruturas de cardápio, desde listas curtas de itens independentes até cardápios complexos com modificadores aninhados e refeições combinadas. A API foi criada com base em alguns conceitos principais:
- Menu:o contêiner de nível superior para todas as entidades ordenáveis.
- Item:representa um produto de nível superior do menu que pode ser pedido, como uma refeição, um prato principal ou qualquer produto que possa ser pedido sozinho. Os
Items podem fazer referência aosModifierGroups. - ModifierGroup:uma coleção de opções
Modifierque podem ser aplicadas a umItemou outroModifier(permitindo o aninhamento). Por exemplo, "Escolha seu acompanhamento", "Adicionar complementos" ou "Selecione o sabor da bebida". - Modificador:uma opção individual em um
ModifierGroup, como "Batata frita", "Queijo extra" ou "Refrigerante". Os modificadores podem ajustar o preço e também ter seus própriosModifierGroups aninhados. - MenuCategory:usado para organizar
Items em seções para exibição e compreensão (por exemplo, "Aperitivos", "Hambúrgueres", "Bebidas").
Principais conceitos e estrutura
Esta seção detalha os principais componentes do esquema da API Menu do agente de IA para pedidos de comida e como eles são estruturados. Entender esses conceitos é fundamental para modelar corretamente os dados do menu.
Itens
Cada item diferente no menu precisa ser definido como um Item. Os principais campos incluem:
id: um identificador exclusivo no menu.display_name: o nome voltado ao cliente.base_price: o preço base do item.modifier_groups: referências aModifierGroups que podem ser aplicadas a este item.category_ids: referências aos IDs deMenuCategorya que este item pertence.availability: especifica quando o item está disponível (por exemplo, por status ou período do dia). O padrão éSTATUS_AVAILABLEse não for especificado.
Modifiers e ModifierGroups
Os modificadores permitem a personalização de itens.
ModifierGroups definem um conjunto de opções, incluindo restrições como seleções mínimas ou máximas. Precisa conter pelo menos umModifier.- Os
Modifiers representam as opções reais. Eles podem ter umprice_adjustmente referenciar recursivamente outrosModifierGroups para personalizações aninhadas. Por exemplo, umItem"Combo de refeição" pode ter umModifierGroup"Escolha sua bebida", e oModifier"Refrigerante" dentro desse grupo pode ter umModifierGroup"Escolha o sabor".
Exemplo 1: coberturas
Um "X-búrguer com bacon" Item pode fazer referência a uma "Cobertura" ModifierGroup. Esse ModifierGroup teria Modifiers como "Mais queijo", "Sem cebola" etc.
Exemplo 2: refeições combinadas (combos)
Alguns menus têm estruturas complexas com várias opções aninhadas, como refeições combinadas ou "combos". Os combos podem ser modelados como um Item com vários ModifierGroups representando os componentes do combo. Por exemplo, um Item "Combo de hambúrguer", que consiste em um prato principal fixo com várias opções de acompanhamento e bebida, pode ser modelado com:
- Um
ModifierGrouppara o lado (por exemplo, "Opções laterais").- Cada opção de lado é modelada como um
Modifier(por exemplo, "Fries", "Salad").- Cada opção de bebida pode fazer referência a
ModifierGroups aninhados (por exemplo, "Opções de gelo", "Tamanho da bebida"), que, por sua vez, faz referência aModifiers (por exemplo, "Sem gelo", "Bebida grande", respectivamente).
- Cada opção de bebida pode fazer referência a
- Cada opção de lado é modelada como um
- Um
ModifierGrouppara a bebida (por exemplo, "Bebidas").- Cada opção de bebida é modelada como um
Modifier.- Cada opção de bebida pode fazer referência a
ModifierGroups aninhados (por exemplo, "Opções de gelo", "Tamanho da bebida"), que, por sua vez, faz referência aModifiers (por exemplo, "Sem gelo", "Bebida grande").
- Cada opção de bebida pode fazer referência a
- Cada opção de bebida é modelada como um
- Um
ModifierGrouppara os acompanhamentos do prato principal. (por exemplo, "Extra Cheese", "Bacon").
Disponibilidade
A mensagem Availability em Items e Modifiers permite especificar:
status:STATUS_AVAILABLE,STATUS_OUT_OF_STOCK, etc.daypart_availability: links para IDs de período do dia específicos se o item estiver disponível apenas em determinados horários (por exemplo, "Cardápio do café da manhã").
Atributos de integração
As mensagens Item, Modifier e ModifierGroup contêm um campo integration_attributes. Esse campo (ItemIntegrationAttributes, ModifierIntegrationAttributes etc.) contém um google.protobuf.Struct chamado custom_integration_attributes. Você pode usar isso para armazenar dados arbitrários de chave-valor, como:
- IDs do seu sistema de ponto de venda (PDV).
- SKUs ou outros códigos internos.
- Qualquer outro metadado necessário para o processamento de pedidos downstream ou integração com PDV.
Esses dados são transmitidos de forma opaca pelo agente de IA.
Rótulos
Você pode usar o campo labels no recurso Menu para anexar metadados aos menus e ajudar na integração e depuração.
Os rótulos são um recurso de conveniência e não afetam o comportamento do agente de IA.
Criação de um menu
Os menus são ingeridos usando a chamada de RPC CreateMenu no MenuService.
Etapas
- Transforme seus dados:converta os dados do menu (do seu PDV, API ou outra fonte) na estrutura definida pela mensagem
google.cloud.foodorderingaiagent.v1beta.Menu. Isso envolve mapear seus itens, modificadores, categorias e preços para os tipos de mensagens de API correspondentes. - Construa o
CreateMenuRequest:- Defina o campo
parent(por exemplo,projects/PROJECT/locations/LOCATION). - Preencha o campo
menucom o objetoMenutransformado. - Opcionalmente, forneça um
menu_id.
- Defina o campo
- Chame a API:envie o
CreateMenuRequestpara o endpointMenuService.CreateMenu. Primeiro, a API higieniza e valida o menu e retorna o objetoMenufinal. - Processar atualizações do menu:a cada atualização dos dados de origem do menu (por exemplo, quando um novo produto é lançado ou quando um produto fica indisponível), um novo
Menuprecisa ser criado refletindo os dados de origem atualizados, seguindo processamento de atualizações do menu.
Orientação para a transformação de dados
A lógica específica para transformar os dados do menu depende do formato e da estrutura do sistema de origem (por exemplo, API de PDV, esquema de banco de dados). Confira uma abordagem geral:
- Exportar dados:obtenha uma exportação completa dos dados do seu cardápio, incluindo todos os itens, modificadores, preços e relações.
- Entidades de mapa:
- Identifique as entidades correspondentes no esquema da API do agente de IA para pedidos de comida para cada elemento nos seus dados de origem. Por exemplo, os "itens de menu" do seu PDV provavelmente serão mapeados para objetos
Item. "Opções de pedido" ou "complementos" serão mapeados paraModifiers eModifierGroups. - Estabeleça relações usando IDs. Por exemplo, vincule
Items aosModifierGroups aplicáveis usando o campo de referênciamodifier_groups.
- Identifique as entidades correspondentes no esquema da API do agente de IA para pedidos de comida para cada elemento nos seus dados de origem. Por exemplo, os "itens de menu" do seu PDV provavelmente serão mapeados para objetos
- Lidar com estruturas aninhadas:se o menu tiver modificadores aninhados (por exemplo, escolher um sabor de bebida para o refrigerante de um combo), modele isso fazendo com que
Modifiers referenciem outrosModifierGroups. - Preencher atributos:preencha campos como
display_name,base_price,price_adjustmenteavailabilitycom base nos dados de origem. - Inclua IDs de PDV:armazene os IDs internos de PDV ou do sistema para cada item, modificador e grupo no campo
custom_integration_attributes. Isso permite traduzir oOrderproduzido pelo agente de volta para a representação de um pedido final ou carrinho em andamento do seu aplicativo. - Scripting:provavelmente será necessário escrever um script (por exemplo, em Python, Node.js, Go) para buscar dados da sua origem, realizar a transformação e chamar o método
CreateMenu. Esse script usa as bibliotecas de cliente Google Cloud para autenticação e interação com a API.
Fluxo de trabalho de transformação conceitual:
Este fluxo de trabalho descreve o processo de transformação de dados de cardápio de um sistema de origem para o formato da API Food Ordering AI Agent:
- Extrair e mapear categorias:
- Identifique categorias ou seções nos dados de origem (por exemplo, "Entradas", "Pratos principais").
- Transforme cada um em um objeto
MenuCategorycom umide umdisplay_nameexclusivos.
- Extrair e mapear itens:
- Identifique os itens vendáveis nos dados de origem.
- Transforme cada um em um objeto
Item, preenchendoid,display_name,base_priceeavailability. - Mapeie cada
Itempara as categorias usando o campocategory_ids. - Armazene identificadores do sistema de origem (como PLU ou SKU) em
item.integration_attributes.custom_integration_attributes.
- Extrair e mapear modificadores:
- Identifique personalizações, opções ou complementos de itens nos seus dados de origem.
- Agrupe opções relacionadas (por exemplo, "Opções de acompanhamento", "Opções de bebida", "Coberturas extras") em objetos
ModifierGroup. Defina regras de seleção mínima e máxima em cadaModifierGroup. - Transforme cada opção individual (por exemplo, "Fries", "Cola", "Extra Cheese") em objetos
ModifiernoModifierGroupapropriado. Preenchaprice_adjustmentse aplicável. - Armazene os identificadores do sistema de origem em
modifier_group.integration_attributes.custom_integration_attributesemodifier.integration_attributes.custom_integration_attributes.
- Estabelecer relações:
- Para cada
Item, preencha o campomodifier_groupscom referências aosids deModifierGroups aplicáveis. - Se um
Modifierpermitir mais personalização (por exemplo, escolher um sabor para um modificador "Refrigerante"), preencha o campomodifier_groupsdele para criar modificadores aninhados.
- Para cada
- Montagem e ingestão:
- Combine todos os objetos
MenuCategory,Item,ModifierGroupeModifiernas listas em uma única mensagemMenu. - Chame a RPC
CreateMenucom a mensagemMenutotalmente montada como entrada.
- Combine todos os objetos
Como lidar com atualizações de cardápio
O menu é imutável. Depois que um menu é criado usando a chamada de RPC CreateMenu, ele não pode ser modificado. Para propagar atualizações em um menu, como mudar preços de itens, modificar opções ou ajustar a disponibilidade, é preciso criar um novo recurso de menu chamando CreateMenu novamente. Cada versão do seu menu precisa ser ingerida como um novo recurso Menu com um menu_id exclusivo.
O processo para ingerir uma nova versão de um cardápio é idêntico ao de ingerir o cardápio pela primeira vez e passa pelas mesmas etapas de higienização e validação. Ao processar pedidos, o comportamento do agente sempre reflete o Menu criado mais recentemente associado ao Store referenciado na configuração da sessão.
Limpeza automática de menus
A API CreateMenu executa automaticamente várias etapas de limpeza para corrigir problemas comuns e garantir que o conteúdo do menu seja representado de forma consistente em toda a API. As validações são aplicadas após essas sanitizações para simplificar a integração do menu para os clientes:
- Disponibilidade padrão:
Items eModifiers sem umAvailability.Statusexplícito são definidos comoSTATUS_AVAILABLE. - Remover entidades não referenciadas:
Modifiers eModifierGroups que não são referenciados de forma transitiva por nenhumItemsão removidos do menu porque não podem ser ordenados. - Descartar grupos de modificadores vazios:os
ModifierGroups que não contêmmodifier_idssão descartados, e todas as referências a eles são removidas.
Validação de menu
Após a higienização, a API valida o menu com um conjunto estrito de regras para garantir que ele esteja bem formado e possa ser usado de maneira confiável pelo agente de IA. Se a validação falhar, a chamada CreateMenu vai retornar um erro detalhando os problemas. As principais validações incluem:
- Campos obrigatórios:garante que todos os campos obrigatórios, como
id,display_nameeavailability.status, estejam presentes. - IDs exclusivos:todos os
Items,Modifiers eModifierGroups precisam ter IDs exclusivos no menu. - Nomes de exibição exclusivos:
- Todos os
Items precisam terdisplay_names exclusivos. - Em qualquer
ModifierGroup, todos osModifiers contidos precisam terdisplay_names exclusivos.
- Todos os
- Integridade referencial:
- Todos os
modifier_group_idsreferenciados porItems ouModifiers precisam estar no menu. - Todos os
modifier_idsreferenciados porModifierGroups precisam estar no menu. - Os modificadores padrão especificados em
ModifierGroupReferenceprecisam existir noModifierGroupreferenciado. - Se um
Modifierusaritem_idpara fazer referência a umItem, esseItemprecisará existir.
- Todos os
- Restrições de grupo de modificadores:
- Os
ModifierGroups não podem ficar em branco. - As contagens mínimas ou máximas de seleção em
ModifierGroupsão verificadas para consistência lógica. - Os níveis
ItemouModifiermodifier_constraintssão validados em relação às restrições de contagem de seleção dosModifierGroups referenciados para garantir que sejam satisfatórios.
- Os
- Profundidade de aninhamento:a profundidade de modificadores aninhados é limitada (por exemplo,
Item->ModifierGroup->Modifier->ModifierGroup->Modifier...) até um máximo de cinco níveis. - Validação de períodos do dia:se os períodos do dia forem usados em
Availability, eles precisarão ser definidos no recursoStoreassociado. - Referências de itens modificadores:
Modifiers que referenciam umItemusandoitem_idnão podem ter campos comodisplay_nameouavailabilitydefinidos, já que eles são herdados doItemreferenciado.
Se alguma dessas regras de validação falhar, o menu não será criado nem atualizado. A mensagem de erro vai fornecer detalhes sobre quais entidades estão causando a violação.
Referência da API
Para detalhes completos sobre todas as mensagens e campos, consulte a Referência de RPC da API do agente de IA para pedidos de comida.
Práticas recomendadas
- IDs exclusivos:verifique se todos os campos
idno escopoMenu(paraItem,Modifier,ModifierGroup,MenuCategory) são exclusivos. - Nomes claros:use
display_names claros e fáceis de entender para os clientes. Forneçadisplay_names distintos para produtos semanticamente diferentes e oriente o agente a fazer a desambiguação de maneira adequada. - Combos de modelos de forma eficaz:modele refeições combinadas como um
ItemcomModifierGroups representando acompanhamentos, bebidas e outras opções, conforme descrito em refeições combinadas. Isso garante que o agente possa orientar corretamente os clientes nas seleções de combos. - Use atributos de integração:armazene todos os identificadores necessários de PDV ou sistema interno no
custom_integration_attributespara facilitar a integração de pedidos. - Gerenciar disponibilidade:mantenha o status
Availabilityatualizado. - Teste exaustivamente:depois da ingestão, teste a compreensão do menu pelo agente com várias combinações de pedidos.