كيفية إنشاء روبوت محادثة باستخدام OpenAI API وPython

Amine
05/09/2024

المقدمة

في هذا الدليل الشامل، سنتعلم خطوة بخطوة كيفية إنشاء روبوت محادثة (Chatbot) متقدم باستخدام واجهة برمجة التطبيقات (API) الخاصة بـ OpenAI. سنستخدم لغة البرمجة Python للتفاعل مع واجهة API وتشغيل نموذج GPT لإنشاء محادثة ذكية قادرة على الرد على الأسئلة وتقديم المعلومات في الوقت الفعلي. هذا الدليل موجه للمبتدئين والمحترفين على حد سواء، وسيوفر لك كل ما تحتاجه لبناء روبوت محادثة فعال يمكن دمجه في تطبيقاتك أو مواقعك الإلكترونية.

1. إنشاء حساب والحصول على مفتاح API

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

  • زيارة موقع OpenAI: افتح متصفحك واذهب إلى موقع OpenAI.
  • التسجيل للحصول على حساب: انقر على زر “Sign Up” واملأ البيانات المطلوبة لإنشاء حساب جديد. إذا كان لديك حساب بالفعل، قم بتسجيل الدخول.
  • الحصول على مفتاح API: بعد تسجيل الدخول، اذهب إلى لوحة التحكم (Dashboard)، ثم انتقل إلى قسم “API Keys”. انقر على “Create new secret key” للحصول على مفتاح API الخاص بك. احفظ هذا المفتاح في مكان آمن لأنه سيُستخدم في الخطوات التالية.
تحذير: حافظ على سرية مفتاح API الخاص بك ولا تشاركه مع أي شخص آخر. استخدامه قد يؤدي إلى تكبد تكاليف غير متوقعة إذا تم إساءة استخدامه.

2. إعداد بيئة Python

الخطوة التالية هي إعداد بيئة العمل باستخدام لغة البرمجة Python. سنتأكد من تثبيت جميع الحزم والمكتبات الضرورية للتفاعل مع واجهة OpenAI API.

2.1 تثبيت Python

إذا لم تكن قد قمت بتثبيت Python بعد، قم بتحميله وتثبيته من الموقع الرسمي: python.org. تأكد من إضافة Python إلى متغير PATH أثناء التثبيت.

2.2 إنشاء بيئة افتراضية

من المستحسن استخدام بيئة افتراضية لعزل حزم المشروع عن بقية النظام. يمكنك إنشاء بيئة افتراضية باستخدام الأوامر التالية:

# إنشاء بيئة افتراضية باسم "venv"
python -m venv venv

# تفعيل البيئة الافتراضية
# على نظام Windows:
venv\Scripts\activate

# على نظام macOS/Linux:
source venv/bin/activate

بعد تفعيل البيئة الافتراضية، يمكنك تثبيت الحزم المطلوبة بأمان.

2.3 تثبيت مكتبة OpenAI

لتثبيت مكتبة OpenAI، استخدم الأمر التالي في نافذة الأوامر:

pip install openai

يمكنك التحقق من التثبيت الناجح عن طريق استيراد المكتبة في Python:

import openai
print("OpenAI library installed successfully!")

3. إعداد الاتصال بـ OpenAI API

بعد تثبيت مكتبة OpenAI، نحتاج إلى إعداد الاتصال بواجهة API باستخدام مفتاح API الذي حصلنا عليه في الخطوة الأولى. سنقوم بكتابة برنامج Python بسيط يقوم بإرسال استفسارات واستقبال ردود من النموذج.

3.1 كتابة كود الاتصال الأساسي

import openai

# إعداد مفتاح API الخاص بك
openai.api_key = 'your-api-key-here'

def generate_response(prompt):
    try:
        response = openai.Completion.create(
            engine="gpt-4",  # يمكنك استخدام "gpt-3.5-turbo" أو "gpt-4" بناءً على اشتراكك
            prompt=prompt,
            max_tokens=150,  # عدد الكلمات في الرد
            temperature=0.7,  # قيمة بين 0 و1، كلما زادت القيمة، زاد الإبداع في الرد
            n=1,  # عدد الردود الممكنة
            stop=None  # يمكنك تحديد متى يتوقف النموذج عن الرد
        )
        return response.choices[0].text.strip()
    except Exception as e:
        return f"حدث خطأ: {e}"

# مثال على محادثة
user_input = input("أنت: ")
response = generate_response(user_input)
print(f"الروبوت: {response}")

استبدل 'your-api-key-here' بمفتاح API الخاص بك. عند تشغيل البرنامج، سيطلب منك إدخال نص، وسيقوم الروبوت بالرد بناءً على النموذج.

