كيفية إنشاء روبوت محادثة بالذكاء الاصطناعي باستخدام OpenAI GPT-4 و Node.js لتطبيق الويب

Amine
19/09/2024

إنشاء روبوت محادثة مدعوم بالذكاء الاصطناعي لتطبيق الويب الخاص بك

يمكن أن يعزز إنشاء روبوت محادثة مدعوم بالذكاء الاصطناعي لتطبيق الويب الخاص بك التفاعل مع المستخدم بشكل كبير، ويوفر استجابات ذكية، ويؤتمت العديد من المهام. في هذا الدليل الشامل، سنرشدك خطوة بخطوة لإنشاء روبوت محادثة باستخدام OpenAI’s GPT-4 API، مع Node.js و Express.js للجزء الخلفي، و HTML/CSS/JavaScript للجزء الأمامي. بنهاية هذا الدليل، سيكون لديك روبوت محادثة يمكنه الاستفادة من تقنيات الذكاء الاصطناعي المتقدمة لفهم استفسارات المستخدمين والرد عليها بفعالية.

المتطلبات المسبقة

قبل البدء، تأكد من توفر المتطلبات التالية:

  • معرفة أساسية بـJavaScript: فهم Node.js و frontend JavaScript.
  • تثبيت Node.js و npm: قم بتنزيلهما من الموقع الرسمي لـ Node.js.
  • حساب في OpenAI: قم بالتسجيل في OpenAI واحصل على الوصول إلى API.
  • محرر نصوص أو بيئة تطوير متكاملة (IDE) مثل VS Code.
  • Git (اختياري): للتحكم في الإصدارات والنشر.

الخطوة 1: إعداد بيئة التطوير

ابدأ بإنشاء دليل جديد لمشروعك والتنقل إليه:

mkdir ai-chatbot-webapp
cd ai-chatbot-webapp

ثم قم بتهيئة مشروع Node.js جديد:

npm init -y

تثبيت الحزم المطلوبة:

npm install express dotenv axios cors

قم بتنظيم مشروعك كما يلي:

ai-chatbot-webapp/
├── node_modules/
├── public/
│   ├── index.html
│   ├── styles.css
│   └── script.js
├── server.js
├── .env
├── package.json
└── README.md

الخطوة 2: الحصول على الوصول إلى OpenAI API

توجه إلى OpenAI وقم بالتسجيل للحصول على حساب، ثم احصل على مفتاح API:

  • انتقل إلى قسم API بعد تسجيل الدخول.
  • اضغط على “Create new secret key” وانسخ المفتاح الناتج.

قم بتكوين المتغيرات البيئية:

OPENAI_API_KEY=your-openai-api-key
PORT=3000

استبدل your-openai-api-key بمفتاح API الفعلي الذي حصلت عليه من OpenAI.

الخطوة 3: تطوير الجزء الخلفي باستخدام Node.js و Express

قم بإنشاء ملف server.js في جذر المشروع:

// server.js
require('dotenv').config();
const express = require('express');
const axios = require('axios');
const cors = require('cors');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3000;

app.use(cors());
app.use(express.json());
app.use(express.static(path.join(__dirname, 'public')));

// Endpoint to handle chatbot messages
app.post('/api/message', async (req, res) => {
    const userMessage = req.body.message;

    if (!userMessage) {
        return res.status(400).json({ error: 'No message provided.' });
    }

    try {
        const response = await axios.post(
            'https://api.openai.com/v1/chat/completions',
            {
                model: 'gpt-4',
                messages: [
                    { role: 'system', content: 'You are a helpful assistant.' },
                    { role: 'user', content: userMessage },
                ],
                max_tokens: 150,
                temperature: 0.7,
            },
            {
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
                },
            }
        );

        const botReply = response.data.choices[0].message.content.trim();
        res.json({ reply: botReply });
    } catch (error) {
        console.error('Error communicating with OpenAI:', error.response ? error.response.data : error.message);
        res.status(500).json({ error: 'An error occurred while processing your request.' });
    }
});

app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

هذا الكود يقوم بإعداد خادم Express الذي يتواصل مع OpenAI GPT-4 API، ويتعامل مع الرسائل المرسلة من الواجهة الأمامية.

الخطوة 4: بناء واجهة المستخدم الأمامية

قم بإنشاء ملف index.html داخل مجلد public/:

<!-- public/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Chatbot</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="chat-container">
        <div id="chatbox" class="chatbox"></div>
        <div class="input-area">
            <input type="text" id="userInput" placeholder="Type your message here..." />
            <button id="sendBtn">Send</button>
        </div>
    </div>
    <script src="script.js"></script>
</body>
</html>

ثم قم بإنشاء ملف styles.css داخل مجلد public/:

/* public/styles.css */
body {
    font-family: Arial, sans-serif;
    background-color: #f0f0f0;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.chat-container {
    width: 400px;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 5px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.chatbox {
    flex: 1;
    padding: 20px;
    overflow-y: auto;
    background-color: #fafafa;
}

.input-area {
    display: flex;
    border-top: 1px solid #ccc;
}

#userInput {
    flex: 1;
    padding: 10px;
    border: none;
    outline: none;
}

#sendBtn {
    padding: 10px 20px;
    border: none;
    background-color: #007bff;
    color: #fff;
    cursor: pointer;
    transition: background-color 0.3s;
}

#sendBtn:hover {
    background-color: #0056b3;
}

.message {
    margin-bottom: 15px;
    display: flex;
}

.message.user {
    justify-content: flex-end;
}

.message.bot {
    justify-content: flex-start;
}

.message .text {
    max-width: 70%;
    padding: 10px 15px;
    border-radius: 20px;
    position: relative;
}

.message.user .text {
    background-color: #dcf8c6;
    border-bottom-right-radius: 0;
}

.message.bot .text {
    background-color: #ececec;
    border-bottom-left-radius: 0;
}

أخيرًا، قم بإنشاء ملف script.js داخل مجلد public/:

// public/script.js
document.addEventListener('DOMContentLoaded', () => {
    const sendBtn = document.getElementById('sendBtn');
    const userInput = document.getElementById('userInput');
    const chatbox = document.getElementById('chatbox');

    sendBtn.addEventListener('click', sendMessage);
    userInput.addEventListener('keypress', function (e) {
        if (e.key === 'Enter') {
            sendMessage();
        }
    });

    async function sendMessage() {
        const message = userInput.value.trim();
        if (message === '') return;

        appendMessage('user', message);
        userInput.value = '';

        try {
            const response = await fetch('/api/message', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({ message: message }),
            });

            const data = await response.json();
            if (data.reply) {
                appendMessage('bot', data.reply);
            } else {
                appendMessage('bot', 'Sorry, I did not understand that.');
            }
        } catch (error) {
            console.error('Error:', error);
            appendMessage('bot', 'Sorry, there was an error processing your request.');
        }
    }

    function appendMessage(sender, text) {
        const messageDiv = document.createElement('div');
        messageDiv.classList.add('message', sender);

        const textDiv = document.createElement('div');
        textDiv.classList.add('text');
        textDiv.textContent = text;

        messageDiv.appendChild(textDiv);
        chatbox.appendChild(messageDiv);
        chatbox.scrollTop = chatbox.scrollHeight;
    }
});

الخطوة 5: دمج الواجهة الأمامية مع الخلفية

تأكد من أن الملفات الثابتة يتم تقديمها بشكل صحيح عبر express.static وأن الواجهة الأمامية تتصل بنقطة النهاية API.

الخطوة 6: اختبار روبوت المحادثة

قم بتشغيل الخادم باستخدام الأمر التالي:

node server.js

قم بزيارة http://localhost:3000 وتفاعل مع روبوت المحادثة لاختبار قدراته.

الخاتمة

إن إنشاء روبوت محادثة مدعوم بالذكاء الاصطناعي لتطبيق الويب الخاص بك يتطلب دمج نماذج لغة متقدمة مثل GPT-4 من OpenAI مع خلفية قوية وواجهة أمامية سهلة الاستخدام. باتباع هذا الدليل، قد أنشأت روبوت محادثة قادرًا على فهم استفسارات المستخدمين والرد عليها بذكاء.

التعليقات

اترك تعليقاً