Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Automação de Testes para IA

Olá.

Apenas introduzindo, sou um desenvolvedor com 3 anos de experiência e com proficiência em TypeScript, Node e React. Estou desenvolvendo um sistema que integra com a OpenAI. Dependendo da resposta de um usuário, eu espero que a OpenAI realize uma determinada ação. Essa ação pode ter outras ações que a compõem. Um exemplo seria realizar um pedido em uma pizzaria, pode ser necessário listar o cardápio, listar formas de pagamento, etc.

A minha dúvida é como garantir, conforme eu for adicionando funcionalidades e alterando o prompt, que a OpenAI continuará chamando as ações corretamente? Ou seja, como eu implemento a automação de testes para uma IA?

Dados adicionais: Estou utilizando a funcionalidade "function calling" da OpenAI com o modelo "gpt-4o-mini".

1 resposta
solução!

Bom dia Lucas! Tudo bem com você?

Realmente, trabalhar com integração de IA em sistemas robustos é um desafio. Como a IA possui um certo nível de imprevisibilidade, ou seja, não tem respostas exatas a todo momento, ela pode, por exemplo, responder Margherita na primeira vez que for perguntada sobre o nome de uma pizza verdadeiramente italiana, e Marinara na segunda vez. A primeira dica que recomendo, é que você sempre mantenha seus prompts detalhados, com regras e exemplos claros. Uma boa estrutura de prompt seria:

  • Contexto
  • Objetivo
  • Restrições
  • Exemplo de resultado esperado por você

Sobre os testes, lidar com a imprevisibilidade é o maior problema, mas, podemos mitigá-lo com algumas abordagens, como:

  • Como não podemos testar diretamente a IA, podemos criar testes unitários para as funções que a OpenAI chama. Com isso, uma vez chamadas corretamente, as funções executam conforme o esperado.
    test('listarCardapio retorna itens corretos', () => {
      const cardapio = listarCardapio();
      expect(cardapio).toContain('Pizza Margherita');
      expect(cardapio.length).toBeGreaterThan(0);
    });
    
  • Podemos criar mocks de teste com as respostas da OpenAI para simular diferentes cenários. Isso permite testar como seu sistema reage a várias respostas sem depender da API real.
    jest.mock('openai-api', () => ({
      createCompletion: jest.fn().mockResolvedValue({
        choices: [{ message: { function_call: { name: 'listarCardapio' } } }]
      })
    }));
    
  • Uma outra opção é implementar testes que simulam conversas completas, verificando se as ações corretas são chamadas em sequência.
    test('fluxo de pedido de pizza completo', async () => {
      const chatbot = new Chatbot();
      await chatbot.processMessage("Quero fazer um pedido");
      expect(chatbot.getLastAction()).toBe('listarCardapio');
      await chatbot.processMessage("Quero uma pizza margherita");
      expect(chatbot.getLastAction()).toBe('adicionarAoPedido');
    });
    

Mesmo seguindo por um desses caminhos, será necessário de tempos em tempos ir ajustando e aprimorando o fluxo, e isso porque até mesmo a function calling pode sofrer alterações, já que hoje em dia as grandes Big Techs de IA têm feito modificações quase que diariamente para aprimorar os produtos. Espero que essas dicas te ajudem de alguma forma no seu trabalho.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