Integrando ChatGPT com .NET: Como Buscar Prompts Simples

Integrar o ChatGPT em uma aplicação .NET pode adicionar um poderoso recurso de processamento de linguagem natural ao seu projeto. Portanto esta integração permite que você envie prompts ao ChatGPT e receba respostas diretamente na sua aplicação. Então neste guia, vamos explorar passo a passo como buscar prompts simples utilizando a API do ChatGPT em um projeto .NET, abordando desde a configuração inicial até a implementação completa.

Pré-requisitos

Antes de começar, então certifique-se de ter:

  • .NET SDK instalado em sua máquina.
  • Uma chave de API do OpenAI (você pode obter uma em OpenAI).
  • Conhecimento básico de C# e .NET.

Configuração do Ambiente

1. Inicializando o Projeto

Crie um novo projeto .NET:

dotnet new webapi -n ChatGPTIntegration
cd ChatGPTIntegration

2. Instalando Dependências

Instale o pacote System.Net.Http para fazer requisições HTTP:

dotnet add package System.Net.Http

Configurando a Chave de API do OpenAI

Adicione sua chave de API do OpenAI ao arquivo appsettings.json:

{
  "OpenAI": {
    "ApiKey": "your_openai_api_key"
  }
}

Criando o Serviço para a API do ChatGPT

1. Implementando o Serviço

Crie uma nova pasta chamada Services e um arquivo ChatGPTService.cs dentro dela:

using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

public class ChatGPTService
{
    private readonly HttpClient _httpClient;
    private readonly string _apiKey;

    public ChatGPTService(IConfiguration configuration)
    {
        _httpClient = new HttpClient();
        _apiKey = configuration["OpenAI:ApiKey"];
    }

    public async Task<string> GetResponseAsync(string prompt)
    {
        var requestBody = new
        {
            prompt = prompt,
            max_tokens = 150
        };

        var requestJson = JsonSerializer.Serialize(requestBody);
        var content = new StringContent(requestJson, Encoding.UTF8, "application/json");
        _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _apiKey);

        var response = await _httpClient.PostAsync("https://api.openai.com/v1/engines/davinci-codex/completions", content);
        var responseJson = await response.Content.ReadAsStringAsync();

        var responseObject = JsonSerializer.Deserialize<ChatGPTResponse>(responseJson);
        return responseObject.choices[0].text.Trim();
    }
}

public class ChatGPTResponse
{
    public Choice[] choices { get; set; }
}

public class Choice
{
    public string text { get; set; }
}

Criando um Controller para Lidar com Requisições

1. Implementando o Controller

Crie uma nova pasta chamada Controllers e um arquivo ChatGPTController.cs dentro dela:

using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

[ApiController]
[Route("api/[controller]")]
public class ChatGPTController : ControllerBase
{
    private readonly ChatGPTService _chatGPTService;

    public ChatGPTController(ChatGPTService chatGPTService)
    {
        _chatGPTService = chatGPTService;
    }

    [HttpPost]
    public async Task<IActionResult> GetResponse([FromBody] ChatGPTRequest request)
    {
        if (string.IsNullOrEmpty(request.Prompt))
        {
            return BadRequest("Prompt is required");
        }

        var response = await _chatGPTService.GetResponseAsync(request.Prompt);
        return Ok(new { response });
    }
}

public class ChatGPTRequest
{
    public string Prompt { get; set; }
}

Configurando o Servidor Web

1. Configurando a Injeção de Dependência

No arquivo Startup.cs, então registre o ChatGPTService para injeção de dependência:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSingleton<ChatGPTService>();
}

Testando a Integração

Para testar a integração, então você pode usar um cliente HTTP como Postman ou cURL para enviar uma requisição POST ao endpoint /api/chatgpt com um prompt simples.

Exemplo de Requisição com cURL

curl -X POST http://localhost:5000/api/chatgpt \
     -H "Content-Type: application/json" \
     -d '{"prompt": "Hello, how are you?"}'

Exemplo de Interface Simples

Para completar, vamos criar uma interface simples para interagir com o ChatGPT.

1. Criando uma Página HTML Simples

Crie um arquivo index.html na pasta wwwroot:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ChatGPT Integration</title>
</head>
<body>
    <form id="chat-form">
        <label for="prompt">Enter your prompt:</label>
        <input type="text" id="prompt" name="prompt" required>
        <button type="submit">Send</button>
    </form>
    <div id="response"></div>

    <script>
        document.getElementById('chat-form').addEventListener('submit', function (event) {
            event.preventDefault();
            const prompt = document.getElementById('prompt').value;

            fetch('/api/chatgpt', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json'
                },
                body: JSON.stringify({ prompt: prompt })
            })
            .then(response => response.json())
            .then(data => {
                document.getElementById('response').innerText = data.response;
            })
            .catch(error => console.error('Error:', error));
        });
    </script>
</body>
</html>

Conclusão

Integrar o ChatGPT com .NET é um processo direto que pode adicionar um recurso de linguagem natural valioso à sua aplicação. Portanto neste guia, cobrimos desde a configuração inicial até a implementação de um endpoint que interage com a API do ChatGPT, além de uma interface simples para testar a funcionalidade. Com essas etapas, você pode facilmente expandir e personalizar a integração de acordo com as necessidades do seu projeto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *