نماذج الدردشة

نماذج الدردشة هي متغير من نماذج اللغة. على الرغم من استخدام نماذج الدردشة (Chat models) نماذج اللغة (LLM) على المستوى الأساسي، فإن واجهاتها العامة مختلفة إلى حد ما. بدلاً من تعريض واجهة برمجة تطبيقات (API) لـ "إدخال نص، إخراج نص"، يتم استخدام واجهة تأخذ "رسائل الدردشة" كإدخال وإخراج. عملية التفاعل بأكملها لنماذج الدردشة مشابهة لعملية تبادل رسائل الدردشة.

البدء مع نماذج الدردشة

الإعداد

من الافتراضي أن LangChain ليس لديه تبعيات النموذج المثبتة. أولاً، قم بتثبيت حزمة OpenAI Python:

pip install langchain-openai

يتطلب الوصول إلى واجهة برمجة التطبيقات (API) مفتاحًا، يمكن تكوينه عبر متغيرات البيئة. يوضح المثال التالي كيفية ضبطه في بيئة Linux:

export OPENAI_API_KEY="..."

إذا كنت تفضل عدم ضبط المتغيرات في البيئة، يمكنك تمرير المفتاح مباشرةً من خلال المعامل المسمى openai_api_key عند تهيئة فئة OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

بالإضافة إلى ذلك، يمكنك تهيئته بدون أي معاملات:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

الرسائل

واجهة نموذج الدردشة تعتمد على أنواع الرسائل بدلاً من النص الخام. أنواع الرسائل المدعومة حالياً بواسطة LangChain تشمل AIMessage, HumanMessage, SystemMessage, FunctionMessage, و ChatMessage، حيث يتطلب ChatMessage معلمة دور عشوائية. في معظم الحالات، ستتعامل فقط مع HumanMessage, AIMessage, و SystemMessage.

LCEL

ينفذ نموذج الدردشة واجهة التشغيل (Runnable interface)، داعمًا لأساليب مثل invoke, ainvoke, stream, astream, batch, abatch, astream_log، وبالتالي يمكن استخدام نموذج الدردشة أيضًا لتعابير لغة سلسلة LangChain (LCEL).

يقبل نموذج الدردشة List[BaseMessage] كإدخال، أو يمكنه قبول الكائنات التي يمكن تحويلها إلى رسائل، بما في ذلك str (تحويلها إلى HumanMessage) و PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="أنت مساعد مفيد"),
    HumanMessage(content="ما هو الغرض من تنظيم النموذج؟"),
]

استدعاء النموذج بمجموعة من الرسائل:

chat.invoke(messages)

مثال على الرسالة المُرجعة:

AIMessage(content="محتوى رد الذكاء الاصطناعي...التفاصيل المحذوفة...")

تيار إخراج رد الذكاء الاصطناعي:

for chunk in chat.stream(messages):
    print(chunk.content, end="", flush=True)