هندسة المحفزات

من الصفر إلى هندسة التحفيز المتقدمة مع Langchain في Python

mm
أضف Unite.AI إلى مصادرك المفضلة على Google

من الجوانب المهمة للنماذج اللغوية الكبيرة (LLMs) هو عدد المعاملات التي تستخدمها هذه النماذج للتعلم. كلما زادت المعاملات التي تمتلكها النموذج، زادت قدرته على فهم العلاقة بين الكلمات والعبارات. هذا يعني أن النماذج التي تحتوي على مليارات المعاملات لديها القدرة على توليد أنواع مختلفة من التنسيقات النصية الإبداعية والإجابة على الأسئلة المفتوحة والتحديات بطريقة مفيدة.

النماذج اللغوية الكبيرة مثل ChatGPT، التي تستخدم نموذج Transformer، ماهرة في فهم اللغة البشرية وتوليدها، مما يجعلها مفيدة للتطبيقات التي تتطلب فهم اللغة الطبيعية. ومع ذلك، فإنها ليست خالية من القيود، والتي تشمل المعرفة القديمة، عدم القدرة على التفاعل مع الأنظمة الخارجية، نقص فهم السياق، وأحيانًا توليد استجابات تبدو معقولة ولكنها خاطئة أو غير منطقية، من بين أمور أخرى.

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

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

في هذه المقالة، سنغوص أعمق في هذه القضايا، مستكشفين التقنيات المتقدمة لهندسة التحفيز مع Langchain، مع تقديم شرح واضح وأمثلة عملية وتعليمات خطوة بخطوة حول كيفية تنفيذها.

Langchain، وهو مكتبة متقدمة، يُحضر الراحة والمرونة في تصميم وتنفيذ وتحسين التحفيزات. بينما نكشف عن مبادئ وممارسات هندسة التحفيز، ستتعلم كيف تستخدم ميزات Langchain القوية للاستفادة من نقاط قوة نماذج الذكاء الاصطناعي التوليدي المتقدمة مثل GPT-4.

فهم التحفيزات

قبل الغوص في الجوانب الفنية لهندسة التحفيز، من المهم فهم مفهوم التحفيزات وأهميتها.

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

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

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

Langchain: أداة التحفيز الأسرع نموًا

LangChain، الذي تم إطلاقه في أكتوبر 2022 بواسطة Harrison Chase، أصبح واحدًا من الإطارات المفتوحة الأعلى تقييمًا على GitHub في 2023. يقدم واجهة مبسطة ومعيارية لدمج النماذج اللغوية الكبيرة في التطبيقات. كما يوفر واجهة غنية لمهندسة التحفيز، مما يسمح للمطورين بتجربة استراتيجيات مختلفة وتقييم نتائجهم. من خلال استخدام Langchain، يمكنك أداء مهام هندسة التحفيز بشكل أكثر فعالية و直觉.

LangFlow يخدم كواجهة مستخدم لتنسيق مكونات LangChain في مخطط تنفيذ قابل للتشغيل، مما يسمح بالتجارب السريعة والاختبارات.

LangChain يملأ فجوة حيوية في تطوير الذكاء الاصطناعي للجميع. يتيح مجموعة من تطبيقات معالجة اللغة الطبيعية مثل المساعدين الافتراضيين، مولدات المحتوى، أنظمة الإجابة على الأسئلة، وغيرها، لحل مجموعة من المشاكل الواقعية.

بدلاً من كونه نموذجًا مستقلًا أو مزودًا، LangChain يبسط التفاعل مع نماذج مختلفة، مما يوسع قدرات تطبيقات النماذج اللغوية الكبيرة وراء قيود مكالمة API بسيطة.

هيكل LangChain

 

المكونات الرئيسية في LangChain تشمل مدخلات ومخرجات النموذج، قوالب التحفيز، الذاكرة، الوكلاء، والسلاسل.

مدخلات ومخرجات النموذج

LangChain يسهل الاتصال السلس مع مختلف نماذج اللغة من خلال تغليفها بواجهة معيارية تعرف باسم مدخلات ومخرجات النموذج. هذا يسهل تبديل النموذج لتحسين الأداء أو لتحقيق أداء أفضل. LangChain يدعم مختلف مزودي نماذج اللغة، بما في ذلك OpenAI، HuggingFace، Azure، Fireworks، وغيرها.

قوالب التحفيز

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

مثال بسيط على قالب التحفيز:


<p>from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["subject"],
template="ما هي التطورات الحديثة في مجال {subject}؟")
print(prompt.format(subject="اللغة الطبيعية"))</p>

كما نتقدم في التعقيد، نجد أنماطًا أكثر تعقيدًا في LangChain، مثل نمط Reason and Act (ReAct). ReAct نمط حاسم لتنفيذ الإجراءات حيث يخصص الوكيل مهمة إلى أداة مناسبة، ويعدل الإدخال لها، ويفسخ مخرجاتها لتحقيق المهمة. مثال بايثون أدناه يظهر نمط ReAct. يظهر كيف يتم هيكلة التحفيز في LangChain، باستخدام سلسلة من الأفكار والactions لمناقشة مشكلة وتوليد إجابة نهائية:

PREFIX = """"""
FORMAT_INSTRUCTIONS = """"""
SUFFIX = """"""

الذاكرة

الذاكرة مفهوم حاسم في LangChain، مما يسمح للنماذج اللغوية الكبيرة والأدوات بالحفاظ على المعلومات مع مرور الوقت. هذا السلوك الحاصل على الحالة يحسن أداء تطبيقات LangChain من خلال تخزين الاستجابات السابقة، وتفاعلات المستخدم، حالة البيئة، وأهداف الوكيل. استراتيجيات الذاكرة مثل ConversationBufferMemory وConversationBufferWindowMemory تساعد في تتبع أجزاء كاملة أو最近 من المحادثة، على التوالي. لمقاربة أكثر تعقيدًا، يسمح استراتيجية ConversationKGMemory بترميز المحادثة كграف معرفة يمكن إعادة تغذيته إلى التحفيزات أو استخدامها لتنبؤ بالاستجابات دون استدعاء النموذج اللغوي.

الوكلاء

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

الوكلاء مجهزون بمكونات فرعية:

  • الأدوات: هذه المكونات الوظيفية.
  • أدوات التجميع: مجموعات من الأدوات.
  • منفذ الوكيل: هذا هو آليّة التنفيذ التي تسمح باختيار الأدوات.

الوكلاء في LangChain يتبعون أيضًا نمط ReAct بدون إطلاق، حيث يعتمد القرار فقط على وصف الأداة. يمكن تمديد هذه الآلية مع الذاكرة لاتخاذ قرارات تعتمد على تاريخ المحادثة الكامل. مع ReAct، بدلاً من طلب النموذج اللغوي لإكمال نصك، يمكنك تحفيزه على الاستجابة في حلقة تفكير/عمل/ملاحظة.

السلاسل

السلاسل، كما يشير اسمها، هي تسلسلات من العمليات التي تسمح لمكتبة LangChain بمعالجة مدخلات ومخرجات نموذج اللغة بشكل متسلسل. هذه المكونات الأساسية في LangChain تتكون أساسًا من روابط، والتي يمكن أن تكون سلاسل أخرى أو примитивات مثل التحفيزات أو نماذج اللغة أو الأدوات.

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

LangChain يقسم سلاسله إلى ثلاثة أنواع: سلاسل الخدمات، السلاسل العامة، وسلاسل دمج الوثائق. سنغوص في سلاسل الخدمات والسلاسل العامة لموضوعنا.

  • سلاسل الخدمات مصممة خصيصًا لاستخراج إجابات دقيقة من نماذج اللغة لمهام محددة بشكل ضيق. على سبيل المثال، لننظر إلى سلسلة LLMMathChain. هذه سلسلة خدمة تمكن نماذج اللغة من أداء حسابات رياضية. تقبل سؤالًا بلغة طبيعية، وينتج النموذج اللغوي شفرة بايثون التي يتم تنفيذها بعد ذلك لإنتاج الإجابة.
  • السلاسل العامة، من ناحية أخرى، تعمل كوحدات بناء لتشكيل سلاسل أخرى، ولكنها لا يمكن استخدامها بشكل مستقل. هذه السلاسل، مثل LLMChain، هي أساسية وتستخدم بشكل شائع لتشكيل سلاسل أخرى لتنفيذ مهام معقدة. على سبيل المثال، سلسلة LLMChain تستخدم بشكل شائع لاستجواب كائن نموذج لغوي عن طريق تنسيق الإدخال بناءً على قالب تحفيز معين ومن ثم تمريره إلى النموذج اللغوي.

تنفيذ هندسة التحفيز خطوة بخطوة مع Langchain

سنقودك خلال عملية تنفيذ هندسة التحفيز باستخدام Langchain. قبل المتابعة، تأكد من تثبيت البرامج والแพكج الضرورية.

