Usando ChatGPT com Delphi

· Componentes

O ChatGPT é um grande modelo de linguagem desenvolvido pela OpenAI. Foi treinado usando uma técnica chamada aprendizado não supervisionado, o que significa que recebeu um grande conjunto de dados de texto e aprendeu a prever a próxima palavra em uma sequência com base nas palavras anteriores. Isso permite que o ChatGPT gere texto semelhante ao humano, que pode ser usado para diversas finalidades, como gerar respostas a entradas de usuário em um chatbot ou gerar conteúdo para sites e redes sociais.

Um dos recursos principais do ChatGPT é sua capacidade de entender o contexto e gerar respostas apropriadas com base na conversa. Por exemplo, se você fizer uma pergunta ao ChatGPT, ele gerará uma resposta relevante para a pergunta e que segue o fluxo natural da conversa. Isso é possível graças à capacidade do modelo de "lembrar" declarações anteriores na conversa e usar essa informação para embasar sua resposta.

Outro recurso importante do ChatGPT é sua capacidade de gerar respostas diversas e variadas. Por ter sido treinado em um grande conjunto de dados de texto, possui uma ampla gama de conhecimentos e pode gerar respostas adequadas para diferentes situações e tópicos. Isso o torna uma ferramenta útil para gerar respostas a entradas de usuários em um chatbot, pois pode fornecer respostas relevantes e envolventes independentemente do tópico da conversa.

No geral, o ChatGPT é um poderoso modelo de linguagem capaz de gerar texto semelhante ao humano e entender contexto e fluxo de conversa. Possui uma ampla gama de aplicações, incluindo chatbots, geração de conteúdo e tradução de idiomas, e tem o potencial de revolucionar a forma como interagimos com a tecnologia.

O ChatGPT atualmente não possui uma API própria, mas você pode usar a API beta da OpenAI para interagir com o transformador de texto GPT-3. Você só precisa de uma chave de API, que pode ser obtida em:

https://beta.openai.com/account/api-keys

Para começar a interagir com a API.

Código GPT-3 em Delphi

Depois de ter uma chave de API, interagir com a API é muito fácil. Veja abaixo um código de exemplo para interagir usando a biblioteca sgcWebSockets. 

function AskChatGPT(const aAPI, aQuestion: string): string;
var
  oHTTP: TsgcHTTP1Client;
  oStream: TStringStream;
  vPostData: string;
  oJSON: TJSONValue;
  oArray: TJSonArray;
begin
  oHTTP := TsgcHTTP1Client.Create(nil);
  Try
    oHTTP.Request.CustomHeaders.Add('Authorization: Bearer ' + aAPI);
    oHTTP.Request.ContentType := 'application/json';
    vPostData :=
      Format('{"model": "text-davinci-003","prompt": "%s","max_tokens": 2048,"temperature": 0}',
      [aQuestion]);
    // send request
    oStream := TStringStream.Create(vPostData);
    Try
      result := oHTTP.Post('https://api.openai.com/v1/completions', oStream);
      // parse response
      oJSON := TJSonObject.ParseJSONValue(result).GetValue<TJSONValue>
        ('choices');
      result := TJSonArray(oJSON).Items[0].GetValue<TJSONString>('text').Value;
    Finally
      oStream.Free;
    End;
  Finally
    oHTTP.Free;
  End;
end; 

A função tem 2 argumentos:

API: é a chave de API obtida em https://beta.openai.com/account/api-keys

Question: é a mensagem com a pergunta.

A chave de API é enviada como um Bearer Token e a mensagem é codificada usando um objeto JSON. O servidor retorna uma resposta como objeto JSON onde a mensagem de texto pode ser encontrada.


Veja abaixo o projeto completo e o executável compilado para Windows.