Integrando ChatGPT com Node.js e TypeScript: Como Buscar Prompts Simples

Integrando ChatGPT com Node.js e TypeScript: Como Buscar Prompts Simples

Integrar o ChatGPT em uma aplicação Node.js usando TypeScript 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 Node.js com TypeScript, abordando desde a configuração inicial até a implementação completa.

Pré-requisitos

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

  • Node.js e npm instalados em sua máquina.
  • TypeScript instalado globalmente.
  • Uma chave de API do OpenAI (você pode obter uma em OpenAI).
  • Conhecimento básico de Node.js e TypeScript.

Configuração do Ambiente

1. Inicializando o Projeto

Crie um novo diretório para o seu projeto e inicialize um novo projeto Node.js:

mkdir chatgpt-integration
cd chatgpt-integration
npm init -y

Instale o TypeScript e as definições de tipo necessárias:

npm install typescript ts-node @types/node --save-dev

Crie o arquivo tsconfig.json para configurar o TypeScript:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src"]
}

2. Estrutura do Projeto

Crie a seguinte estrutura de diretórios e arquivos:

chatgpt-integration/
├── src/
│   ├── index.ts
│   ├── services/
│   │   └── ChatGPTService.ts
│   └── controllers/
│       └── ChatGPTController.ts
├── tsconfig.json
├── package.json

3. Instalando Dependências

Instale o axios para fazer requisições HTTP e as definições de tipo:

npm install axios
npm install @types/axios --save-dev

Configurando a Chave de API do OpenAI

Adicione sua chave de API do OpenAI ao arquivo .env. Crie o arquivo .env na raiz do projeto:

OPENAI_API_KEY=your_openai_api_key

Instale o pacote dotenv para carregar variáveis de ambiente:

npm install dotenv
npm install @types/dotenv --save-dev

Criando o Serviço para a API do ChatGPT

1. Implementando o Serviço

No arquivo ChatGPTService.ts, adicione o seguinte código:

import axios from 'axios';
import dotenv from 'dotenv';

dotenv.config();

export class ChatGPTService {
  private apiKey: string;

  constructor() {
    this.apiKey = process.env.OPENAI_API_KEY!;
  }

  public async getResponse(prompt: string): Promise<string> {
    try {
      const response = await axios.post('https://api.openai.com/v1/engines/davinci-codex/completions', {
        prompt: prompt,
        max_tokens: 150,
      }, {
        headers: {
          'Authorization': `Bearer ${this.apiKey}`,
          'Content-Type': 'application/json',
        },
      });

      return response.data.choices[0].text.trim();
    } catch (error) {
      console.error('Error fetching response from OpenAI:', error);
      return 'No response';
    }
  }
}

Criando um Controller para Lidar com Requisições

1. Implementando o Controller

No arquivo ChatGPTController.ts, adicione o seguinte código:

import { Request, Response } from 'express';
import { ChatGPTService } from '../services/ChatGPTService';

export class ChatGPTController {
  private chatGPTService: ChatGPTService;

  constructor() {
    this.chatGPTService = new ChatGPTService();
  }

  public async getResponse(req: Request, res: Response): Promise<void> {
    const { prompt } = req.body;

    if (!prompt) {
      res.status(400).send('Prompt is required');
      return;
    }

    const response = await this.chatGPTService.getResponse(prompt);
    res.json({ response });
  }
}

Configurando o Servidor Express

1. Instalando Dependências

Instale o express e as definições de tipo:

npm install express
npm install @types/express --save-dev

2. Implementando o Servidor

No arquivo index.ts, adicione o seguinte código:

import express from 'express';
import { json, urlencoded } from 'body-parser';
import { ChatGPTController } from './controllers/ChatGPTController';

const app = express();
const port = 3000;
const chatGPTController = new ChatGPTController();

app.use(json());
app.use(urlencoded({ extended: true }));

app.post('/chatgpt', (req, res) => chatGPTController.getResponse(req, res));

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

Testando a Integração

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

Exemplo de Requisição com cURL

curl -X POST http://localhost:3000/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 public:

<!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('/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 Node.js e TypeScript é 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 *