Interface de Usuário
Criação de um chat interativo
10-15 min
Interface de Usuário para o ChatGPT: Criação de um Chat Interativo
Introdução
Neste módulo, vamos criar uma interface de usuário moderna e responsiva para interagir com a API do ChatGPT. Usaremos React para construir nossa interface, mas os conceitos podem ser adaptados a outros frameworks.
Configuração do Projeto
Instalação das Dependências
npm create vite@latest chatgpt-ui -- --template react
cd chatgpt-ui
npm install openai axios @chakra-ui/react @emotion/react @emotion/styled framer-motion
Estrutura do Projeto
chatgpt-ui/
├── src/
│ ├── components/
│ │ ├── ChatWindow.jsx
│ │ ├── MessageInput.jsx
│ │ └── Message.jsx
│ ├── hooks/
│ │ └── useChatGPT.js
│ ├── App.jsx
│ └── main.jsx
└── .env
Criação dos Componentes
1. O Hook useChatGPT
// src/hooks/useChatGPT.js
import { useState } from 'react';
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: import.meta.env.VITE_OPENAI_API_KEY
});
export function useChatGPT() {
const [messages, setMessages] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const sendMessage = async (content) => {
try {
setIsLoading(true);
// Adicionar a mensagem do usuário
const userMessage = { role: 'user', content };
setMessages(prev => [...prev, userMessage]);
// Chamar a API do ChatGPT
const completion = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{ role: "system", content: "Vous êtes un assistant utile." },
...messages,
userMessage
],
});
// Adicionar a resposta do assistente
const assistantMessage = completion.choices[0].message;
setMessages(prev => [...prev, assistantMessage]);
return assistantMessage;
} catch (error) {
console.error('Erreur lors de l\'envoi du message:', error);
throw error;
} finally {
setIsLoading(false);
}
};
return {
messages,
isLoading,
sendMessage
};
}
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão