1. Introdução
O desenvolvimento moderno da Web oferece uma alternativa às viagens de ida e volta baseadas na nuvem para uso de IA. O Chrome começou a enviar APIs de IA integradas que permitem usar desde pequenos modelos especializados para tradução até modelos de linguagem completos refinados, tudo sem custos de token para você ou seus usuários, executados de forma privada no dispositivo.
Ao mesmo tempo, os agentes de IA oferecem uma nova maneira de os usuários interagirem com aplicativos da Web. Deixar sua experiência na Web pronta para agentes com o WebMCP pode ajudar a reduzir o uso de tokens e fornecer resultados mais precisos do que a atuação tradicional, que exige capturas de tela e raspagem do DOM.
Neste codelab, você vai trabalhar no Mont-Royal Plein Air, um site de e-commerce de equipamentos para atividades ao ar livre. Você vai aprender a criar e integrar APIs de IA e WebMCP integradas para:
- Inferir a intenção do cliente com base no histórico de navegação e criar recomendações dinamicamente usando modelos no dispositivo.
- Expor ferramentas que agentes e assistentes de navegador podem usar para navegar no site, inspecionar produtos e recomendações e gerenciar o carrinho de compras de um usuário.
- (Opcional) Traduza seu site na hora usando modelos especializados pequenos no dispositivo.
- (Opcional) Transforme a pesquisa básica no site em um agente no local usando as mesmas ferramentas que os agentes externos.
O que você vai aprender
- Como usar a API Prompt e aplicar a saída JSON estruturada dela.
- Como registrar ferramentas e estratégias do WebMCP para pensar na composição e granularidade das ferramentas.
- (Opcional) Como usar a API Translator para traduzir conteúdo rapidamente usando um modelo especialista no dispositivo.
- (Opcional) Como chamar as ferramentas do WebMCP por conta própria.
Pré-requisitos
- Uma Conta do Google pessoal e o Google Cloud.
- A versão 150 ou mais recente do Google Chrome ou os canais Canary, Dev ou Beta com as flags
#enable-webmcp-testinge#devtools-webmcp-supportativadas. - Conhecimento de HTML, CSS, JavaScript e TypeScript.
- Familiaridade com o esquema JSON.
2. Configurar o projeto
Conta do Google
Se você ainda não tiver uma Conta do Google pessoal, crie uma.
fazer login no console do Google Cloud
Faça login no console do Google Cloud usando uma Conta do Google pessoal.
Ativar faturamento
Para configurar uma conta de faturamento pessoal, ative o faturamento no console do Cloud.
Criar um projeto (opcional)
Se você não tiver um projeto atual que queira usar neste laboratório, crie um novo aqui.
Abra o editor do Cloud Shell
- Clique neste link para navegar diretamente até o editor do Cloud Shell.
- Se for necessário autorizar em algum momento hoje, clique em Autorizar para continuar.

- Se o terminal não aparecer na parte de baixo da tela, abra-o:
- Clique em Visualizar.
- Clique em Terminal.

