.NET - Integrando ChatGPT com Web API


  Hoje veremos como integrar o ChatGPT com uma Web API na ASP.NET Core.

O ChatGPT é um chatbot online de inteligência artificial desenvolvido pela OpenAI, lançado em novembro de 2022. O nome "ChatGPT" combina "Chat", referindo-se à sua funcionalidade de chatbot, e "GPT", que significa Generative Pre-trained Transformer.

Ele é capaz de processar e responder a perguntas de forma rápida e eficiente. Isso pode economizar tempo ao procurar informações ou soluções para problemas, evitando a necessidade de pesquisar extensivamente ou esperar por respostas de especialistas humanos.

Neste artigo vamos mostrar como fazer uma integração do chatGPT com uma API da ASP.NET Core podendo assim elevar os recursos de seu aplicativo e fornecer aos usuários uma experiência mais interativa e personalizada.

Gerando a chave secreta (API Key)

Para iniciar a integração a primeira coisa a fazer é inscrever-se no site da OpenAI para obter uma chave de API.

Acesse o site - https://platform.openai.com/ - crie uma conta ou faça o login se já possuir uma conta, ,e a seguir acesse a opção - View API Keys - no menu da sua conta pessoal :

A seguir crie uma nova chave secreta clicando no botão :  Create new secret key

É importante manter sua chave de API segura, pois ela fornece acesso à sua conta e a capacidade de usar as APIs ChatGPT da OpenAI. Portanto, certifique-se de não compartilhá-lo com mais ninguém ou deixá-lo em um local inseguro.

Uma vez gerada a chave secreta podemos iniciar o processo de integração com a API.

Criando a Web API

Vamos criar um novo projeto no VS 2022 usando o template ASP.NET Core Web API com o nome ApichatGPT definindo as seguintes configurações :

Vamos remover do projeto criado o controlador WeatherForecast e a classe usada.

Após criar o projeto vamos incluir o pacote nuget do cliente OpenAPI usando o Visual Studio 2022.

No menu Tools do Visual Studio abra uma janela do Package Manager Console e a seguir digite o comando :   Install-Package OpenAI

Depois de instalar o pacote OpenAI, podemos criar um cliente ChatGPT API no projeto da API.

Para isso vamos criar um controlador chamado ChatGptController na pasta Controllers e incluir o código abaixo :

using Microsoft.AspNetCore.Mvc;
using
OpenAI_API;
using
OpenAI_API.Completions;

namespace ApiChatGPT.Controllers;

[Route("api/[controller]")]
[ApiController]

public
class ChatGptController : ControllerBase
{
   [HttpGet]
   [Route(
"UseChatGPT")]
  
public async Task<IActionResult> UseChatGPT(string query)
   {
    
string outputResult = "";
    
var openai = new OpenAIAPI("sk-SUA_api_key");
     CompletionRequest completionRequest =
new CompletionRequest();
     completionRequest.Prompt = query;
     completionRequest.Model = OpenAI_API.Models.Model.DavinciText;
     completionRequest.MaxTokens = 1024;

    
var completions = await openai.Completions.CreateCompletionAsync(completionRequest);

    
foreach (var completion in completions.Completions)
     {
        outputResult += completion.Text;
     }
    
return Ok(outputResult);
   }
}

Vamos entender o código :

          var openai = new OpenAIAPI("sk-SUA_api_key");

Este código cria uma nova instância da classe OpenAIAPI com a chave de API fornecida. A chave de API deve ser armazenada com segurança em um arquivo de configuração ou variável de ambiente.

     string outputResult = "";
    
var openai = new OpenAIAPI("sk-SUA_api_key");
     CompletionRequest completionRequest =
new CompletionRequest();
     completionRequest.Prompt = query;
     completionRequest.Model = OpenAI_API.Models.Model.DavinciText;
     completionRequest.MaxTokens = 1024;


O código acima temos a criação de um novo objeto CompletionRequest e a definição das propriedades do prompt e do modelo. A propriedade MaxTokens especifica o número máximo de tokens (palavras ou frases) a serem gerados na conclusão.

     var completions = await openai.Completions.CreateCompletionAsync(completionRequest);

Essa linha envia a solicitação de conclusão para a API OpenAI e aguarda a resposta. A palavra-chave await é usada para aguardar a resposta antes de continuar a execução.

     foreach (var completion in completions.Completions)
     {
        outputResult += completion.Text;
     }
    
return Ok(outputResult);

O laço foreach acima extrai o texto gerado do objeto de conclusão e os concatena na variável de string outputResult e por fim retorna o texto gerado como uma resposta HTTP 200 OK.

Depois de concluir as etapas acima para implementar a API do ChatGPT, a etapa final é executar o projeto e testar a API usando Swagger.

Executando o projeto e acionando o endpoint com uma consulta: O que é o chatGPT ?

Teremos a seguinte resposta:

Atualmente você terá que aderir a um plano de pagamento para usar a API. Isso pode ser feito clicando no botão - Set up paid account :

Assim, neste primeiro contato com a API do ChatGPT vimos como é simples fazer uma integração com uma API ASP.NET Core. Naturalmente existem muitos mais recursos a serem explorados e deixamos isso para outros artigos.

Pegue o projeto aqui: ApiChatGPT.zip

"Ainda que eu fale as línguas dos homens e dos anjos, se não tiver amor, serei como o sino que ressoa ou como o prato que retine."
I Coríntios 13:1

Referências:


José Carlos Macoratti