مقدمة في إطار عمل LangChain: ثورة ربط وتطوير تطبيقات الذكاء الاصطناعي


مرحباً بكم أيها المطورون! اليوم، سنتعلم كيفية بناء تطبيق بسيط لنموذج لغوي كبير (LLM) باستخدام إطار عمل LangChain، وسنستكشف أساسيات ربط المكونات لإنشاء سلسلة وظيفية.

سنقوم ببناء سلسلة بسيطة تستقبل سؤالاً وتستخدم نموذجاً لغوياً للإجابة عليه.

الخطوة 1: تهيئة البيئة وتثبيت المكتبات

قبل البدء، نحتاج إلى تثبيت مكتبتي LangChain و OpenAI. بعد ذلك، سنقوم بإعداد مفتاح API الخاص بنا لنموذج OpenAI وتهيئة النموذج اللغوي.

ملاحظة تقنية: LangChain يدعم العديد من نماذج LLM، ولكننا سنستخدم OpenAI في هذا الدرس لسهولته وشعبيته.
# تثبيت المكتبات المطلوبة
# pip install langchain openai

import os
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# قم بتعيين مفتاح API الخاص بك لـ OpenAI
# من الأفضل ألا يتم تضمين المفتاح مباشرة في الكود، ولكن لأغراض الشرح سنضعه هنا
# في بيئة الإنتاج، استخدم متغيرات البيئة (os.environ["OPENAI_API_KEY"] = "...")
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" # استبدل هذا بمفتاحك الحقيقي

# تهيئة نموذج اللغة الكبير (LLM)
# نستخدم ChatOpenAI الذي يعتبر ممتازاً للمحادثات
llm = ChatOpenAI(temperature=0.7, model_name="gpt-3.5-turbo")

الخطوة 2: بناء قالب السؤال (Prompt Template)

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

# تعريف قالب السؤال (Prompt Template)
# هذا القالب يحدد كيف سيتم صياغة السؤال قبل إرساله إلى LLM
template = "أنت مساعد ذكاء اصطناعي مفيد. أجب على السؤال التالي: {question}"

# إنشاء كائن PromptTemplate
# input_variables هي المتغيرات التي سيتوقعها القالب (في هذه الحالة 'question')
prompt = PromptTemplate(input_variables=["question"], template=template)

الخطوة 3: تجميع السلسلة (Chain) وتنفيذها

الآن بعد أن أصبح لدينا نموذج لغوي وقالب سؤال، يمكننا تجميعهما في "سلسلة" (Chain). السلسلة هي حجر الزاوية في LangChain، حيث تربط المكونات معاً لإنشاء تدفق عمل متكامل. ثم نقوم بتشغيل السلسلة للحصول على الإجابة.

# إنشاء سلسلة LLM (LLMChain)
# تربط هذه السلسلة قالب السؤال بالنموذج اللغوي
llm_chain = LLMChain(prompt=prompt, llm=llm)

# السؤال الذي نريد طرحه
question_text = "ما هي عاصمة فرنسا؟"

# تشغيل السلسلة للحصول على الإجابة
# هنا نقوم بتمرير قيمة المتغير 'question' إلى السلسلة
response = llm_chain.invoke({"question": question_text})

# طباعة الإجابة
print("السؤال:", question_text)
print("الإجابة:", response['text'])

الكود النهائي الكامل

هذا هو السكربت كاملاً، جاهز للنسخ واللصق والتشغيل (بعد استبدال مفتاح API الخاص بك).

# تثبيت المكتبات المطلوبة
# pip install langchain openai

import os
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# قم بتعيين مفتاح API الخاص بك لـ OpenAI
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" # استبدل هذا بمفتاحك الحقيقي

# تهيئة نموذج اللغة الكبير (LLM)
llm = ChatOpenAI(temperature=0.7, model_name="gpt-3.5-turbo")

# تعريف قالب السؤال (Prompt Template)
template = "أنت مساعد ذكاء اصطناعي مفيد. أجب على السؤال التالي: {question}"
prompt = PromptTemplate(input_variables=["question"], template=template)

# إنشاء سلسلة LLM (LLMChain)
llm_chain = LLMChain(prompt=prompt, llm=llm)

# السؤال الذي نريد طرحه
question_text = "ما هي عاصمة فرنسا؟"

# تشغيل السلسلة للحصول على الإجابة
response = llm_chain.invoke({"question": question_text})

# طباعة الإجابة
print("السؤال:", question_text)
print("الإجابة:", response['text'])

النتيجة المتوقعة

عند تشغيل السكربت، ستحصل على مخرجات مشابهة لما يلي (قد تختلف الصياغة قليلاً بناءً على استجابة النموذج اللغوي):

السؤال: ما هي عاصمة فرنسا؟
الإجابة: عاصمة فرنسا هي باريس.