4. تحسين تجربة المستخدم عبر حلقة تفاعلية

لجعل الروبوت أكثر تفاعلية ويسمح للمستخدمين بالتواصل معه بشكل مستمر، سنضيف حلقة تفاعلية تستمر حتى يقرر المستخدم إنهاء المحادثة بكتابة كلمة “exit”. هذا يعزز تجربة المستخدم ويجعل الروبوت أكثر فائدة.

def chat():
    print("ابدأ المحادثة مع الروبوت (اكتب 'exit' للخروج).")
    while True:
        user_input = input("أنت: ")
        if user_input.lower() == 'exit':
            print("الروبوت: وداعًا!")
            break
        response = generate_response(user_input)
        print(f"الروبوت: {response}")

# بدء المحادثة
if __name__ == "__main__":
    chat()

الآن، عند تشغيل البرنامج، يمكنك إجراء محادثة مستمرة مع الروبوت حتى تقرر إنهاء الجلسة بكتابة “exit”.

5. تخصيص سلوك الروبوت لتحسين الجودة

يمكنك تخصيص سلوك روبوت المحادثة لتحسين جودة الردود وجعلها أكثر ملاءمة لاحتياجات المستخدمين. سنستعرض كيفية تعديل “prompt” وإعدادات النموذج مثل temperature وmax_tokens.

5.1 ضبط إعدادات النموذج

تعتبر إعدادات النموذج مثل temperature وmax_tokens من أهم العوامل التي تؤثر على طبيعة الردود:

  • Temperature: تتحكم في عشوائية الردود. قيمة منخفضة (مثل 0.3) تجعل الردود أكثر تحفظًا ودقة، بينما قيمة أعلى (مثل 0.7) تجعلها أكثر إبداعًا وتنوعًا.
  • Max Tokens: تحدد الحد الأقصى لعدد الكلمات أو الرموز التي يمكن أن يولدها النموذج في الرد. قيمة أعلى تسمح بردود أطول.

5.2 إضافة سياق أو أدوار في Prompt

يمكنك تحسين سلوك الروبوت عن طريق إضافة سياق أو تحديد دور معين له في الـ prompt. على سبيل المثال، يمكن تحديد أن الروبوت هو مساعد مفيد أو خبير في مجال معين:

def generate_response(prompt):
    prompt_with_role = f"أنت مساعد ذكي ومفيد. {prompt}"
    
    try:
        response = openai.Completion.create(
            engine="gpt-4",
            prompt=prompt_with_role,
            max_tokens=150,
            temperature=0.7,
            n=1,
            stop=None
        )
        return response.choices[0].text.strip()
    except Exception as e:
        return f"حدث خطأ: {e}"

بهذه الطريقة، يتلقى النموذج توجيهًا إضافيًا ليكون مساعدًا أكثر فعالية ودقة في الردود.

6. تقييد عدد الردود وتنظيم المحادثة

لضمان أن تكون الردود مناسبة ومحددة، يمكنك التحكم في عدد الكلمات التي يولدها النموذج لكل استجابة وتحديد متى يجب أن يتوقف. هذا يساعد في تجنب الردود الطويلة أو غير المناسبة.

6.1 تحديد عدد الكلمات (Max Tokens)

يمكنك ضبط max_tokens لتحديد الحد الأقصى لكلمات الرد:

response = openai.Completion.create(
    engine="gpt-4",
    prompt="ما هي عاصمة فرنسا؟",
    max_tokens=50,  # تحديد عدد الكلمات
    temperature=0.5,
    n=1,
    stop=["\n"]  # التوقف عند نهاية السطر
)

6.2 استخدام شروط التوقف (Stop Conditions)

يمكنك تحديد متى يجب أن يتوقف النموذج عن توليد الردود باستخدام خاصية stop. على سبيل المثال، يمكنك جعل النموذج يتوقف عند نهاية السطر أو عند رمز معين:

response = openai.Completion.create(
    engine="gpt-4",
    prompt="اكتب فقرة قصيرة عن أهمية التعليم.",
    max_tokens=100,
    temperature=0.6,
    n=1,
    stop=["\n"]  # التوقف عند نهاية السطر
)

7. بناء واجهة محادثة بسيطة باستخدام Flask

لجعل الروبوت أكثر تفاعلية ويسهل الوصول إليه، يمكنك إنشاء واجهة ويب بسيطة باستخدام إطار العمل Flask. ستسمح هذه الواجهة للمستخدمين بالتفاعل مع الروبوت عبر المتصفح دون الحاجة لاستخدام واجهة الأوامر.