Definir o projeto
- No terminal, defina o projeto usando este comando:
Exemplo:gcloud config set project [PROJECT_ID]gcloud config set project lab-project-id-example
- Você vai ver a seguinte mensagem:
Updated property [core/project].
Configuração local e do espaço de trabalho
- No terminal (ou terminal do Cloud Shell), clone o repositório do projeto e navegue até o diretório dele:
git clone https://github.com/GoogleChromeLabs/codelabs mont-royal cd mont-royal - Navegue até a pasta
ecommerce-ai-enhancements/starter:cd ecommerce-ai-enhancements/starter - Instale as dependências usando
pnpm:pnpm install - Inicie o servidor de desenvolvimento local:
Abra o navegador empnpm devhttp://localhost:5173para acessar a loja Mont-Royal Plein Air.
(Opcional) Instalar a extensão do inspetor WebMCP
Para facilitar o trabalho com o WebMCP, instale o WebMCP Model Context Tool Inspector (em inglês). Depois de instalar, você precisa receber uma chave da API Gemini para usar:
- Acesse o AI Studio.
- Clique no botão Criar chave de API para gerar uma nova API Gemini vinculada ao projeto que você configurou anteriormente nesta etapa.
- Abra o inspetor de contexto do modelo WebMCP (ele é aberto no painel lateral) e clique no botão Atualizar chave de API Gemini.
- Cole a chave de API no pop-up e salve.
Essa extensão tem um agente básico que pode usar o WebMCP, permitindo que você teste seu site por ele em vez de chamar as ferramentas do WebMCP diretamente pelo DevTools.
3. Modelos de IA integrados na Web
O que é a API Prompt?
A API Prompt oferece aos aplicativos da Web acesso direto a um modelo de linguagem pequeno e multimodal que é executado totalmente no dispositivo do usuário. Como a inferência é executada localmente:
- Latência zero na nuvem: sem viagens de ida e volta na rede ou filas de servidores de back-end.
- Privado por padrão: os comandos e qualquer contexto transmitido a eles nunca saem do dispositivo.
- Custo zero: a inferência é executada no hardware do cliente sem faturamento de tokens ou despesas de hospedagem na nuvem.
- Funciona off-line: funciona de forma confiável mesmo sem uma conexão de Internet ativa.
No Chrome, a API Prompt é acessada pela interface global LanguageModel.
// 1. Set your expected inputs and outputs. This is multimodal, so you can
// include other types here, too
const languages = {
expectedInputs: [{type: "text", languages: ["en"]}],
expectedOutputs: [{type: "text", languages: ["en"]}],
}
// 2. Check availability. Always pass in your expected inputs and outputs,
// as some models may only support some inputs and outputs
const availability = await LanguageModel.availability(languages);
// 'available', 'downloading', or 'unavailable'
// 3. Create an isolated session with system prompt and language constraints
const session = await LanguageModel.create({
...languages,
// Optional: add initial context to your session, like a system prompt
initialPrompts: [
{
role: 'system',
content: 'You are an expert outdoors sales assistant...'
}
]
});
// 4. Define your expected output as JSON Schema
const schema = {
//...
}
// 5. Prompt the model (supports plain text or structured models)
const result = await session.prompt('Recommend a 3-season tent footprint.', {
responseConstraint: schema,
});
Exercício 1: recomendações com base na jornada
Os sites de e-commerce geralmente têm carrosséis ou vendas adicionais de itens "comprados juntos com frequência". Para um site de atividades ao ar livre, pode ser mais útil criar essas recomendações com base no histórico de navegação.
Para isso, você vai criar um pipeline de recomendação de três estágios:
- Criador de perfil de jornada: usando a API Prompt, você vai analisar a linha do tempo cronológica de navegação do cliente para tentar inferir a verdadeira intenção de aventura do usuário.
- Consulta de produto: com base nessa intenção, você fará uma solicitação de API para um back-end de produto falso e receberá itens relacionados.
- Recomendação de produtos: você vai transmitir esses produtos de volta à API Product para classificá-los, retornando os cinco itens mais coesos com o que o usuário está visualizando.
Tarefa 1.1: inicialização da API Prompt
Em vez de inicializar a API Prompt individualmente sempre que quiser usá-la, você centraliza as chamadas em um único arquivo, memorizando a criação por solicitação do sistema para reduzir o tempo de inicialização de várias chamadas para o mesmo agente.
Navegue até o arquivo src/ai/prompt-api.ts e inspecione getPromptSession() nas linhas 27 a 58:
export async function getPromptSession(
systemPrompt: string = '',
options: { signal?: AbortSignal } = {}
): Promise<LanguageModel>
- Reutilizar uma sessão base armazenada em cache. Já existe um mapa de cache na linha 21,
baseSessions, com chaveamento por comando do sistema. Reutilizar modelos de base em vez declone()novos reduz o tempo de inicialização e herda a configuração principal sem que cada sessão interfira uma na outra. Retorne o clone. Os chamadores podem interagir com ele, incluindodestroy(), livremente sem descartar sua base em cache. - Detecte recursos da API. Detecta recursos se a API existe e gera um erro se não existir.
- Declare suas modalidades e idiomas. Os modelos integrados podem oferecer suporte à entrada multimodal. Você precisa declarar os modos e idiomas que quer oferecer. Todo o conteúdo que você envia para o LLM está em inglês.
- Verifique a disponibilidade antes de criar qualquer coisa. Mesmo que a API exista, talvez não haja um modelo que atenda aos seus requisitos. Verifique se existe um. Se não for, gere um erro. Se ele ainda não tiver sido baixado, informe o progresso do download.
- Crie a sessão. Defina as opções para criar uma nova sessão da API Prompt e o prompt do sistema, se incluído.
Tarefa 1.2: implementar o criador de perfil de jornada
Acesse o arquivo src/ai/journey-profiler.ts e inspecione a função de destino nas linhas 42 a 100:
export async function inferJourneyProfile(
context: ProfilerInputContext,
catalogMap: ReadonlyMap<string, Product>
): Promise<JourneyProfile>
- Use a função da Tarefa 1 para gerar uma nova sessão de comandos.
- Envie uma solicitação ao modelo com o texto fornecido, usando
journeyProfileSchemacomo o esquema JSON para o retorno estruturado. - Analise a saída do comando e remova as categorias de destino duplicadas.
- Substitua as strings fixadas no código pelos resultados reais do seu comando.
- Destrua a sessão quando ela terminar para liberar memória.
Tarefa 1.3: implementar o reclassificador de sinergia
Acesse o arquivo src/ai/synergy-reranker.ts e inspecione a função de destino nas linhas 30 a 71:
export async function rankComplementaryGear(
profile: JourneyProfile,
candidates: readonly Product[],
currentProduct?: Product | null,
cartProducts?: readonly Product[],
limit: number = 5
): Promise<readonly RecommendedItem[]>
- Use a função da Tarefa 1 para gerar uma nova sessão de comandos.
- Comande o modelo com o texto do comando e o esquema gerado.
- Analise a saída do comando.
- Retorne a lista de recomendações montada usando
assembleRecommendations. - Destrua a sessão quando ela terminar para liberar memória.
Verificar o pipeline de recomendação
- Abra o Chrome para
http://localhost:5173/catalog/tent-mont-tremblant-3p. - Role a tela para baixo até a seção Para você.
- Observe como os cinco cards complementares são atualizados para refletir combinações de kits inteligentes (como pegadas no chão, colchonetes e estacas leves) em vez de produtos aleatórios.
- Abra o console do Chrome DevTools para inspecionar a duração da execução em tempo real das duas etapas de inferência.
(Opcional) Tarefa 1.4: Descoberta avançada de modelos de IA integrados
Há vários outros modelos de IA integrados disponíveis, incluindo o modelo especialista da API Translator. Os componentes nesta base de código já estão conectados a um serviço que detecta mudanças no idioma atual e pede a tradução. Sua tarefa é conectar tudo.
Navegue até o arquivo: src/ai/translator.ts
Inspecione a função de destino createTranslator nas linhas 29 a 45:
export async function createTranslator(
targetLang: SupportedLanguage
): Promise<Translator | null>
- Verifique se a API Translator é compatível e se o idioma de destino não é o inglês (o conteúdo está em inglês por padrão).
- Crie um par de idiomas, do inglês para o idioma de destino, e verifique se ele está disponível.
- Crie opções para o tradutor e anexe um monitor para mostrar o progresso do download do modelo.
- Retorna o tradutor inicializado.
Em seguida, inspecione a função de destino translate nas linhas 50 a 58:
export async function translate(
text: string,
targetLang: SupportedLanguage
): Promise<string>
- Verifique se há um tradutor disponível com
getCachedTranslatortransmitindotargetLang. Se não houver, retorne o texto limpo. - Se houver, use o tradutor para traduzir o texto limpo.
Navegue até o arquivo: src/ai/translator.ts
Inspecione a função de destino render nas linhas 204:
export async function translate(
text: string,
targetLang: SupportedLanguage
): Promise<string>
- Ativar o componente do seletor de idioma
4. Usar o WebMCP para melhorar a experiência do agente
O que é o WebMCP?
À medida que os usuários começam a usar agentes autônomos e de navegação conjunta, é importante que os sites se adaptem. Tradicionalmente, os agentes dependem da atuação (fazendo capturas de tela e raspando o DOM e as árvores de acessibilidade) para determinar como interagir com um site. Isso é lento, frágil, propenso a erros e desperdiça tokens do usuário.
O WebMCP ajuda a resolver isso permitindo que os desenvolvedores forneçam ferramentas diretamente aos agentes para interagir com a página em que estão. Os agentes que oferecem suporte a elas podem usar essas ferramentas como uma ferramenta no seu arnês de programação, com entradas e valores de retorno claros e estruturados ditados por você.
// Register a tool directly on document.modelContext
document.modelContext.registerTool({
name: 'get_product_specs',
title: 'Get Product Specs',
description: 'Retrieve technical specifications for the active product.',
inputSchema: {
type: 'object',
properties: {
// ...
},
},
annotations: {
readOnlyHint: true, // Informs the agent this tool causes no side-effects
},
execute: async (input) => {
return {
weight: '1.8 kg',
capacity: '3 persons',
seasons: '3-season',
};
},
});
Quando um agente se conecta à página da Web, ele consulta document.modelContext.getTools(). Cada ferramenta registrada expõe:
name: identificador de ferramenta programática usado pelos agentes ao executar ferramentas (por exemplo,'get_product_specs').title: rótulo de exibição legível para humanos usado por inspetores e interfaces de agentes (por exemplo,'Get Product Specs').description: descrição em texto simples informando ao modelo o que a ferramenta faz e quando chamá-la. É assim que um agente determina se deve chamar a ferramenta. Portanto, seja descritivo.inputSchema: esquema JSON que define argumentos aceitos.annotations: dicas de comportamento, como{ readOnlyHint: true }para ferramentas somente leitura que não causam efeitos colaterais no estado.execute: função assíncrona executada quando a ferramenta é invocada.
Tarefa 2.1: ferramentas de recomendação e produtos
Comece registrando uma ferramenta para permitir que os agentes recuperem as recomendações que você acabou de criar no exercício anterior.
Navegue até o arquivo: src/components/product/ForYouSection.ts
Inspecione registerWebMCPTools() nas linhas 71 a 94:
private registerWebMCPTools(): void
- Verifique se o WebMCP é compatível.
- Se estiver, registre a ferramenta.
- Escolha um título e uma descrição que incentivem um agente a escolher a ferramenta. Pense em engenharia de comandos.
- Não há entrada, então inclua um esquema JSON de objeto vazio.
- Esta é uma ferramenta somente leitura.
- Na função "execute", use
recommendationStorepara receber o conjunto atual de recomendações e retorne o ID do produto atual e o conjunto de recomendações de produtos. - Adicione e capture um sinal de interrupção para que ele não gere um erro. Isso garante que a ferramenta seja removida corretamente quando o componente for desmontado.
Navegue até o arquivo: src/views/ProductView.ts
- Repita o mesmo processo para registrar uma ferramenta
get_current_product, desta vez retornando o produto completo e as recomendações.
Tarefa 2.2: ferramentas da gaveta do carrinho
Navegue até o arquivo: src/components/cart/CartDrawer.ts
Inspecione registerWebMCPTools() nas linhas 83 a 114:
private registerWebMCPTools(): void
- Registre a ferramenta
view_cart:
- O
inputSchemaprecisa ser um objeto com uma única opção booleana,openDrawer. - Ele precisa ser somente leitura.
- Leia a entrada como parte da função
execute, decida se o carrinho vai aparecer ou ser ocultado, atualize orecommendationStoree retorne o resumo do carrinho.
- Registre a ferramenta
manage_cart:
- O
inputSchemaprecisa ser um objeto comitems, que é uma matriz de objetos com oproductID,add,removee a enumeraçãoupdateactione o número inteiroquantity. - A função
executeprecisa transmitir itens parathis.updateCart.
Tarefa 2.3: ferramenta de troca de idioma
Leve o WebMCP ainda mais longe expondo uma ferramenta de linguagem a agentes externos.
Navegue até o arquivo: src/components/navigation/LanguagePicker.ts
Inspecione registerWebMCPTools() nas linhas 61 a 63:
private registerWebMCPTools(): void
- Registre a ferramenta
switch_language:- O
inputSchemaprecisa ter uma propriedadelanguageque seja uma enumeração deSUPPORTED_LANGUAGE_CODES. - A função
executeprecisa chamarthis.switchLanguagecom o idioma fornecido.
- O
Tarefa 2.4: armazenar ferramentas de navegação
Permitir que agentes autônomos naveguem pela loja, acessem páginas de produtos, naveguem por categorias ou iniciem pesquisas.
Navegue até o arquivo: src/components/navigation/SiteHeader.ts
Inspecione registerWebMCPTools() nas linhas 155 a 171:
private registerWebMCPTools(): void
- Verifique se o WebMCP é compatível.
- Registre a ferramenta
search:- O esquema de entrada usa uma string
query. - Em
execute, chamethis.search(input?.query).
- O esquema de entrada usa uma string
- Registre a ferramenta
go_to_catalog:- O esquema de entrada aceita
activity(enumeração deACTIVITIES) ecategory(enumeração dePRODUCT_CATEGORIES) opcionais. - Em
execute, chamethis.goToCatalog(input?.activity, input?.category).
- O esquema de entrada aceita
- Registre a ferramenta
get_categories_and_activities:- Ferramenta somente leitura sem parâmetros de entrada.
- Em
execute, chamethis.getCategoriesAndActivities().
- Registre a ferramenta
go_to_product:- O esquema de entrada exige uma string
productId. - Em
execute, chamethis.goToProduct(input?.productId).
- O esquema de entrada exige uma string
Verificar com o inspetor WebMCP
- Recarregue
http://localhost:5173/catalog/tent-mont-tremblant-3pno Chrome e acesse a página do produto. - Abra o Chrome DevTools > Application > WebMCP.
- As ferramentas do WebMCP vão aparecer:
get_recommendations,get_current_product,view_cart,manage_cart,switch_language,search,go_to_catalog,get_categories_and_activitiesego_to_product. - Clique em um deles para conferir os detalhes e parâmetros.
- Escolha um com parâmetros, selecione alguns e clique em Executar ferramenta para ver como funciona.
- (Opcional) Se você instalou e configurou o WebMCP Model Context Tool Inspector, abra-o. Ele será aberto no painel lateral do Chrome. Use a interface de chat para pedir ao agente que execute uma ação que você acredita que deva chamar uma das suas ferramentas e veja como ele responde.
5. (Opcional) Como criar um agente no local
Chamada de ferramentas do WebMCP in-page
As ferramentas do WebMCP não são apenas para extensões de navegador externas ou bots de terceiros. Seu próprio aplicativo pode chamá-las diretamente. Ao consultar document.modelContext.getTools(), seu código do lado do cliente pode descobrir e executar ferramentas de forma dinâmica.
Você pode usar isso para criar um assistente de compras com IA no local, transformando a barra de pesquisa em uma ferramenta de descoberta de produtos com base na entrada de linguagem natural. Em vez de escrever um código imperativo personalizado para coordenar vários filtros de atributo, a barra de pesquisa pode entregar consultas em linguagem natural à API Prompt, que decide quais ferramentas WebMCP in-page invocar.
Para descobrir e invocar uma ferramenta WebMCP em JavaScript:
// getTools() returns a Promise — it must be awaited.
const tools = await document.modelContext.getTools();
const tool = tools.find(t => t.name === 'list_items');
const json = await document.modelContext.executeTool(tool, args);
const result = JSON.parse(json); // executeTool resolves with a DOMString
Tarefa 3.1: ferramentas de refinamento da barra lateral
Exponha cada faceta da barra lateral do catálogo ao WebMCP para que os agentes (e seu assistente de pesquisa na página) possam ativar/desativar filtros de maneira programática.
Cada componente de faceta em src/components/facets/ já fornece um método auxiliar na classe e um esquema de entrada exportado em src/utils/filter-schemas.ts:
- Em
src/components/facets/ActivityFacet.ts:- Registre
activity_filterusandoactivityFilterSchema. - Em
execute, chamethis.filterActivity(input?.activity, input?.selected).
- Registre
- Em
src/components/facets/CategoryFacet.ts:- Registre
category_filterusandocategoryFilterSchema. - Em
execute, chamethis.filterCategory(input?.category, input?.selected).
- Registre
- Em
src/components/facets/ConditionFacet.ts:- Registre
condition_filterusandoconditionFilterSchema. - Em
execute, chamethis.filterCondition(input?.condition, input?.selected).
- Registre
- Em
src/components/facets/PriceFacet.ts:- Registre
price_filterusandopriceFilterSchema. - Em
execute, chamethis.filterPrice(input?.priceRange || input?.bracket, input?.selected).
- Registre
- Em
src/components/facets/WeightFacet.ts:- Registre
weight_filterusandoweightFilterSchema. - Em
execute, chamethis.filterWeight(input?.weightRange || input?.bracket, input?.selected).
- Registre
- Em
src/components/facets/RatingFacet.ts:- Registre
rating_filterusandoratingFilterSchema. - Em
execute, chamethis.filterRating(input?.minRating || input?.rating, input?.selected).
- Registre
- Em
src/components/facets/SearchFacet.ts:- Registre
keyword_filterusandokeywordFilterSchema. - Em
execute, chamethis.updateKeyword(input?.keyword).
- Registre
Verifique se há suporte para WebMCP e transmita { signal: this.signal } com .catch(() => {}), conforme aprendido na etapa 2.
Tarefa 3.2: ferramentas de visualização do catálogo
Agora registre as ferramentas de listagem no nível do catálogo, redefinição de filtro e pesquisa semântica em document.modelContext.
Navegue até o arquivo: src/views/CatalogView.ts
Inspecione registerWebMCPTools() nas linhas 125 a 140:
private registerWebMCPTools(): void
- Verifique se o WebMCP é compatível.
- Registre a ferramenta
list_items:- Ele não recebe parâmetros de entrada e é somente leitura.
- A função
executeprecisa chamarthis.getItemsSummary().
- Registre a ferramenta
reset_filters:- Ele não usa parâmetros de entrada.
- A função
executeprecisa chamarthis.resetFilters().
- Registre a ferramenta
semantic_catalog_filter:- Use
semanticCatalogFilterSchema. - A função
executeprecisa chamarinterpretAndApplySemanticFilter(input.query).
- Use
Tarefa 3.3: orquestrar o agente de filtro semântico
Agora é hora de conectar tudo. Essa tarefa transforma a pesquisa em um pipeline semântico que alimenta a ferramenta semantic_catalog_filter:
Navegue até o arquivo: src/ai/catalog-semantic-filter.ts
Inspecione prewarmSemanticFilterSession() nas linhas 84 a 88:
export async function prewarmSemanticFilterSession(): Promise<void>
- Verifique se
warmSessionjá existe. Se sim, retorne antes. - Faça o pré-aquecimento de uma sessão da API Prompt com
SEMANTIC_FILTER_SYSTEM_PROMPTusandogetPromptSession()e armazene emwarmSession. Encapsule em um blocotry/catchpara que a criação da pesquisa ainda possa fazer um fallback normalmente se o pré-aquecimento falhar.
Inspecione inferSearchFacets() nas linhas 93 a 134:
async function inferSearchFacets(
searchTerm: string,
cachedJourney: JourneyProfile | null
): Promise<{ parsed: SemanticFilterResponse; cacheHit: boolean }>
- Reivindique a sessão pré-aquecida de
warmSession, se disponível, e redefinawarmSessionparanullou crie uma nova sessão usandogetPromptSession(SEMANTIC_FILTER_SYSTEM_PROMPT). - Envie um comando ao modelo com
promptText, usandosemanticFilterSchemacomoresponseConstraint. - Analise o JSON retornado, armazene o resultado analisado no cache persistente com
cacheKeye destrua a sessão em um blocofinally.
Inspecione applyFacetsViaWebMCP() nas linhas 139 a 270:
async function applyFacetsViaWebMCP(
searchTerm: string,
parsed: SemanticFilterResponse
): Promise<{ appliedFilters: SemanticFilterResult['appliedFilters']; toolsExecuted: string[] }>
- Descubra as ferramentas registradas em
document.modelContextusandoawait document.modelContext.getTools(). - Redefina os filtros para começar do zero chamando
await executeFacet('reset_filters', {}). - Aplique simultaneamente os atributos ativos usando
await Promise.all(facetTasks).
Inspecione interpretAndApplySemanticFilter() nas linhas 272 a 316:
export async function interpretAndApplySemanticFilter(
searchTerm: string
): Promise<SemanticFilterResult>
- Infire atributos de pesquisa chamando
inferSearchFacets(searchTerm, cachedJourney). - Aplique as facetas inferidas ao catálogo usando
applyFacetsViaWebMCP(searchTerm, parsed).
Verificar o agente in-page
- Navegue para
http://localhost:5173/catalog. - Na barra de pesquisa na parte de cima, digite:
"lightweight 3 season tent for wet hikes" - Assista a API Prompt analisar a solicitação, invocar
activity_filter(Caminhada),category_filter(Tendas) econdition_filter(Molhado), reduzindo instantaneamente o catálogo para equipamentos correspondentes sem cliques manuais em caixas de seleção.
6. O que você aprendeu
Parabéns! Você transformou um aplicativo de e-commerce em uma experiência inteligente e proativa, totalmente alimentada por IA no dispositivo e APIs padrão da plataforma Web.
O que você criou:
- API Prompt no dispositivo: sintetizamos linhas do tempo de navegação do usuário com
LanguageModelpara gerar contextoJourneyProfileem tempo real e criamos um mecanismo de sinergiarankComplementaryGearusando esquemas JSON estruturados (responseConstraint). - Ferramentas de componentes do WebMCP: ferramentas modulares e encapsuladas registradas em componentes da interface (
get_recommendations,get_current_product,view_cart,manage_cart) viadocument.modelContext. - Arquitetura de encaminhamento de agente: execução de ferramentas testada e verificada usando a extensão Chrome WebMCP Inspector.
- Agente in-page no local: ferramentas orquestradas do lado do cliente diretamente no navegador para ativar a pesquisa multifacetada no catálogo em linguagem natural na barra de pesquisa do cabeçalho do local.
- Modelos especializados de IA no dispositivo: exploramos a tradução dinâmica no dispositivo usando o
Translator.
Principais aprendizados:
- Latência zero e alta privacidade: modelos no dispositivo, como o Gemini Nano, eliminam chaves de API de nuvem, latência de rede e preocupações com exfiltração de dados.
- Saídas estruturadas são essenciais: usar esquemas JSON com
responseConstrainttransforma a geração de texto criativo em uma lógica de aplicativo confiável e com segurança de tipo. - O WebMCP prepara a Web para agentes de IA: o registro de ferramentas diretamente no DOM capacita recursos assistivos internos e agentes de navegador autônomos externos com ações verificadas e deterministas.
- Deixe o modelo propor, não executar: restringir o modelo a um
enumdas suas ferramentas registradas e enviar o resultado por conta própria mantém o comportamento de agente auditável e evita que ele invente ações.