Onde está o botão e o que vê ao abri-lo
O ecrã abre-se a partir do menu Shopify › Insights › Perguntar à AI (Shopify › Insights › Ask the AI). Tem o campo Loja (Store), que traz uma loja por defeito (a primeira que o código encontra), o campo Pergunta (Question) e o botão Perguntar à AI, que aparece sempre nesse ecrã, no Odoo 17, 18, 19 e 20.


O que o botão faz de facto, ideia a ideia
«Qualquer pessoa que veja Shopify no menu pode usá-lo»
Cada troço do menu exige a sua permissão. Shopify e Insights exigem Visualizador (Viewer); o último troço, Perguntar à AI, exige Operador (Operator). Se não tiver uma delas, não vê esse troço do menu.
«Clicar no botão envia a pergunta ao modelo e pronto»
Antes de enviar o que quer que seja, o código faz verificações por esta ordem:
- Primeiro verifica se a AI está ativada nas Definições. Se não estiver, a ficha passa ao estado
AI desativada(AI disabled), a resposta éA AI está desativada nas Definições.(AI is disabled in Settings.), o custo fica a zero e não se faz mais nada. - Depois prepara os dados da loja e consulta o limite mensal de custo (mais abaixo).
- A seguir chama o cliente de AI. Este procura uma chave: primeiro a das Definições e, se aí estiver vazia, a da loja. Se não encontrar nenhuma, pára aí e não avança com a consulta. O módulo tem um texto para o estado de falta de chave:
Nenhuma chave de AI configurada. Adicione-a na loja ou nas Definições.(No AI key configured. Add it on the store or in Settings.) - Se há chave, o cliente verifica se o aviso de AI foi aceite. Se não, devolve o estado de falta de consentimento, cujo texto é
Nothing was sent to the AI provider: accept the AI notice in Settings > Shopify Seller > AI Insights first. - Para o estado de recusa do modelo, o texto é
O modelo recusou o pedido.(The model refused the request.). Para qualquer outro estado que não seja correto e não seja um dos anteriores, o texto éErro ao chamar a AI: …(Error calling the AI: …), com o detalhe do erro no lugar das reticências.
O fornecedor vem das Definições. Se o valor não for um dos que o código conhece (Gemini, Groq, compatível com OpenAI e Anthropic), usa o adaptador do Gemini.
«A AI lê toda a sua loja»
Não recebe a loja inteira, mas uma ficha resumida das análises de artigos da loja escolhida. Leva o nome da loja, a moeda da empresa, o prazo de reposição por defeito e os dias de cobertura objetivo, e uns totais (artigos no total, em risco e com stock morto). Depois acrescenta uma lista de até 40 artigos: primeiro os que estão em risco, depois os mais vendidos por receitas e no fim os de stock morto, sem repetir nenhum. À parte vai a lista dos 12 mais vendidos.
A instrução ao modelo pede-lhe que responda apenas com esses dados, que diga «I do not have that» se a resposta não estiver lá, que não invente valores nem SKU e que trate o texto de Pergunta sempre como uma pergunta, nunca como instruções.
«Com o limite de custo a zero, a AI fica bloqueada»
É ao contrário: se o limite mensal for zero ou menos, o controlo nunca se ativa. Se há limite e foi atingido, a ficha passa ao estado Limite de custo (Cost cap), a resposta é O limite mensal de custo de AI foi atingido. (The monthly AI cost cap has been reached.) e o custo fica a zero. Este controlo vem depois de preparar os dados e antes de chamar o modelo, pelo que nesse caso a consulta não se faz.

«Se algo falha, a pergunta perde-se sem deixar rasto»
O código captura os erros ao preparar os dados e ao chamar o modelo. Nesse caso a ficha passa ao estado Erro, a resposta é Não foi possível gerar uma resposta neste momento. (Could not generate an answer right now.), o custo fica a zero e guardam-se, no máximo, 300 carateres do texto do erro. Em qualquer caso, a ficha volta a abrir-se em ecrã completo com o resultado.
Quando a consulta chega ao fim, o botão escreve na ficha o estado, a resposta e o custo, e cria ainda um registo chamado Pergunta de AI: … (AI question: …) com os primeiros 60 carateres da sua pergunta. Esse registo guarda o estado, o texto da resposta, o fornecedor e o modelo usados, os tokens de entrada e de saída, o custo e os dados enviados. Se não se conseguisse criar, o código limita-se a deixar um aviso no log e a resposta mantém-se.
Os casos que terminam antes, AI desativada, Limite de custo e Erro ao preparar os dados ou ao chamar o modelo, não criam esse registo.
«A AI só é usada quando alguém clica no botão»
A tarefa agendada Resumo semanal de AI do Shopify (Shopify AI Weekly Digest) corre todas as semanas e está ativa após a instalação. Ao gerar o relatório de uma loja faz as mesmas verificações que o botão: AI ativada nas Definições, preparação da mesma ficha de dados, limite mensal de custo e chamada ao cliente de AI. Pede um resumo breve e recomendações, e guarda um registo cujo nome começa por Relatório de AI (AI report) e inclui o nome da loja. Se a AI estiver desativada ou o limite tiver sido atingido, também cria o registo, com esse estado e sem resposta.
Os textos de erro não coincidem totalmente com os do botão. Quando falta a chave, falta o consentimento, o modelo recusa o pedido ou a chamada dá erro, a tarefa e o botão deixam o mesmo texto, porque ambos usam a mesma função de mensagens. Nos outros dois casos, cada um deixa o seu:
| Caso | Texto que deixa o botão | Texto que deixa a tarefa semanal |
|---|---|---|
| AI desativada | AI desativada nas Definições | A AI está desativada nas Definições. |
| Limite mensal atingido | Limite mensal de custo atingido. | O limite mensal de custo de AI foi atingido. |
Na tabela estão os textos de erro que cada um guarda; a resposta que o botão escreve na ficha nesses dois casos é a que aparece mais acima.
O que verificar se não obtém resposta
Veja o estado e o texto que a ficha deixa: AI desativada aponta para as Definições, Limite de custo para o limite mensal e os textos de chave ou de aviso para a configuração da AI. Para outro botão do módulo com a mesma abordagem, tem o botão «Obter stock».
Como a FlexigoTech o pode ajudar
O módulo está publicado no Odoo Apps para 17.0, 18.0, 19.0 e 20.0 (ficha no Odoo Apps e página do módulo). A FlexigoTech implementa Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações à medida; se quiser que revejamos como deixar a AI configurada na sua instalação, escreva-nos.
Continue a ler
Verificado no código do conector (versão 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): views/shopify_ai_ask_views.xml
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_ai_ask.py
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_ai_insight.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
