قوالب البداية
يتمثل دور النماذج في استلام النصوص كمدخلات لنماذج اللغة، والتي غالبًا ما تُشار إليها على أنها "نصود" (Prompt). خلال عملية التطوير، لا تتم كتابة النصوص المباشرة بشكل دائم، حيث أن هذا لا يُسهم في إدارة النصود. بدلاً من ذلك، يتم استخدام قوالب البداية للحفاظ على النصود، على غرار القوالب المستخدمة لمحتويات الرسائل القصيرة أو البريد الإلكتروني.
ما هي قالب البداية؟
قالب البداية في الأساس لا يختلف عن القوالب المستخدمة للبريد الإلكتروني أو الرسائل القصيرة المعتادة. إنه قالب نصي يمكنه أن يحتوي على مجموعة من المعلمات النموذجية. ويمكن استخدام قيم المعلمات النموذجية لاستبدال المعلمات المقابلة في القالب.
يمكن لقالب البداية أن يحتوي على المحتوى التالي:
- تعليمات مرسلة إلى نموذج اللغة الكبير (LLM).
- مجموعة من أمثلة الأسئلة والإجابات لتذكير الذكاء الاصطناعي بالشكل المتوقع للاستجابة للطلبات.
- الأسئلة المرسلة إلى نموذج اللغة.
إنشاء قالب البداية
يمكنك استخدام فئة PromptTemplate
لإنشاء قالب بداية بسيط. يمكن لقوالب البداية أن تضم أي عدد من المعلمات النموذجية ومن ثم تنسيق محتوى القالب باستخدام قيم المعلمات.
from langchain.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template(
"أخبرني بنكتة {صفة} حول {المضمون}."
)
prompt_template.format(adjective="مضحكة", content="الدجاج")
نتيجة إخراج القالب:
'أخبرني بنكتة مضحكة حول الدجاج.'
قوالب بداية رسائل الدردشة
تستلم نماذج الدردشة قائمة من رسائل الدردشة كإدخال، ويمكن أيضًا إدارة محتوى هذه الرسائل باستخدام قوالب البداية. تختلف رسائل الدردشة عن السلاسل النصية الخام لأن كل رسالة مرتبطة بـ "دور".
على سبيل المثال، في واجهة برمجة تطبيقات إكمال الدردشة من OpenAI، يحدد نموذج الدردشة من OpenAI ثلاثة أنواع من الأدوار لرسائل الدردشة المختلفة: دور المساعد، دور الإنسان أو دور النظام:
- رسائل المساعد تشير إلى ردود الذكاء الاصطناعي.
- رسائل الإنسان تشير إلى الرسائل المرسلة من قبل المستخدم إلى الذكاء الاصطناعي.
- تُستخدم رسائل النظام عادةً لوصف هوية الذكاء الاصطناعي.
مثال على إنشاء قالب رسالة الدردشة:
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages(
[
("system", "أنتَ روبوت ذكاء اصطناعي مفيد. اسمك هو {name}."),
("human", "مرحبًا، كيف حالك؟"),
("ai", "أنا بخير، شكرًا!"),
("human", "{user_input}"),
]
)
messages = chat_template.format_messages(name="بوب", user_input="ما هو اسمك؟")
مثال آخر على تنسيق الرسالة:
from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI
chat_template = ChatPromptTemplate.from_messages(
[
SystemMessage(
content=(
"أنتَ مساعد مفيد يعيد كتابة نص المستخدم ليبدو أكثر بهجة."
)
),
HumanMessagePromptTemplate.from_template("{text}"),
]
)
messages = chat_template.format_messages(text="أنا لا أحب تناول الأشياء اللذيذة")
print(messages)
عادةً ما لا نستخدم مباشرةً دالة format_messages
لتنسيق محتوى قالب البداية، وإنما ندع الإطار اللغوي يدير ذلك تلقائيًا.