ChatGPT

ChatBot

Integrare chatBot con chatGPT, in un sito Web

Creare un chatBot integrato con chatGPT

Ecco il codice diviso in tre parti: HTML, JavaScript, e PHP.

Codice HTML

Salva questo contenuto nel file chiamato `index.php`.

<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chatbot con GPT-3.5</title>
    <link rel="stylesheet" href="styles.css">
    </head>
<body>
    <div id="chatbot">
        <div id="chat-window">
            <div id="chat-messages"></div>
        </div>
        <textarea id="user-input" placeholder="Scrivi un messaggio..."></textarea>
        <button id="send-button">Invia</button>
    </div>
    <script src="script.js"></script>
</body>
</html>



Spiegazione


- Contenitore del chatbot: La `<div id="chatbot">` include il contenitore per i messaggi e l'input.
- Finestra della chat: `<div id="chat-window">` mostra i messaggi, sia dell'utente che del bot.
- Input utente: `<textarea id="user-input">` è il campo di testo dove l'utente inserisce i messaggi. - Bottone di invio: `<button id="send-button">` invia il messaggio dell'utente.
- Collegamenti:
- `styles.css`: File CSS per lo stile.
- `script.js`: File JavaScript per la logica della chat.

Codice CSS


Salva questo contenuto in un file chiamato `styles.css`.

/* Stile generale per il chatbot */
#chatbot {
    width: 350px;
    border: 1px solid #ccc;
    padding: 10px;
    background-color: #f9f9f9;
    position: fixed;
    bottom: 10px;
    right: 10px;
    font-family: Arial, sans-serif;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

#chat-window {
    height: 400px;
    overflow-y: auto;
    margin-bottom: 10px;
    border: 1px solid #ccc;
    padding: 5px;
    background-color: white;
}

#chat-messages {
    font-size: 14px;
}

#user-input {
    width: calc(100% - 60px);
    height: 30px;
    border: 1px solid #ccc;
    border-radius: 3px;
    padding: 5px;
}

#send-button {
    width: 50px;
    height: 30px;
    border: none;
    background-color: #007BFF;
    color: white;
    border-radius: 3px;
    cursor: pointer;
}

#send-button:hover {
    background-color: #0056b3;
}

.user-message {
    color: blue;
}

.bot-message {
    color: green;
}

.error-message {
    color: red;
}



Spiegazione


- Contenitore principale: `#chatbot` definisce l'aspetto del contenitore.
- Finestra dei messaggi: `#chat-window` permette di scorrere i messaggi.
- Input e bottone: Stili per l'area di testo e il pulsante.
- Colori distintivi: Differenzia i messaggi dell'utente, del bot e gli errori.


Codice JavaScript


Salva questo contenuto in un file chiamato `script.js`.

document.getElementById('send-button').addEventListener('click', function () {
    const userInput = document.getElementById('user-input');
    const message = userInput.value.trim();
    const chatMessages = document.getElementById('chat-messages');

    if (message) {
        // Aggiungi il messaggio dell'utente
        const userMessageElement = document.createElement('div');
        userMessageElement.textContent = 'Utente: ' + message;
        userMessageElement.classList.add('user-message');
        chatMessages.appendChild(userMessageElement);

        // Invia il messaggio al server
        fetch('chatbot.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            body: new URLSearchParams({
                message: message
            })
        })
        .then(response => response.text())
        .then(reply => {
            const botMessageElement = document.createElement('div');
            botMessageElement.textContent = 'ChatGPT: ' + reply;
            botMessageElement.classList.add('bot-message');
            chatMessages.appendChild(botMessageElement);
            chatMessages.scrollTop = chatMessages.scrollHeight; // Scroll automatico
        })
        .catch(error => {
            console.error('Errore:', error);
            const errorMessageElement = document.createElement('div');
            errorMessageElement.textContent = 'Errore nella comunicazione con il server.';
            errorMessageElement.classList.add('error-message');
            chatMessages.appendChild(errorMessageElement);
        });

        userInput.value = ''; // Pulisci l'input
    }
});



Spiegazione

1. Event Listener: Quando il bottone è cliccato, invia il messaggio.
2. Messaggio utente: Aggiunge il messaggio dell'utente alla finestra della chat.
3. Richiesta al server: Usa `fetch` per inviare il messaggio a `chatbot.php`.
4. Gestione della risposta:
- Mostra la risposta del bot.
- Se c'è un errore, lo visualizza come messaggio di errore.


Codice PHP


Salva questo contenuto in un file chiamato `chatbot.php`.

<?php
$api_key = 'YOUR_API_KEY_HERE';

$user_message = $_POST['message'] ?? '';

if (!empty($user_message)) {
    $endpoint = 'https://api.openai.com/v1/chat/completions';

    $data = [
        'model' => 'gpt-3.5-turbo',
        'messages' => [
            ['role' => 'system', 'content' => 'Sei un assistente virtuale.'],
            ['role' => 'user', 'content' => $user_message],
        ],
        'temperature' => 0.7,
        'max_tokens' => 300,
    ];

    $ch = curl_init($endpoint);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $api_key,
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);

    if ($response) {
        $response_data = json_decode($response, true);

        if (isset($response_data['choices'][0]['message']['content'])) {
            echo $response_data['choices'][0]['message']['content'];
        } elseif (isset($response_data['error'])) {
            echo 'Errore API: ' . $response_data['error']['message'];
        } else {
            echo 'Errore: Risposta inattesa dall\'API.';
        }
    } else {
        echo 'Errore nella comunicazione con l\'API.';
    }
} else {
    echo 'Messaggio non valido.';
}
?>


Spiegazione


1. Chiave API: Sostituisci `YOUR_API_KEY_HERE` con la tua chiave OpenAI.
Tale KEY è disponibile al sito piattaforma AI
2. Validazione del messaggio: Controlla che il messaggio dell'utente non sia vuoto.
3. Richiesta API: - Usa `cURL` per inviare la richiesta. - Configura il modello `gpt-3.5-turbo` e i parametri.
4. Gestione della risposta:
- Risponde con il contenuto generato dal bot.
- Gestisce errori dell'API e connessione.

Livio Bollini
Walter Livio Bollini

Matematico & Informatico · Intelligenza Artificiale · Sviluppo Web