Recursos de IA já fazem parte da maioria dos produtos: um assistente de chat na página de ajuda, uma busca com IA dentro da loja, descrições de produto geradas, um painel de recomendações. Cada um deles pode responder de forma diferente dependendo de onde o usuário está, e essas diferenças raramente aparecem quando a equipe testa a partir do escritório. Se o seu produto atende vários mercados, verificar a saída da IA por país deve ficar ao lado do seu trabalho de IA e machine learning e dos seus testes de release, e não depois de uma reclamação vinda de um mercado.
Este guia mostra por que a saída da IA muda de um país para outro, o que verificar, como fazer as requisições de teste parecerem as de um usuário local e como comparar respostas que nunca são iguais palavra por palavra.
Por que a saída da IA muda de um país para outro
A maior parte das diferenças vem do produto em volta do modelo, não do modelo em si:
- Localização como contexto. Muitos assistentes acrescentam ao prompt o país ou a cidade do usuário, lidos a partir do IP. Uma consulta errada gera uma resposta confiante para o mercado errado.
- Roteamento regional. As requisições podem ir para outro modelo, outra versão ou outro endpoint conforme a região, muitas vezes por motivos de residência de dados. Dois mercados podem rodar versões diferentes do modelo no mesmo dia.
- Feature flags. Recursos de IA costumam ser lançados país por país. Um botão que funciona em um mercado pode estar ausente ou quebrado em outro.
- Regras de políticas e compliance. Regras locais sobre saúde, finanças, eleições ou idade podem acionar recusas ou avisos apenas em alguns países.
- Recuperação. Quando o assistente busca na web, em uma central de ajuda ou em um catálogo de produtos, normalmente busca com a região do usuário, então os fatos e os produtos que ele cita mudam.
A primeira e a última dessas causas dependem do IP de onde vem a requisição. É por isso que testar a partir de um único local não as detecta.
O que verificar em cada mercado
Em cada mercado que você atende, verifique o mesmo conjunto de propriedades:
| Verificação | O que pode dar errado |
|---|---|
| Idioma | Respostas em inglês para um usuário no Japão, ou idiomas misturados na mesma resposta |
| Moeda e unidades | Preços em dólares para um usuário alemão, milhas em vez de quilômetros |
| Fatos locais | Prazos de entrega, feriados, regras fiscais ou endereços de lojas errados para aquele país |
| Disponibilidade de recursos | O recurso de IA está oculto, dá erro ou mostra uma mensagem de “não disponível na sua região” |
| Comportamento de políticas | Recusas ou avisos que deveriam valer em um país aparecem em todos, ou o contrário |
| Produtos e fontes | Recomendações ou citações de itens que não são vendidos ou não são relevantes naquele mercado |
| Formatação | Datas, números e endereços no formato local errado |
Várias dessas verificações se sobrepõem às checagens clássicas de página. Nosso guia de QA de localização em escala cobre textos, hreflang e layout; esta lista cobre o que a camada de IA acrescenta.
Testando como um usuário local
A localização normalmente vem do IP, então a requisição de teste precisa sair do mercado. Enviá-la por meio de proxies residenciais segmentados para o país faz o produto aplicar a mesma detecção de região, as mesmas flags e as mesmas políticas que aplica a um usuário real de lá. Faixas de data center costumam ser associadas ao país errado pelas bases de dados de IP, ou colocadas atrás de verificações antibot, o que gera resultados de teste que ninguém naquele mercado veria.
Ajuste também o resto da requisição ao mercado: o cabeçalho Accept-Language, o fuso horário e as configurações de localidade do navegador. Um IP japonês com um navegador em inglês é um usuário diferente de um IP japonês com um navegador em japonês, e vale a pena testar os dois. Nosso artigo sobre como alinhar geolocalização, fuso horário e localidade do proxy explica como manter esses sinais consistentes.
Em um chat com várias interações, mantenha um único IP durante toda a conversa com uma sessão fixa, para que o produto não veja o usuário mudar de lugar entre as mensagens:
customer-USERNAME-country-jp-sid-chat-ja-01-ttl-600:PASSWORD
Um pequeno harness de testes
O harness abaixo envia os mesmos prompts para o seu endpoint de IA a partir de vários mercados e verifica propriedades em vez do texto exato. Substitua o endpoint e as verificações pelos seus.
import requests
GATEWAY = "p.shifter.io:443"
USER, PASS = "USERNAME", "PASSWORD"
ENDPOINT = "https://app.example.com/api/assistant"
MARKETS = {
"de": {"lang": "de-DE", "currency": "€"},
"jp": {"lang": "ja-JP", "currency": "¥"},
"br": {"lang": "pt-BR", "currency": "R$"},
"us": {"lang": "en-US", "currency": "$"},
}
PROMPTS = ["How much is shipping for a 2 kg parcel?", "Recommend a laptop under my budget."]
RUNS = 3
def ask(country, lang, prompt, run):
proxy = f"http://customer-{USER}-country-{country}-sid-ai-{country}-{run}-ttl-600:{PASS}@{GATEWAY}"
r = requests.post(ENDPOINT, json={"message": prompt},
headers={"Accept-Language": lang},
proxies={"http": proxy, "https": proxy}, timeout=60)
return r.status_code, r.json().get("answer", "") if r.ok else ""
for country, m in MARKETS.items():
for prompt in PROMPTS:
hits = 0
for run in range(RUNS):
status, answer = ask(country, m["lang"], prompt, run)
if status == 200 and m["currency"] in answer:
hits += 1
print(country, prompt[:30], f"currency ok in {hits}/{RUNS} runs")
Acrescente uma verificação para cada linha da tabela acima: um detector de idioma para a resposta, uma lista de produtos vendidos em cada mercado, um padrão para a mensagem regional de “não disponível”. Rode cada prompt várias vezes, porque a saída do modelo varia entre execuções; uma verificação que passa em duas de três execuções é um achado, não ruído.
Transformando isso em parte dos testes de release
- Rode o harness depois de cada mudança de modelo, de prompt ou de flag, a partir de todos os mercados, não só da região padrão.
- Mantenha um conjunto fixo de prompts por mercado, escrito por falantes nativos, incluindo as perguntas que os clientes realmente fazem ali.
- Guarde as respostas com país, versão do modelo e horário, para distinguir uma mudança de modelo de uma mudança de roteamento.
- Revise as recusas por país toda semana. Uma taxa de recusa que dispara em um mercado geralmente aponta para uma regra de política ou um endpoint regional.
Se os seus recursos de IA também aparecem nas buscas, o mesmo método por mercado vale para o monitoramento da visibilidade em buscas com IA, em que a pergunta é o que outros assistentes dizem sobre você em cada país.
Resumindo
A saída da IA é local, porque o produto em volta do modelo lê a localização do usuário e age de acordo com ela. Teste cada mercado a partir de um IP residencial naquele mercado, com idioma e localidade correspondentes, mantenha chats com várias interações em um único IP fixo e verifique propriedades como idioma, moeda, fatos locais, disponibilidade e recusas ao longo de várias execuções. Faça isso a cada release, e os bugs regionais de IA deixam de ser algo que os seus clientes descobrem primeiro.