7.1 تثبيت Flask

أولاً، قم بتثبيت مكتبة Flask باستخدام الأمر التالي:

pip install flask

7.2 إنشاء تطبيق Flask بسيط

الآن، سنقوم بإنشاء ملف Python جديد (مثلاً app.py) يحتوي على الكود التالي:

from flask import Flask, render_template, request, jsonify
import openai

app = Flask(__name__)

# إعداد مفتاح API الخاص بك
openai.api_key = 'your-api-key-here'

def generate_response(prompt):
    prompt_with_role = f"أنت مساعد ذكي ومفيد. {prompt}"
    try:
        response = openai.Completion.create(
            engine="gpt-4",
            prompt=prompt_with_role,
            max_tokens=150,
            temperature=0.7,
            n=1,
            stop=None
        )
        return response.choices[0].text.strip()
    except Exception as e:
        return f"حدث خطأ: {e}"

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/chat", methods=["POST"])
def chat():
    user_input = request.form.get("user_input")
    if not user_input:
        return jsonify({"response": "لم يتم إرسال أي مدخلات."})
    response = generate_response(user_input)
    return jsonify({"response": response})

if __name__ == "__main__":
    app.run(debug=True)

تأكد من استبدال 'your-api-key-here' بمفتاح API الخاص بك. هذا الكود يقوم بإنشاء تطبيق Flask بسيط يحتوي على مسارين: المسار الرئيسي لعرض واجهة المستخدم ومسار “/chat” للتعامل مع طلبات المحادثة.

7.3 إنشاء قالب HTML لواجهة المحادثة

قم بإنشاء مجلد باسم templates في نفس مسار app.py، ومن ثم أنشئ ملفًا باسم index.html بداخله. استخدم الكود التالي لبناء واجهة المستخدم:

<!DOCTYPE html>


    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>روبوت المحادثة</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 50px; }
        #chatbox { width: 100%; height: 400px; border: 1px solid #ccc; padding: 10px; overflow-y: scroll; }
        #userInput { width: 80%; padding: 10px; }
        #sendBtn { padding: 10px; }
    </style>


    <h1>تحدث مع روبوت المحادثة</h1>
    <div id="chatbox"></div>
    <input type="text" id="userInput" placeholder="اكتب رسالتك هنا...">
    <button id="sendBtn">إرسال</button>

    <script>
        document.getElementById('sendBtn').addEventListener('click', function() {
            let userInput = document.getElementById('userInput').value;
            if (userInput.trim() === "") return;

            let chatbox = document.getElementById('chatbox');
            chatbox.innerHTML += "<p><strong>أنت:</strong> " + userInput + "</p>";
            document.getElementById('userInput').value = "";

            fetch('/chat', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: 'user_input=' + encodeURIComponent(userInput)
            })
            .then(response => response.json())
            .then(data => {
                chatbox.innerHTML += "<p><strong>الروبوت:</strong> " + data.response + "</p>";
                chatbox.scrollTop = chatbox.scrollHeight;
            })
            .catch(error => {
                chatbox.innerHTML += "<p><strong>الروبوت:</strong> حدث خطأ في الاتصال.</p>";
                console.error('Error:', error);
            });
        });

        // تمكين الإرسال عند الضغط على مفتاح Enter
        document.getElementById('userInput').addEventListener('keypress', function(e) {
            if (e.key === 'Enter') {
                document.getElementById('sendBtn').click();
            }
        });
    </script>

هذه الواجهة البسيطة تسمح للمستخدمين بإدخال رسائلهم وعرض الردود من الروبوت بشكل ديناميكي. يمكنك تخصيص التصميم وإضافة ميزات إضافية حسب احتياجاتك.

الخاتمة

لقد تعلمنا في هذا الدليل كيفية إنشاء روبوت محادثة متقدم باستخدام واجهة برمجة التطبيقات الخاصة بـ OpenAI وPython. قمنا بإعداد بيئة العمل، تفاعلنا مع واجهة API، وحسنّا تجربة المستخدم بإضافة حلقة تفاعلية وواجهة ويب بسيطة باستخدام Flask. يمكنك الآن توسيع هذا المشروع بإضافة ميزات إضافية مثل تخزين المحادثات في قاعدة بيانات، دمج الروبوت في تطبيقاتك الخاصة، أو تحسين جودة الردود باستخدام تقنيات إضافية.

لا تتردد في استكشاف المزيد حول إمكانيات OpenAI وPython لتحسين روبوت المحادثة الخاص بك وجعله أكثر فائدة وتفاعلية. حظًا موفقًا في مشاريعك المستقبلية!

التعليقات

اترك تعليقاً