Quarta-feira de Cinzas, 10:12 PM:
— "Você acha que eu consigo integrar o ChatGPT com a Alexa até meia-noite?", perguntei.
— "Sim. Já te ajudo aí", respondeu meu amigo, me enviando instruções que pediu à IA.
Ri e comecei.
Mini maratona
Desempoerei minha conta da AWS, "rascunhei" (lógico que foi o ChatGPT) um código e subi para o Amazon Lambda Function.
Não curti que tem que subir os node modules também, mas tem vantagens e desvantagens. Não discorrerei.
Criei a Skill no Amazon Developer Console.
Criei lá a key para acessar a API da OpenAI. É de graça também, heim!
Adicionei o endpoint para a Lambda Function, e na Lambda Function adicionei o ID da skill como trigger. Tudo muito redondinho.
const ChatGPTCommandIntentHandler = {
canHandle(handlerInput) {
return (
Alexa.getRequestType(handlerInput.requestEnvelope) === "IntentRequest" &&
Alexa.getIntentName(handlerInput.requestEnvelope) ===
"ChatGPTCommandIntent"
);
},
async handle(handlerInput) {
const command =
handlerInput.requestEnvelope.request.intent.slots.command.value;
const speechOutput = await queryChatGPT(command);
console.log(speechOutput);
return handlerInput.responseBuilder.speak(speechOutput).getResponse();
},
};
const skillBuilder = Alexa.SkillBuilders.custom();
const handler = skillBuilder
.addRequestHandlers(
ChatGPTCommandIntentHandler,
Alexa.CancelIntentHandler,
Alexa.HelpIntentHandler,
Alexa.StopIntentHandler,
Alexa.NavigateHomeIntentHandler
)
.lambda();
export { handler };
Teoricamente eu consegui fazer tudo até meia-noite. Tudo bem cagado, mas fiz.
Hoje de noite fui tentar entender porque está tudo funcionando certinho, mas a Alexa não consegue entender os comandos de voz. Ela não detecta o intent. Via texto funciona muito bem, mas esse é um trabalho que eu tenho que terminar antes de pensar em publicar a Skill ou disponibilizar o código por completo. Caso tenha interesse, fale comigo.
Não era minha intenção me aprodundar na parte técnica aqui, e sim demonstrar que dá pra usar o ChatGPT para produzir mais? Dá! Porém só até a terceira página.
Realidade
A realidade é que eu acabei 80% do trabalho em 20% do tempo, mas teve muita coisa dando errado. 80% do tempo foi debugando e apurando a parte que eu achei que ia ser mais fácil, a criação do Modelo de Interação. Culpa do Developer Console da Alexa? Não sei, mas não é tão simples quanto parece e ainda tem bastante coisa pra ajustar.
A API é bem-humorada, às vezes. Outras vezes é bipolar.
Opinião precoce sobre a API
Tive a impressão API da OpenAI é bem fraquinha ainda se comparada com o ChatGPT em si, e isso parece muito escolhas de design, não capacidade. Também pode ser o ajuste dos parâmetros. Ainda tem bastante coisa a aprender em relação à API e eu meio que só fiz uns ajustes rápido pra testar.
export async function queryChatGPT(query) {
const prompt = query;
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
};
const data = JSON.stringify({ // Esses parâmetros aqui controlam
prompt: prompt, // características das respostas.
max_tokens: 50, // Leia os docs.
temperature: 0.3,
n: 1,
});
const response = await axios.post(endpoint, data, { headers: headers });
const answer = response.data.choices[0].text.trim();
const speechOutput = answer.split("\n")[0];
return speechOutput;
}
Estou usando o
endpoint
https://api.openai.com/v1/engines/davinci/completions
, não odavinci-codex
.
Sobre a experiência
Desenvolver com completo auxílio da IA e usar o Google por opção foi muito interessante e dinâmico.
Houve momentos, porém, que o ChatGPT me induziu ao erro e me fez apagar código funcional pra tentar implementar algo que não fazia sentido.
Por exemplo, ele escreveu um Code Snipet que tinha algo como const chatGPT = new AWS.ChatGPT()
. Eu fiquei feliz achando que a Amazon tinha integrado o Chat dentro do SDK, mas depois fiquei me sentindo burro quando pesquisei.
Ele é um excelente mentiroso, e se você não prosseguir com cautela, ele pode literalmente dizer pra você que nariz de porco é tomada sim, e é capaz de você acreditar, e o porco pagar o pato.
Em resumo, por enquanto, o desenvolvedor continua sendo super relevante. Decisões de arquitetura precisam ser feitas, erros precisam ser debugados, parâmetros refinados, e UX definida. Tem um mundo de coisas que ainda não dá pra delegar para a IA.
Oldest comments (0)