Interface Utilisateur
Création d'un chat interactif
10-15 min
Interface Utilisateur pour ChatGPT : Création d'un Chat Interactif
Introduction
Dans ce module, nous allons créer une interface utilisateur moderne et réactive pour interagir avec l'API ChatGPT. Nous utiliserons React pour construire notre interface, mais les concepts peuvent être adaptés à d'autres frameworks.
Configuration du Projet
Installation des Dépendances
npm create vite@latest chatgpt-ui -- --template react
cd chatgpt-ui
npm install openai axios @chakra-ui/react @emotion/react @emotion/styled framer-motion
Structure du Projet
chatgpt-ui/
├── src/
│ ├── components/
│ │ ├── ChatWindow.jsx
│ │ ├── MessageInput.jsx
│ │ └── Message.jsx
│ ├── hooks/
│ │ └── useChatGPT.js
│ ├── App.jsx
│ └── main.jsx
└── .env
Création des Composants
1. Le 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);
// Ajouter le message de l'utilisateur
const userMessage = { role: 'user', content };
setMessages(prev => [...prev, userMessage]);
// Appeler l'API ChatGPT
const completion = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{ role: "system", content: "Vous êtes un assistant utile." },
...messages,
userMessage
],
});
// Ajouter la réponse de l'assistant
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
};
}
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion