Na primeira semana de março (2023) foi lançada pela OpenAI a mais nova API do ChatGPT.
O modelo gpt-3.5-turbo veio para entregar o que há de melhor nos modelos anteriores (Davinci, Curie, Babbage e Ada), embora não podemos generalizar, pois cada modelo se destina a um objetivo diferente. Por ser otimizado para chat (bate-papo), ele possui menor latência de resposta comparada ao modelo Davinci, responde de forma mais assertiva (em ambiente de chat) e possui um menor custo sobre os tokens quando comparado ao modelo anterior.
Vamos aos testes e para tanto, boa parte da minha inspiração veio do excelente post publicado recentemente aqui no fórum pelo @William_Colen : Como integrar o ChatGPT ao seu chatbot no Blip.
Bom, do que vc vai precisar para testar essa nova API num caso de uso fictício?
Apenas de uma chave de autenticação que pode ser obtida na sua conta na OpenAI, pois estou disponibilizando o fluxo do bot desenvolvido, que é pequeno e bem tranquilo de entender:
botTeste.gpt-3.5-turbo.json (20,8,KB)
O body do request mudou, achei isso interessante, pois vc pode enviar uma simulação de conversa no campo “messages” (anteriormente conhecido como “prompt”) onde vc pode inserir um contexto para que a API entenda o histórico e tenha um pequeno know-how onde se basear para dar algum retorno às dúvidas/comentários do usuário.
Fluxo do bot:
Prompt:
Gerei o seguinte prompt sobre um produto real (gosto pessoal, drone DJI Avata) para o teste:
Convertendo as quebras de linhas, ficou assim:
"Considere a descrição do seguinte produto:\\n\\nNome: Drone DJI Avata.\\nPreço: R$14.499,00 a vista ou até 12x de R$1.208,25 no cartão de crédito, sem juros e com frete grátis.\\nModelo: QF2W4K.\\nPeso de decolagem: Aproximadamente 410g.\\nDimensões (C×L×A): 180×180×80mm.\\nDistância diagonal: 120mm.\\nVelocidade máxima de ascensão: 6m/s (Modo Normal, Modo Esportivo).\\nVelocidade máxima de descensão: 6m/s (Modo Normal, Modo Esportivo).\\nVelocidade máxima: 8m/s (modo Normal), 14m/s (Modo Esportivo) e 27m/s (modo Manual).\\nAltitude máxima de decolagem: 5km.\\nDuração máxima de voo estacionário: Aproximadamente 18 minutos.\\nDistância máxima de voo: 11,6km.\\nResistência máxima ao vento: 10,7m/s (nível 5).\\nAlcance da temperatura de funcionamento: -10°C a 40°C.\\nPotência de transmissão (EIRP): FCC: até 33dBm, CE: até 14dBm e SRRC: até 30dBm.\\nAntenas: Antenas duplas, 2T2R.\\nGNSS: GPS + Galileo + BeiDou.\\nAlcance de precisão em voo estacionário Vertical: ±0,1m (com posicionamento visual) e ±0,5m (com posicionamento por GNSS).\\nAlcance de precisão em voo estacionário Horizontal: ±0,3 m (com posicionamento visual) e ±1,5 m (com posicionamento por GNSS).\\nCartões SD suportados: microSD (com até 256 GB).\\nCartões microSD recomendados: SanDisk Extreme U3 V30 A1 32 GB microSDXC, SanDisk Extreme Pro U3 V30 A1 32 GB microSDXC, Kingston Canvas Go!Plus U3 V30 A2 64 GB microSDXC, Kingston Canvas React Plus U3 V90 A1 64 GB microSDXC, Kingston Canvas React Plus U3 V90 A1 128 GB microSDXC, Kingston Canvas React Plus U3 V90 A1 256 GB microSDXC, Samsung PRO Plus U3 V30 A2 256 GB microSDXC.\\nArmazenamento interno: 20GB."
Criando o payload:
Uma breve explicação sobre o novo campo “messages” e seus “papéis (role)”:
Entenda, nesse primeiro momento, o seguinte:
- “System”: É vc como DEV que vai instruir a IA sobre o que ela é no fluxo conversacional, o contexto em que ela está inserida e como ela deve responder ou se comportar;
- “Assistant”: a própria IA, mas utilizada para contextualizar algum retorno que possivelmente o bot deu ao usuário dentro do histórico conversacional. Para o nosso exemplo aqui, esse campo não foi utilizado, porém é algo importante que deve ser explorado em outros testes.
- “User”: a conversa do usuário no fluxo conversacional. Dúvidas, comandos etc.
Criando a API Request:
Lembrando que a API para o gpt-3.5-turbo é esta, tendo um “/chat/” em sua URI:
https://api.openai.com/v1/chat/completions
Extração do texto (resposta da IA) do response com JS:
Exemplo de response:
Meus testes:
Tentei forçar um desconto, para saber qual seria a reação:
Essa nova API abre portas para inúmeras possibilidades. Você pode, por exemplo, enviar todo um histórico conversacional para a IA, usando o campo “messages” do request, passando as falas do bot no role “assistant” e as falas do usuário no role “user”, ao final, fazer uma pergunta já com o contexto definido e aguardar a resposta.
Peço desculpas se não aprofundei o assunto. Fiz o post tarde da noite e já estava bem cansado. Qualquer dúvida, estamos por aí nos comentários! Sucesso na sua implantação!!!