يمكنك الاستفادة من أدوات شائعة مثل Docker وConda وPip وPoetry لتثبيت LangChain. يمكن العثور على الملفات التثبيتية ذات الصلة لكل هذه الطرق في مستودع LangChain على https://github.com/benman1/generative_ai_with_langchain. هذا يشمل ملف Dockerfile لDocker وملف requirements.txt لPip وملف pyproject.toml لPoetry وملف langchain_ai.yml لConda.

في مقالنا، سنستخدم Pip، وهو مدير الحزمة القياسي لبايثون، لتسهيل تثبيت وإدارة المكتبات الخارجية. إذا لم يكن Pip مدرجًا في توزيع بايثون الخاص بك، يمكنك تثبيته باتباع الإرشادات على https://pip.pypa.io/.

للتثبيت باستخدام Pip، استخدم الأمر pip install library_name.

ومع ذلك، لا يدير Pip البيئات بنفسه. لتحديد البيئات، نستخدم أداة virtualenv.

في القسم التالي، سنناقش دمج النماذج.

الخطوة 1: إعداد Langchain

أولاً، تحتاج إلى تثبيت حزمة Langchain. نحن نستخدم نظام التشغيل Windows. قم بتشغيل الأمر التالي في 터미널ك لتثبيته:


pip install langchain

الخطوة 2: استيراد Langchain والوحدات الضرورية الأخرى

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


<p>import langchain
from transformers import AutoModelWithLMHead, AutoTokenizer

الخطوة 3: تحميل النموذج المُدرب مسبقًا

Open AI

نماذج OpenAI يمكن الوصول إليها بسهولة من خلال مكتبة LangChain أو مكتبة العميل البايثونية لOpenAI. بشكل ملحوظ، يوفر OpenAI فئة التضمين للنماذج التضمين النصية. هناك نموذجان رئيسيان هما GPT-3.5 وGPT-4، ويتفوقان بشكل رئيسي في طول الرمز. يمكن العثور على أسعار كل نموذج على موقع OpenAI. بينما هناك نماذج أكثر تطورًا مثل GPT-4-32K التي لديها قبول رمز أعلى، توفرها عبر واجهة برمجة التطبيقات ليست دائمًا مضمونة.

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


<p>import os
os.environ["OPENAI_API_KEY"] = 'your-openai-token'</p>

بعد إنشاء المفتاح بنجاح، يمكنك تعيينه كمتغير بيئة (OPENAI_API_KEY) أو تمريره كعامل خلال إنشاء الفئة للنداءات لOpenAI.

نفترض سكريبت LangChain لتوضيح التفاعل مع نماذج OpenAI:

from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")
# النموذج اللغوي يأخذ تحفيزًا كمدخل ويخرج استكمالًا
prompt = "من هو رئيس الولايات المتحدة الأمريكية؟"
completion = llm(prompt)

<p>الرئيس الحالي للولايات المتحدة الأمريكية هو جو بايدن.</p>

في هذا المثال، يتم 초기ته الوكيل لتنفيذ الحسابات. الوكيل يأخذ إدخالًا، وهو مهمة إضافة بسيطة، ويعالجها باستخدام نموذج OpenAI المقدم، ويعيد النتيجة.

Hugging

Hugging Face هي مكتبة مجانًا للتحويلات، متوافقة مع PyTorch وTensorFlow وJAX، وتشمل تنفيذ نماذج مثل BERT وT5، وغيرها.

Hugging Face تقدم أيضًا منصة Hugging Face Hub، وهي منصة لاستضافة مخازن الشفرة، ونماذج التعلم الآلي، و مجموعات البيانات، و التطبيقات الويب.

لاستخدام Hugging Face كمزود للنماذج الخاصة بك، ستحتاج إلى حساب ومفاتيح API، والتي يمكن الحصول عليها من موقعهم. يمكن إتاحة الرمز في بيئتك ك HUGGINGFACEHUB_API_TOKEN.

نفترض شفرة بايثون التالية التي تستخدم نموذج مفتوح المصدر تم تطويره بواسطة جوجل، نموذج Flan-T5-XXL:

from langchain.llms import HuggingFaceHub

<p>llm = HuggingFaceHub(model_kwargs={"temperature": 0.5, "max_length": 64}, repo_id="google/flan-t5-xxl")
prompt = "في أي بلد تقع طوكيو؟"
completion = llm(prompt)
print(completion)</p>

