Alguém perguntou como e quando tomar um antidepressivo comum, se antes ou depois das refeições, e o que ele contém. Perguntou em russo. A interface estava em turco. O motor em Auto respondeu com uma recusa pré-formatada — em inglês. Instruído a responder em russo, recusou de novo, em russo. Um minuto depois, a conversa foi apagada. Qualquer outro assistente responde a essa pergunta, e a pessoa tinha razão em esperar o mesmo.
Uma conversa apagada, quatro defeitos.
Informação não é aconselhamento
Para que serve um medicamento, como se toma, o que contém, se precisa de receita — isso é o folheto informativo, público e documentado. O prompt de sistema agora diz isso com clareza: responde, acrescenta uma linha a remeter para um profissional na decisão pessoal, e continua a recusar o que deve ser recusado — overdose, autoagressão, formas de contornar uma receita. Alargar o que passa a ter resposta não alargou o que é permitido; deu nome ao silêncio no meio, onde um modelo pequeno andava a inventar a sua própria política.
Uma recusa é uma resposta
A regra segundo a qual as respostas seguem o idioma da mensagem estava longe do fim de um prompt longo, e um modelo de recusa é a resposta com mais probabilidade de a ignorar. A regra é agora repetida onde um modelo lê por último, e o idioma da interface só serve de critério de desempate para um número nu ou um link. Uma pergunta em russo num ecrã em turco tem resposta em russo, e é recusada em russo, se for o caso.
Havia uma causa mais profunda por baixo. A parte do servidor que transmite uma resposta em streaming corre isolada do pedido, e a cultura do pedido não a acompanhava até lá — pelo que cada intervenção em streaming corria no idioma do próprio servidor, e as cerca de vinte mensagens de sistema que um streaming pode emitir saíam também nesse idioma. A cultura é agora capturada no início e reaplicada dentro do executor. Todos os clientes de streaming, tanto na web como no telemóvel, também passam a enviar o seu idioma com o pedido, o que três dos quatro não faziam.
Uma resposta vazia é uma falha com um código de estado melhor
Um motor devolvia por vezes uma resposta concluída mas sem nada dentro. A app interpretava isso como um fim de intervenção limpo e mostrava um marcador de posição a dizer que as ferramentas tinham terminado. Passa agora a ser tratado como qualquer outra falha antes do primeiro token: em Auto, um motor irmão assume a intervenção; numa escolha explícita, vês um erro honesto e localizado. Os motores que faziam isto com mais frequência saíram do conjunto Auto — o mesmo teste que tinha retirado uma classe de modelos no início do verão, aplicado à mesma evidência.
Não há depois
"Envio daqui a uns minutos" é algo que uma pessoa diz. Uma intervenção de chat não pode: tudo o que não for produzido agora nunca vai chegar, e a promessa é uma falha disfarçada de frase educada. As respostas que prometiam um depois são agora repetidas até entregarem na própria intervenção, nos vinte e nove idiomas que a app fala, e também no balão do assistente, tal como na conversa.
Nada disto são melhorias de modelo. São a canalização à volta do modelo, construída para o obrigar a cumprir as promessas que a interface já faz.