Ícone do site SOLOWEB Tecnologia

Consultando ChatGPT da OpenAI via código utilizando sua API

No post de hoje vamos consultar com poucas linhas de código o ChatGPT (Chat Generative Pre-trained Transformer) da OpenAI via API.

Para simplificar nosso exemplo vamos utilizar a linguagem de programação PHP em seu modo de linha de comando, fique a vontade para implementar em outras linguagens e modos.

Antes de iniciarmos vamos entender um pouco mais o que é esse ChatGPT. ChatGPT é um protótipo de um chatbot com inteligência artificial desenvolvido pela OpenAI e especializado em diálogo. O chatbot é um modelo de linguagem ajustado com técnicas de aprendizado supervisionado e por reforço. O modelo básico que foi ajustado foi o modelo de linguagem GPT-3.5 da OpenAI, uma versão melhorada do GPT-3. O ChatGPT foi lançado em novembro de 2022 e chamou a atenção por suas respostas detalhadas e articuladas, embora a precisão de suas informações tenha sido criticada. (wikipedia)

Primeira ação que devemos fazer é solicitar a API KEY que é sua chave de acesso a esta API, acesse o endereço https://platform.openai.com/account/api-keys

Com sua chave em mão vamos criar nosso arquivo de teste, em nosso exemplo: test.php

<?php

$OPENAI_API_KEY = "SUA CHAVE API KEY AQUI";

É importante usar boas práticas para o uso de sua chave, veja aqui algumas recomendações: https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety

Em seguida lemos da entrada qual será a pergunta.

$pergunta = readline('Informe sua pergunta: ');
print "\nSua Pergunta foi: " . $pergunta;

print "\nResposta da OpenAI: ";

Estamos usando ” \n “ para quebrar a linha já que estamos em modo prompt.

Agora vamos iniciar nosso objeto CURL e montar nosso cabeçalho da requisição.

$ch = curl_init();
$headers  = [
    'Accept: application/json',
    'Content-Type: application/json',
    'Authorization: Bearer ' . $OPENAI_API_KEY . ''
];

Agora vamos preparar nossos dados a ser postado.

$postData = [
    'model' => 'text-davinci-003',
    'prompt' => str_replace('"', '', $pergunta),
    'temperature' => 0.9,
    'max_tokens' => 100,
    'top_p' => 1,
    'frequency_penalty' => 0.0,
    'presence_penalty' => 0.0,
    'stop' => '[" Human:", " AI:"]',
];

Para obter mais informações sobre estes e outros parametros recomendo a leitura da documentação oficial no endereço: https://platform.openai.com/docs/introduction

Por fim vamos setar os valores do nosso objeto CURL e realizar a requisição e imprimir o resultado.

curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

$result = curl_exec($ch);
$decoded_json = json_decode($result, true);

print "\n".$decoded_json['choices'][0]['text'];

Agora vamos testar nosso script com o código abaixo.

$ php test.php

Após digitar nossa pergunta é só aguardar o retorno da API.

Com isso temos o resultado da nossa pergunta ao ChatGPT.

Existem outras formas de consultar esta API, muito rica em recursos, recomendo leitura da documentação oficial.

Segue todo o código do script do nosso arquivo test.php

<?php
/** Consultando ChatGPT / OpenIA
 * Carlos Rolim
 * SOLOWEB - soloweb.com.br 
 */

$OPENAI_API_KEY = "SUA CHAVE API KEY AQUI";

$pergunta = readline('Informe sua pergunta: ');
print "\nSua Pergunta foi: " . $pergunta;

print "\nResposta da OpenAI: ";

$ch = curl_init();
$headers  = [
    'Accept: application/json',
    'Content-Type: application/json',
    'Authorization: Bearer ' . $OPENAI_API_KEY . ''
];

$postData = [
    'model' => 'text-davinci-003',
    'prompt' => str_replace('"', '', $pergunta),
    'temperature' => 0.9,
    'max_tokens' => 100,
    'top_p' => 1,
    'frequency_penalty' => 0.0,
    'presence_penalty' => 0.0,
    'stop' => '[" Human:", " AI:"]',
];

curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

$result = curl_exec($ch);
$decoded_json = json_decode($result, true);

print "\n".$decoded_json['choices'][0]['text'];

Sair da versão mobile