هذه الشفرة تأخذ سؤالًا كمدخل وتعيد إجابة، مما يظهر المعرفة والقدرة التنبؤية للنموذج.

الخطوة 4: هندسة التحفيز الأساسية

لنبدأ بتحفيز بسيط ونرى كيف يستجيب النموذج.

prompt = 'ترجمة النص الإنجليزي التالي إلى الفرنسية: "{0}"'
input_text = 'مرحبا، كيف حالك؟'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))</p>

في الشفرة السابقة، نقدم تحفيزًا لترجمة نص إنجليزي إلى فرنسية. النموذج اللغوي يحاول ترجمة النص المحدد بناءً على التحفيز.

الخطوة 5: هندسة التحفيز المتقدمة

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

prompt = 'كمتحفز فرنسي ماهر، ترجم النص الإنجليزي التالي إلى الفرنسية: "{0}"'
input_text = 'مرحبا، كيف حالك؟'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))</p>

في هذا الشفرة، نعدل التحفيز لاقتراح أن الترجمة يتم إجراؤها بواسطة ‘مترجم فرنسي ماهر’. التغيير في التحفيز يمكن أن يؤدي إلى ترجمات محسنة، حيث يفترض النموذج الآن شخصية خبير.

بناء نظام أسئلة وأجوبة الأدب الأكاديمي مع Langchain

سنبني نظام أسئلة وأجوبة للأدب الأكاديمي باستخدام LangChain يمكنه الإجابة على أسئلة حول الأوراق الأكاديمية المنشورة حديثًا.

أولاً، لإعداد بيئتنا، نثبت التبعيات الضرورية.

pip install langchain arxiv openai transformers faiss-cpu

بعد التثبيت، ننشئ دفتر بايثون جديد ونستورد المكتبات الضرورية:

from langchain.llms import OpenAI
from langchain.chains.qa_with_sources import load_qa_with_sources_chain
from langchain.docstore.document import Document
import arxiv

الجزء الرئيسي لنظام أسئلة وأجوبة لدينا هو القدرة على استرجاع الأوراق الأكاديمية ذات الصلة المتعلقة بمجال معين، هنا نعتبر معالجة اللغة الطبيعية (NLP)، باستخدام قاعدة بيانات arXiv الأكاديمية. لتحقيق ذلك، نحدد دالة get_arxiv_data(max_results=10). هذه الدالة تجمع ملخصات الأوراق الأكاديمية الحديثة حول NLP من arXiv وتضمنها في كائنات وثائق LangChain، باستخدام الملخص كمحتوى والمعرف الفريد كمرجع.

سنستخدم واجهة برمجة التطبيقات arXiv لاسترجاع الأوراق الحديثة المتعلقة بمعالجة اللغة الطبيعية:


<p>def get_arxiv_data(max_results=10):
search = arxiv.Search(
query="NLP",
max_results=max_results,
sort_by=arxiv.SortCriterion.SubmittedDate,
)</p>

documents = []

<p>for result in search.results():
documents.append(Document(
page_content=result.summary,
metadata={"source": result.entry_id},
))</p>

return documents

هذه الدالة تسترجع ملخصات الأوراق الأكاديمية الحديثة حول NLP من arXiv وتحولها إلى كائنات وثائق LangChain. نحن نستخدم الملخص كمحتوى والمعرف الفريد كمرجع.

def print_answer(question):
print(
chain(
{
"input_documents": sources,
"question": question,
},
return_only_outputs=True,
)["output_text"]
)

دعونا نحدد مصادرنا ونضبط LangChain:

sources = get_arxiv_data(2)
chain = load_qa_with_sources_chain(OpenAI(temperature=0))

مع نظام أسئلة وأجوبة الأكاديمي جاهزًا، يمكننا اختباره عن طريق وضع سؤال:

print_answer("ما هي التطورات الحديثة في معالجة اللغة الطبيعية؟")

الإخراج سيكون إجابة على سؤالك، مع ذكر المصادر التي تم استخلاص المعلومات منها. على سبيل المثال:


<p>التطورات الحديثة في معالجة اللغة الطبيعية تشمل نماذج متابعة وتوجيه الإجراءات حيث يتم تخصيص مهمة لآلة مناسبة، وتنسيق الإدخال لها، وتنسيق مخرجاتها لتحقيق المهمة.
المصادر: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

يمكن بسهولة تبديل النماذج أو تعديل النظام حسب احتياجاتك. على سبيل المثال، هنا نغير إلى GPT-4، مما يؤدي إلى استجابة أكثر تفصيلًا:

