1. أساسيات نماذج إنشاء النصوص
يعتمد نموذج إنشاء النصوص في OpenAI، المعروف عادة باسم محول التدريب الأمامي السابق الأفتراضي (GPT)، على آلية الانتباه الذاتي في تعلم العمق لفهم ومعالجة اللغة الطبيعية. تتألف تدريب نموذج GPT من مرحلتين: التدريب الأمامي وضبط الدقة.
التدريب الأمامي
أثناء مرحلة التدريب الأمامي، يخضع النموذج لتعلم غير مراقب باستخدام مجموعة بيانات نصية بمقياس كبير. خلال هذه العملية، يتم تدريب النموذج من خلال التنبؤ بالكلمة القادمة. على سبيل المثال، بناءً على الجملة "لدي قلم"، بعد رؤية الكلمات القليلة الأولى، يحاول التنبؤ بكلمة "قلم". الهدف الرئيسي من التدريب الأمامي هو تمكين النموذج من فهم بنية ودلالة اللغة.
ضبط الدقة
تتضمن مرحلة ضبط الدقة التعلم المراقب على المهام المحددة. في هذه المرحلة، يتم ضبط النموذج للتكيف مع تطبيقات معينة مثل أنظمة الإجابة على الأسئلة وتلخيص الوثائق. يشمل ضبط الدقة تدريب النموذج بشكل أعمق باستخدام مجموعات بيانات محددة استنادًا إلى النموذج المدرب مسبقًا، مما يمكنه من التكيف بشكل أفضل مع المهام المحددة.
2. سيناريوهات التطبيق
يمكن تطبيق نموذج إنشاء النصوص في OpenAI على مجموعة واسعة من السيناريوهات. فيما يلي بعض التطبيقات النموذجية:
- صياغة الوثائق: مساعدة المستخدمين في صياغة وتحرير الوثائق بسرعة.
- كتابة الشفرة الحاسوبية: إنشاء مقتطفات من الشفرة للمساعدة في البرمجة.
- الرد على أسئلة حول قاعدة المعرفة: تقديم إجابات استنادًا إلى المعرفة المخزنة.
- تحليل النصوص: استخراج معلومات النص وتحليل المشاعر وغيرها.
- توفير واجهة للغة الطبيعية للبرمجيات: السماح للمستخدمين بالتفاعل مع البرمجيات باستخدام اللغة الطبيعية.
- المساعدة التعليمية في مجموعة متنوعة من المواد: تقديم إرشادات تعليمية عبر مواد متعددة.
- ترجمة اللغات: ترجمة النص بين لغات مختلفة.
- محاكاة شخصيات الألعاب: إنشاء حوارات وقصص خلفية للألعاب أو السيناريوهات الدورية.
3. مقدمة لنموذج الحوار
نموذج الحوار هو نوع خاص من نماذج إنشاء النصوص الذي يفهم وينشئ محادثات طبيعية من خلال التدريب الأمامي. يمكن لهذا النموذج محاكاة محادثة بين مستخدم ومساعد افتراضي، مناسب للتطبيقات التفاعلية في الوقت الحقيقي.
يعتمد استخدام نموذج الحوار عادة على محادثات تفاعلية متعددة الدورات. على سبيل المثال، عندما يسأل المستخدم سؤالًا، يمكن للنموذج توليد ردود مناسبة استنادًا إلى البيانات التدريبية السابقة. بالإضافة إلى ذلك، يمكن لنموذج الحوار الاحتفاظ بالمعلومات السياقية، مع النظر إلى مضمون المحادثة السابقة لتوليد ردود أكثر اتساقًا وطبيعية.
سيناريوهات تطبيق نموذج الحوار:
- مساعدي خدمة العملاء: الرد التلقائي على الأسئلة المتداولة للمستخدمين، وتقديم المساعدة والنصائح.
- المحادثات الآلية: المشاركة في تفاعلات محادثات طبيعية مع المستخدمين.
- المساعدين الافتراضيين: تنفيذ أوامر صوتية للمستخدمين، مثل جدولة الاجتماعات وضبط التذكيرات وغيرها.
- ألعاب الأدوار: إثراء تجربة الألعاب من خلال اعطاء شخصيات اللعبة حوارات فريدة وشخصيات.
4. واجهة برمجة التطبيقات لنموذج الحوار
تسمح واجهة برمجة التطبيقات لنموذج الحوار للمطورين بالتفاعل مع نموذج GPT باستخدام طلبات HTTP. سيقوم هذا القسم بتقديم كيفية استخدام curl لبناء الطلبات وتحليل الردود المُرجعة من النموذج.
بناء الطلبات
قبل البدء، تحتاج إلى التسجيل والحصول على مفتاح API من OpenAI، الذي يحتاج إلى التوثيق من خلال رؤوس HTTP عند إرسال الطلبات.
فيما يلي مثال على استخدام curl لإرسال طلب إلى واجهة برمجة التطبيقات لنموذج الحوار:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "system",
"content": "أنت مساعد مفيد."
},
{
"role": "user",
"content": "أي فريق فاز بسلسلة العالم 2020؟"
}
]
}'
معنى معلمات نموذج الحوار
عند استخدام واجهة برمجة التطبيقات لنموذج الحوار في OpenAI، تشمل المعلمات الرئيسية "model" و"messages"، كل منها يحمل معانٍ محددة ويؤثر على النتائج المنتجة.
معلمات النموذج
تُستخدم معلمة النموذج لتحديد إصدار النموذج الذي سيتم استخدامه. على سبيل المثال، "model": "gpt-3.5-turbo"
تشير إلى أنك تطلب نموذج GPT-3.5 Turbo. سيقوم النموذج المحدد هنا بالرد على إدخال المستخدم استنادًا إلى إمكانياته وبيانات التدريب وميزات الواجهة.
فيما يلي النماذج المدعومة حاليًا:
النماذج المدعومة | الحد الأقصى للسياق | وصف النموذج |
---|---|---|
gpt-4-0125-preview | 128,000 رمز | نموذج GPT-4 Turbo معاينة مصمم لتقليل الحالات "الكسلانة"، حيث يفشل النموذج في إكمال المهام. |
gpt-4-turbo-preview | 128,000 رمز | يشير حاليًا إلى نموذج gpt-4-0125-preview . |
gpt-4-1106-preview | 128,000 رمز | نموذج GPT-4 Turbo بقدرات تنفيذ التعليمات المحسنة ووضع JSON والإخراج القابل لإعادة الإنتاج واستدعاءات الدوال المتوازية. |
gpt-4-vision-preview | 128,000 رمز | نموذج GPT-4 بالقدرة على فهم الصور، بالإضافة إلى جميع ميزات GPT-4 Turbo الأخرى. |
gpt-4 | 8,192 رمز | يشير حاليًا إلى gpt-4-0613 . |
gpt-4-0613 | 8,192 رمز | لقطة من GPT-4 تاريخ 13 يونيو 2023، وتوفير دعم تنفيذ الدوال المحسن. |
gpt-4-32k | 32,768 رمز | يشير حاليًا إلى gpt-4-32k-0613 . هذا النموذج غير مُعلَن عنه على نطاق واسع ويُفضل استخدام GPT-4 Turbo. |
gpt-4-32k-0613 | 32,768 رمز | نسخة GPT-4 32k من تاريخ 13 يونيو 2023. هذا النموذج غير مُعلَن عنه على نطاق واسع ويُفضل استخدام GPT-4 Turbo. |
gpt-3.5-turbo-1106 | 16,385 رمز | أحدث نموذج GPT-3.5 Turbo مع تنفيذ التعليمات المحسن، وضع JSON، الإخراج القابل لإعادة الإنتاج، واستدعاءات الدوال المتوازية. |
gpt-3.5-turbo | 4,096 رمز | يشير حاليًا إلى gpt-3.5-turbo-0613 . |
gpt-3.5-turbo-16k | 16,385 رمز | يشير حاليًا إلى gpt-3.5-turbo-16k-0613 . |
gpt-3.5-turbo-instruct | 4,096 رمز | مماثل في الوظيفة لنماذج عصر GPT-3. متوافق مع نقاط الاستكمال التقليدية، غير مناسب لاستكمال المحادثات. |
gpt-3.5-turbo-0613 | 4,096 رمز | لقطة من gpt-3.5-turbo من 13 يونيو 2023. سيتم إيقاف استخدامه في 13 يونيو 2024. |
gpt-3.5-turbo-16k-0613 | 16,385 رمز | لقطة من gpt-3.5-16k-turbo من 13 يونيو 2023. سيتم إيقاف استخدامه في 13 يونيو 2024. |
gpt-3.5-turbo-0301 | 4,096 رمز | لقطة من gpt-3.5-turbo من 1 مارس 2023. سيتم إيقاف استخدامه في 13 يونيو 2024. |
معلمات الرسائل
معلمة الرسائل هي مصفوفة، حيث يُمثل كل عنصر رسالة في المحادثة. تحتوي كل رسالة على خصائصين: دور (دور المرسل) والمحتوى (المحتوى المحدد للرسالة).
- الدور: يحدد دور المرسل للرسالة. القيم الاختيارية تتضمن "نظام"، "مستخدم"، و "مساعد".
- المحتوى: المحتوى المحدد للرسالة.
أنواع ووظائف الدور
قيمة معلمة الدور تحدد نوع ووظيفة الرسالة. ستقوم واجهة برمجة التطبيقات بتغيير رد النموذج باستناد إلى الأدوار المختلفة.
دور 'النظام'
يتم استخدام رسائل النظام للإشارة عالميًا إلى سلوك النموذج. على سبيل المثال، يمكن أن تحدد بوضوح الدور الذي يقوم به النموذج (مثل مساعد، مترجم، إلخ.)، أو تقديم تعليمات محددة يجب اتباعها في المحادثة. تؤثر رسائل النظام على سلوك النموذج على مدى الحوار بشكل طويل المدى، لكنها معتادة على أن تكون اختيارية.
على سبيل المثال، إذا أردت أن يشارك النموذج في المحادثة بدور مساعد خدمة العملاء، يمكنك تحديد في رسالة النظام:
{
"role": "system",
"content": "أنت مساعد خدمة العملاء."
}
دور 'المستخدم'
تمثل رسائل المستخدم الأسئلة المُدخلة من قبل المستخدم. يقوم النموذج بالرد على هذه الرسائل وتوفير المعلومات أو الإجابات أو أشكال أخرى من الإخراج. تُعد هذه الرسائل جزءًا حاسمًا من سير عمل واجهة برمجة التطبيقات الحوارية وتتوافق عادةً مع استفسارات المستخدمين الفعلية في التطبيق.
على سبيل المثال، في طلب المستخدم في مثال الأوامر 'curl' أعلاه:
{
"role": "user",
"content": "أي فريق فاز ببطولة العالم 2020؟"
}
دور 'المساعد'
تشير رسائل المساعد عادةً إلى الردود التي يولدها النموذج ويمكن أن تكون أيضًا جزءًا من رسائل تاريخ المحادثة المقدمة من قبل المطور، المستخدمة لمحاكاة شكل ردود الذكاء الاصطناعي. في طلبات واجهة برمجة التطبيقات، عادةً ما لا تُقدم رسائل دور المساعد ما لم يكن من الضروري تعيين التنسيق الذي يجيب به النموذج على الأسئلة في تاريخ المحادثة لتوفير أمثلة لإخراج النموذج.
تحليل الاستجابة
يتم إرجاع استجابة النموذج بتنسيق JSON. فيما يلي مثال على تحليل الاستجابة:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "بطل بطولة العالم 2020 هو فريق لوس أنجلوس دودجرز.",
"role": "assistant"
},
"logprobs": null
}
],
"created": 1677664795,
"id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
"model": "gpt-3.5-turbo-0613",
"object": "chat.completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 57,
"total_tokens": 74
}
}
في الاستجابة أعلاه، يمكنك الحصول على إجابة النموذج من choices[0].message.content
.
كيفية تنفيذ وظيفة الذاكرة في نموذج الحوار
أدناه مثال على استخدام واجهة برمجة تطبيقات OpenAI's لتنفيذ وظيفة الذاكرة في نموذج GPT، حيث يوضح كيفية حفظ سياق المحادثة التاريخي (أي محتوى الذاكرة) في طلب API جديد لتحقيق الحوار المستمر.
import requests
api_url = "https://api.openai.com/v1/chat/completions"
api_key = "مفتاح API OpenAI الخاص بك"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
data = {
"model": "gpt-3.5-turbo", # يمكن استبدالها بـ gpt-4 أو نماذج أخرى متاحة
"messages": [
{
"role": "system", # رسالة النظام، تستخدم لضبط سلوك نموذج الحوار
"content": "أنت مساعد مساعدة."
},
{
"role": "user", # رسالة المستخدم، سيقوم النموذج بالرد على هذا
"content": "هل يمكنك أن تخبرني بالأسباب الرئيسية لتغير المناخ؟"
},
{
"role": "assistant", # رد النموذج
"content": "تشمل الأسباب الرئيسية لتغير المناخ انبعاثات الغازات الدفيئة، احتراق الوقود الأحفوري، والتصحر، إلخ."
},
{
"role": "user", # سؤال جديد استنادًا إلى إجابة النموذج
"content": "كيف يمكننا تقليل انبعاثات غازات الاحتباس الحراري؟"
}
]
}
response = requests.post(api_url, headers=headers, json=data)
if response.status_code == 200:
reply_content = response.json()['choices'][0]['message']['content']
print(f"رد النموذج => {reply_content}")
else:
print(f"طلب خطأ: {response.status_code}")
في هذا المثال، نقوم بمحاكاة المستخدم يسأل أولاً عن الأسباب الرئيسية لتغير المناخ، ثم يطرح سؤالًا آخر استنادًا إلى شرح النموذج. في طلبات متتالية، نحتفظ بمحتوى الحوار السابق لضمان أن يمكن للنموذج تذكر تاريخ الحوار السابق وتوليد رد استنادًا إليه. يحقق هذا الأسلوب نقل وذاكرة حالة الحوار باستخدام مدخل ومخرج جولة الحوار السابق كرسائل تاريخية للطلب الجديد.
نصيحة: لتنفيذ وظيفة الذاكرة في الحوار، بسبب الحد الأقصى لعدد الرموز لدى النموذج، فإن إدخال جميع رسائل الحوار التاريخية لكل طلب ليست عملية قابلة للتطبيق. عادةً ما يتم إدخال الرسائل ذات الصلة المتعلقة بالأسئلة الحالية بوصفها رسائل تاريخية في النموذج، وستقدم الأقسام التالية كيفية تحقيق ميزة التضمين للبحث عن تشابه النص.
5. مخطط JSON
مخطط JSON هو ميزة في واجهة برمجة تطبيقات نموذج الحوار تسمح للمستخدمين بتعليم النموذج بإعادة دائمًا كائن JSON، مما يجعله مناسبًا للسيناريوهات التي تتطلب استقبال الردود في تنسيق JSON.
استخدام مخطط JSON
لاستخدام مخطط JSON، عليك ضبط حقل response_format
على { "type": "json_object" }
في جسم الطلب HTTP والتأكد من أن رسالة النظام تشير إلى أن إخراج النموذج هو في تنسيق JSON. فيما يلي مثال على طلب curl لتمكين مخطط JSON:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo-1106",
"response_format": { "type": "json_object" },
"messages": [
{
"role": "system",
"content": "أنت مساعد مفيد مصمم لإخراج JSON."
},
{
"role": "user",
"content": "أي فريق فاز بسلسلة العالم 2020؟"
}
]
}'
تحليل استجابة مخطط JSON
في وضع مخطط JSON، ستحتوي الاستجابة على كائن JSON كامل ومحلل تحليلًا مثاليًا. يضمن هذا الوضع أن ناتج النموذج هو كائن JSON صالح يمكن تحليله واستخدامه مباشرة. فيما يلي مثال على استجابة يمكن أن تعود بها باستخدام مخطط JSON:
{
"choices": [
{
"finish_reason": "stop",
"message": {
"content": "{\"winner\": \"Los Angeles Dodgers\"}"
}
}
]
}
في Python، يمكنك استخدام الكود التالي لاستخراج المحتوى من الاستجابة:
import json
response = {
"choices": [
{
"finish_reason": "stop",
"message": {
"content": "{\"winner\": \"Los Angeles Dodgers\"}"
}
}
]
}
response_content = json.loads(response['choices'][0]['message']['content'])
print(response_content)
سيكون الناتج:
{'winner': 'Los Angeles Dodgers'}
يوفر مخطط JSON طريقة موثوقة لضمان التنسيق الصحيح للاستجابات لحالات الاستخدام الخاصة. لذلك، من المُستحسن تمكين مخطط JSON في السيناريوهات التي تتضمن متطلبات محددة لتنسيق استجابة واجهة برمجة التطبيقات (API).