Cambio é um produto de swap com IA. A IA também é mantida sob um controle deliberadamente curto. Este post é a lista explícita do que a IA é responsável, do que a IA não tem permissão para tocar e o raciocínio por trás de cada linha em ambas as listas.
O post âncora desta série definiu o que "swap com IA" significa na Cambio em termos gerais: um analisador mais um explicador, com todas as decisões tomadas por código determinístico. Este post é a lista explícita. Do que a IA é realmente responsável? Do que ela não tem permissão para tocar? Por que essas fronteiras específicas? Se você se lembrar de uma coisa de toda esta série, a estrutura abaixo é o que você deve lembrar.
A lista "faz"
Existem quatro tarefas pelas quais a IA na Cambio é responsável. Todas são conversacionais. Todas são limitadas.
1. Analisar intenção em linguagem natural em campos estruturados
Quando você digita "trocar 0.3 BNB por USDT na BSC" no composer, a IA faz parte da pilha de análise que traduz essa string em uma solicitação estruturada: categoria=Troca, de=BNB, redeDe=BSC, para=USDT, redePara=BSC, quantidade=0.3. A maioria das análises é bem-sucedida na camada de regex sem que a IA seja invocada. A IA lida com os casos em que a mensagem é formulada de forma estranha, contém erros de digitação, mistura linguagem natural com abreviações ou é ambígua sobre qual campo está faltando.
2. Fazer perguntas esclarecedoras quando campos estiverem faltando
Se a mensagem for analisada como "trocar 100 USDT por BTC" sem rede especificada para USDT — que pode ser na Tron, Ethereum, BSC ou Solana — a IA gera a pergunta de acompanhamento. Ela não escolhe silenciosamente uma rede. Ela não assume a mais popular. Ela pergunta, em linguagem clara, na thread da conversa.
3. Narrar a cotação quando ela chegar
Depois que a cotação volta, a IA gera uma explicação curta dela em palavras. A narração se limita a fatos do objeto estruturado da cotação e nunca repete um número — todos os valores ficam no card da cotação. Ela não enfeita, não opina sobre se você deve aceitar e não inventa comparações.
4. Retornar respostas prontas para a categoria Ajuda
Quando o usuário faz uma pergunta da categoria Ajuda — "Como a taxa de rede é mostrada?", "Quais são os limites deste par?", "Quanto tempo leva uma troca?" — a IA mostra uma resposta pré-escrita de uma lista selecionada. As respostas são fixas. Elas não variam por usuário, por forma de perguntar, por horário do dia nem pelo que temos vontade de dizer naquela hora. A IA associa a pergunta à resposta certa; ela não gera a resposta.
A lista "não faz"
Estas são as coisas que a IA não tem permissão para fazer, mesmo quando poderia tentar plausivelmente. Cada uma é uma escolha deliberada com uma razão específica.
1. Escolher a rota
O caminho da cotação é determinístico: verificar se o par é atendido, pedir à rota de execução selecionada que cote o seu valor exato, anexar a taxa de rede informada e os valores de referência datados e devolver a cotação. Cada etapa é código que roda do mesmo jeito todas as vezes com as mesmas entradas. A IA recebe o objeto da cotação como entrada estruturada; ela não pode influenciar o que a cotação contém.
2. Guardar chaves ou assinar transações
A IA não tem nenhum caminho até os fundos. Você envia suas moedas para o endereço de depósito exibido para a sua ordem, e a rota de execução selecionada faz o pagamento. A IA não tem uma API para pedir assinaturas ou movimentar fundos, e não tem acesso a chaves. A criação da ordem e o pagamento ficam a cargo de código determinístico e da rota de execução, nunca do modelo.
3. Buscar preços
Os preços vêm da cotação que a rota de execução selecionada dá para o seu valor exato. A IA não chama esse serviço. Ela não interpreta dados de mercado. Ela não prevê para onde o preço vai. Se você perguntar no composer 'o que o BTC vai fazer amanhã', a categoria Help retorna uma resposta pronta dizendo que não fazemos previsões de preço e indica recursos externos.
4. Definir políticas
O preço da Cambio (0.38% na maioria das rotas), a lista de rotas disponíveis, o mínimo e o máximo de cada rota e as regras de triagem — tudo isso fica em código determinístico. A IA não os consulta, não os substitui e não os interpreta. Quando uma solicitação fica fora deles (por exemplo, um valor acima do máximo de uma rota), o código a recusa antes mesmo de a IA vê-la.
5. Tomar decisões de segurança
Se um depósito não chega a tempo, a ordem expira por regras determinísticas. Se um pagamento não pode ser concluído, o caso é tratado por código e por pessoas, não pelo modelo. Se nenhuma rota de execução cota um par, a solicitação é recusada. A IA é informada desses resultados (para que o explicador possa descrevê-los em linguagem simples), mas não toma nenhuma das decisões por trás deles.
Por que essas fronteiras específicas
Três razões. São as mesmas três razões toda vez que apertamos o escopo de IA na Cambio.
Verificabilidade
Um usuário que quer conferir uma cotação da Cambio pode chamar a API pública em api.cambio.one para o mesmo par e valor e obter uma cotação calculada pelo mesmo código, sem IA no processo. A API pública não aciona nenhum modelo de linguagem. Se a IA estivesse no caminho de decisão, essa verificação seria impossível — um modelo de linguagem produz saídas não reproduzíveis mesmo com a mesma entrada.
Confiabilidade
Modelos de linguagem falham. Modelos de ponta ocasionalmente têm interrupções prolongadas — incidentes de provedor, problemas de capacidade, limitação de taxa regional, versões de modelo sendo descontinuadas. Se nosso roteador dependesse da IA para escolher rotas, toda interrupção de modelo seria uma interrupção da Cambio. Ao isolar a IA na superfície conversacional, podemos degradar graciosamente: quando o serviço do modelo está lento, o composer volta para análise de palavras-chave e narração determinística com modelos. A troca ainda acontece. Usuários na Cambio no meio de um incidente de um provedor de modelo nem sequer notarão, a menos que olhem atentamente para o estilo de resposta do composer.
Responsabilidade
Quando uma troca tem um resultado incomum — o usuário recebe um valor diferente do esperado, um par é rejeitado quando eles achavam que deveria ser suportado, uma troca leva mais tempo do que o estimado — precisamos ser capazes de responder à pergunta "por quê" do usuário. Com código determinístico, o "por quê" é sempre respondível: esta regra disparou, aqui está o caminho do código, aqui está o recibo. Com IA no caminho da decisão, "por quê" se torna "porque o modelo disse", o que não é uma resposta aceitável para um usuário que perdeu dinheiro ou tempo em uma troca.
Os casos de área cinza
Vale a pena ser explícito sobre os casos em que poderíamos ter dado mais escopo à IA e escolhemos não fazê-lo.
Quando um valor é ambíguo — digamos que o usuário digita "trocar um pouco de BNB por USDT" — não deixamos a IA inferir "um pouco". Ela pede um valor. Consideramos definir como padrão uma pequena fração da troca recente típica do usuário, mas inferir intenção sobre fundos é exatamente o tipo de utilidade plausível da IA que cria acidentes.
Quando um par não é suportado — por exemplo, o usuário pede um par que nenhuma rota de execução atende — não deixamos a IA sugerir o par alternativo 'mais próximo'. Ela retorna a mensagem determinística de 'não suportado' e deixa o usuário escolher. A tentação seria dizer 'que tal BNB?', mas isso passa de esclarecimento para recomendação, e recomendações sobre um produto financeiro são uma mina regulatória em que não vamos pisar.
Quando uma cotação parece incomumente larga — em um par com pouca liquidez, por exemplo — a IA não suaviza a explicação nem acrescenta um motivo por conta própria. Não deixamos a IA acrescentar 'esta taxa está mais larga que o normal porque…' a menos que essa frase exata tenha sido pré-escrita, revisada e aprovada como explicação padrão.
Como isso se parece na prática
Um exemplo prático. O usuário digita "swap 100 USDT por 0.0001 BTC na Ethereum" no composer. Pelas taxas de mercado atuais, 100 USDT valem cerca de 0.0014 BTC — então o usuário está pedindo para receber um décimo do valor justo.
O parser tem sucesso: categoria=Swap, de=USDT, redeDe=Ethereum, para=BTC, redePara=Bitcoin, amountOut=0.0001, direcao=amount-out. O código de política é executado: o caminho Execute calcula o amount-de implícito necessário para esse amount-de-recebimento, que seria cerca de 7 USDT — bem abaixo do mínimo de $1 que o par exige. A política retorna um erro rígido: "Valor abaixo do mínimo para este par (USDT na Ethereum para BTC tem um mínimo de $20, você solicitou ~$7)." A IA recebe o erro e o narra: "Esse valor de recebimento fica abaixo do mínimo de $20 do par. Você poderia tentar um valor de recebimento maior ou um par diferente?"
O que a IA não fez: ela não arredondou silenciosamente o valor para atingir o mínimo, não assumiu que o usuário quis dizer 0.001 BTC, não avisou o usuário que a taxa parecia fora do mercado. O código de política retornou a resposta determinística; a IA a traduziu em uma frase. O usuário sabe exatamente o que aconteceu.
Onde expandiríamos o escopo da IA (e onde resistiríamos)
Olhando para o futuro, existem lugares onde adicionar capacidade de IA melhora o produto sem cruzar para territórios que violam as regras acima.
Análise mais sofisticada de consultas ambíguas — por exemplo, reconhecer "converter" e "trocar" como sinônimos de "swap", suportar frases não em inglês, analisar gírias ("despejar meu BNB em stables"). Todas essas ainda são análises. Elas traduzem a entrada do usuário em campos estruturados. As decisões do roteador permanecem determinísticas.
Suporte multilíngue — executando o mesmo parser/explicador em espanhol, russo e chinês. O roteador não se importa com o idioma que o usuário digitou. O composer se importa. Isso está em nosso roadmap.
Onde não expandiremos o escopo da IA, mesmo quando a tentação crescer: seleção de rota, previsão de preços, decisões de política, decisões de segurança. Essas fronteiras são permanentes. Um post futuro sobre qualquer coisa que pareça a IA decidindo qualquer uma dessas coisas seria uma traição à fronteira de confiança que estabelecemos no lançamento.
Por que essa disciplina importa
IA é um alvo em movimento. Modelos melhoram a cada poucos meses. A categoria de coisas que uma IA pode fazer bem em um contexto de swap se expande continuamente. A pressão para expandir o escopo da IA para acompanhar o que é tecnicamente possível será implacável.
Não cederemos a essa pressão para as partes do sistema que tocam fundos do usuário, segurança do usuário ou política operacional. A IA faz o que está na lista acima. Todo o resto é determinístico. Esse é o contrato. Não surpreenderemos os usuários migrando silenciosamente a tomada de decisão para um modelo e anunciando-o mais tarde.
O próximo post da série aborda especificamente a escolha do modelo — por que escolhemos Gemini 2.5 Flash Lite em vez de GPT-5 ou Claude para os trabalhos de análise e narração, e o que teria que mudar para revisitarmos essa escolha.