sources = get_arxiv_data(2)
chain = load_qa_with_sources_chain(OpenAI(model_name="gpt-4", temperature=0))

<p>التطورات الحديثة في معالجة اللغة الطبيعية تشمل تطوير نماذج متابعة وتوجيه الإجراءات التي يمكن تعديلها لتنفيذ مهام مختلفة. هذه النماذج يمكنها تحليل النصوص وتوليدها، وتقديم إجابات دقيقة ومفيدة.
المصادر: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

رمز في GPT-4 يمكن أن يكون قصيرًا مثل حرف واحد أو طويلًا مثل كلمة واحدة. على سبيل المثال، GPT-4-32K يمكنه معالجة ما يصل إلى 32,000 رمز في تشغيل واحد، بينما يدعم GPT-4-8K وGPT-3.5-توربو 8,000 و4,000 رمز على التوالي. ومع ذلك، من المهم ملاحظة أن كل互одействة مع هذه النماذج تأتي بتكلفة مباشرة比例ًا لعدد الرموز المعالجة، سواء كانت مدخلة أو مخرجة.

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

يُساعد FAISS (Facebook AI Similarity Search) (META ) في العثور بسرعة على أجزاء النص الأكثر صلة بالسؤال المطرح. يخلق تمثيلًا متجهيًا لكل جزء من النص ويستخدم هذه المتجهات لتحديد واسترجاع الأجزاء الأكثر تشابهًا مع تمثيل متجهي السؤال.

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

pip install faiss-cpu langchain CharacterTextSplitter

بعد التأكد من تثبيت المكتبات المذكورة أعلاه، قم بتشغيل

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.faiss import FAISS
from langchain.text_splitter import CharacterTextSplitter
documents = get_arxiv_data(max_results=10) # يمكننا الآن استخدام المزيد من البيانات
document_chunks = []
splitter = CharacterTextSplitter(separator=" ", chunk_size=1024, chunk_overlap=0)
for document in documents:
for chunk in splitter.split_text(document.page_content):
document_chunks.append(Document(page_content=chunk, metadata=document.metadata))

<p>search_index = FAISS.from_documents(document_chunks, OpenAIEmbeddings())</p>

<p>chain = load_qa_with_sources_chain(OpenAI(temperature=0))</p>

<p>def print_answer(question):
print(
chain(
{
"input_documents": search_index.similarity_search(question, k=4),
"question": question,
},
return_only_outputs=True,
)["output_text"]
)

مع اكتمال الشفرة، نحن الآن نمتلك أداة قوية لاستجواب الأدب الأكاديمي الحديث في مجال معالجة اللغة الطبيعية.

التطورات الحديثة في معالجة اللغة الطبيعية تشمل استخدام الشبكات العصبية العميقة (DNNs) لتحليل النصوص وتوليدها، بالإضافة إلى مهام معالجة اللغة الطبيعية مثل فحص الإملاء، كشف اللغة، استخراج الكيانات، كشف المؤلف، الإجابة على الأسئلة، وغيرها.
المصادر: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1

الختام

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

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

كما هو موضح في الدليل خطوة بخطوة، Langchain يمكنه تشغيل تطبيقات قوية، مثل نظام أسئلة وأجوبة الأدب الأكاديمي. مع مجتمع مستخدمين متزايدًا وزيادة أهميته في المناظر المفتوحة المصدر، Langchain يعد أداة حاسمة في استغلال إمكانات النماذج اللغوية الكبيرة مثل GPT-4.

التفاعلات. كما هو موضح في الدليل خطوة بخطوة، Langchain يمكنه تشغيل تطبيقات قوية، مثل نظام أسئلة وأجوبة الأدب الأكاديمي. مع مجتمع مستخدمين متزايدًا وزيادة أهميته في المناظر المفتوحة المصدر، Langchain يعد أداة حاسمة في استغلال إمكانات النماذج اللغوية الكبيرة مثل GPT-4.

لقد قمت بإنفاق الخمس سنوات الماضية في غمرة العالم المثير للاهتمام من التعلم الآلي والتعلم العميق. وقد أدت شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا متنوعًا في هندسة البرمجيات، مع التركيز بشكل خاص على الذكاء الاصطناعي والتعلم الآلي. كما أدت فضولي المستمر إلى جذبي نحو معالجة اللغة الطبيعية، وهو مجال أنا متحمس لاستكشافه بشكل أكبر.