Como criar uma API com Edge Functions e ChatGPT

Saiba mais sobre o processo necessário para criar uma API com Edge Functions e ChatGPT, e tenha a resposta apresentada no Azion Preview Deployment.

Para fazer isso, você precisa ter:

Para começar a criar sua API, proceda da seguinte forma:

  1. No Azion Console, no canto superior esquerdo, selecione Edge Functions na seção Edge Libraries.
  2. Clique em Add a Function.
  3. Escolha um nome para sua função.
  4. Exclua a função predefinida que está dentro do editor de código.
  5. Adicione sua OpenAI API key e organization ID ao código, como um comentário:
/*
ChatGPTKey=sk-xxxxxxx
ChatGPTOrg=org-xxxxxx
*/

Nota: o preview apresentará um aviso mencionando a necessidade de ter a função PreviewProvider dentro do código. Não se preocupe, esta situação será coberta nos próximos passos.

  1. Copie e cole a seguinte const:
const html = `<!DOCTYPE html>
<body>
<h1>Hello World</h1>
<p>This markup was generated by Azion - Edge Functions.</p>
</body>`
  1. Escreva o seguinte prompt dentro da função, logo abaixo das credenciais OpenAI que foram coladas na etapa 5:
// generate an object with 5 properties being 2 of them array of objects
  1. Selecione o prompt > clique nele com o botão direito do mouse > escolha ChatGPT: Generate. Aguarde alguns segundos até carregar.

O resultado esperado será semelhante a:

let myObject = {
property_1: 'value_1',
property_2: 10,
property_3: true,
property_4: [{object_1: 'value_1'}, {object_2: 'value_2'}],
property_5: [{object_3: 'value_3'}, {object_4: 'value_4'}]
};
  1. Adicione a função handleRequest, contendo um switch case, com um método GET e um método POST:
async function handleRequest(request) {
switch (request.method) {
case 'POST':
return new Response(JSON.stringify(myObject), { // Returning the object generated by ChatGPT
headers: {
"content-type": "application/json",// Altering the content-type to application/json
}
})
case 'GET':
return new Response(html, {
headers: {
"content-type": "text/html:charset=UTF-8",
}
})
}
}
  • O método POST retorna um objeto JSON, que foi gerado pela opção ChatGPT: Generate.
  • O método GET retorna a const html que foi declarada na etapa 6.
  1. Copie e cole a função PreviewProvider, responsável por simular solicitações:
function PreviewProvider(args) {
var request = {
body: {},
headers: {},
method: "GET",
redirect: "",
}
return handleRequest(request)
}
  1. Adicione a função addEventListener, que aciona todo o processamento da edge function:
addEventListener("fetch", event => {
return event.respondWith(handleRequest(event.request))
})
  1. Clique com o botão direito em qualquer lugar dentro do editor de código e selecione Format document.

Neste ponto, sua edge function deve estar semelhante a:

/*
ChatGPTKey=sk-xxxxxxx
ChatGPTOrg=org-xxxxxx
*/
const html = `<!DOCTYPE html>
<body>
<h1>Hello World</h1>
<p>This markup was generated by Azion - Edge Functions.</p>
</body>`
let myObject = {
property_1: 'value_1',
property_2: 10,
property_3: true,
property_4: [{object_1: 'value_1'}, {object_2: 'value_2'}],
property_5: [{object_3: 'value_3'}, {object_4: 'value_4'}]
};
async function handleRequest(request) {
switch (request.method) {
case 'POST':
return new Response(JSON.stringify(myObject), { // Returning the object generated by ChatGPT
headers: {
"content-type": "application/json",// Altering the content-type to application/json
}
})
case 'GET':
return new Response(html, {
headers: {
"content-type": "text/html:charset=UTF-8",
}
})
}
}
function PreviewProvider(args) {
var request = {
body: {},
headers: {},
method: "GET", //or POST
redirect: "",
}
return handleRequest(request)
}
addEventListener("fetch", event => {
return event.respondWith(handleRequest(event.request))
})

Se quiser, você pode alternar o método dentro da função PreviewProvider e ter uma visualização em tempo real das respostas no Azion Preview Deployment.

  1. Clique no botão Save.

Agora, a função está pronta para ser instanciada em uma edge application. Veja como instanciar e executar as funções em sua edge application.


Contribuidores