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

يتعلق جانب هام من نماذج اللغة الكبيرة (LLMs) بعدد المعلمات التي تستخدمها هذه النماذج للتعلم. كلما زادت المعلمات التي يتمتع بها النموذج، زادت قدرته على فهم العلاقة بين الكلمات والعبارات. هذا يعني أن النماذج التي تحتوي على مليارات المعلمات لديها القدرة على توليد تنسيقات نصية إبداعية مختلفة والإجابة على أسئلة مفتوحة وصعبة بطريقة مفيدة.
تعتبر نماذج LLMs مثل ChatGPT ، التي تستخدم نموذج Transformer ، ماهرة في فهم اللغة البشرية وتوليدها ، مما يجعلها مفيدة للتطبيقات التي تتطلب فهم اللغة الطبيعية. ومع ذلك ، فإنها ليست خالية من القيود ، والتي تشمل المعرفة القديمة ، وعدم القدرة على التفاعل مع الأنظمة الخارجية ، وعدم فهم السياق ، وأحيانًا توليد استجابات تبدو معقولة ولكنها خاطئة أو غير منطقية ، من بين أمور أخرى.
يتطلب معالجة هذه القيود دمج LLMs مع مصادر بيانات وقدرات خارجية ، مما يمكن أن يعرض تعقيدات وتطلب مهارات برمجة وتنسيق بيانات شاملة. هذا ، بالإضافة إلى تحديات فهم مفاهيم الذكاء الاصطناعي والخوارزميات المعقدة ، يساهم في منحنى التعلم المرتبط بتطوير التطبيقات باستخدام LLMs.
ومع ذلك ، يمكن أن يعيد دمج LLMs مع أدوات أخرى لتشكيل تطبيقات مدعومة bởi LLMs إعادة تعريف المناظير الرقمية الخاصة بنا. إن إمكانات هذه التطبيقات واسعة النطاق ، بما في ذلك تحسين الكفاءة والإنتاجية ، وتسهيل المهام ، وتحسين اتخاذ القرارات ، وتقديم تجارب مخصصة.
في هذه المقالة ، سوف نغوص في هذه القضايا ، مستكشفين التقنيات المتقدمة للهندسة المتقدمة للتحفيز مع Langchain ، مع تقديم تفسيرات واضحة وأمثلة عملية وتعليمات خطوة بخطوة حول كيفية تنفيذها.
Langchain ، وهو مكتبة متقدمة ، يُحضر الراحة والمرونة لتصميم وتنفيذ وتحسين التحفيزات. كما نكشف عن مبادئ وممارسات هندسة التحفيز ، ستتعلم كيفية استخدام ميزات Langchain القوية للاستفادة من نقاط القوة لنماذج Generative AI مثل GPT-4.
فهم التحفيزات
قبل الغوص في الجوانب الفنية للهندسة المتقدمة للتحفيز ، من الضروري فهم مفهوم التحفيزات وأهميتها.
“‘تحفيز’ هو تسلسل من الرموز التي يتم استخدامها كمدخل إلى نموذج اللغة ، لتعليمها توليد نوع معين من الاستجابة. تلعب التحفيزات دورًا حاسمًا في توجيه سلوك النموذج. يمكن أن تؤثر على جودة النص المتولد ، وعندما يتم صياغتها بشكل صحيح ، يمكن أن تساعد النموذج على تقديم نتائج رائعة ودقيقة ومتعلقة بالسياق.
تعتبر هندسة التحفيز فنًا وعلومًا لتصميم تحفيزات فعالة. الهدف هو استخراج الإخراج المرغوب منه من نموذج اللغة. من خلال اختيار التحفيزات بعناية وتنظيمها ، يمكن توجيه النموذج نحو توليد استجابات أكثر دقة وملائمة. في الممارسة ، يتضمن هذا الأمر تحسين العبارات المدخلة لتناسب التحيزات التدريبية والهيكلية للنموذج.
تتراوح تعقيدات هندسة التحفيز من تقنيات بسيطة ، مثل تغذية النموذج بالكلمات الرئيسية ذات الصلة ، إلى أساليب أكثر تقدمًا تتضمن تصميم تحفيزات معقدة ومنظمة تستخدم الآليات الداخلية للنموذج لصالحها.
Langchain: أداة التحفيز الأسرع نموًا
تم إطلاق LangChain في أكتوبر 2022 بواسطة Harrison Chase ، وأصبح أحد الإطارات المفتوحة ذات التصنيف الأعلى على GitHub في 2023. يقدم واجهة موحدة ومبسطة لدمج نماذج اللغة الكبيرة (LLMs) في التطبيقات. كما يوفر واجهة غنية بالميزات للهندسة المتقدمة للتحفيز ، مما يسمح للمطورين بالتجربة مع استراتيجيات مختلفة وتقييم نتائجهم. من خلال استخدام Langchain ، يمكنك أداء مهام هندسة التحفيز بشكل أكثر فعالية وذكاء.
LangFlow يخدم كواجهة مستخدم لتنسيق مكونات LangChain في مخطط تنفيذ قابل للتنفيذ ، مما يسمح بالبروتوتايب السريع والتجربة.

LangChain يملأ فجوة حاسمة في تطوير الذكاء الاصطناعي للجماهير. يسمح بمجموعة من تطبيقات NLP مثل المساعدين الافتراضيين ، ومولدات المحتوى ، وأنظمة الإجابة على الأسئلة ، وغيرها ، لحل مجموعة من المشاكل الحقيقية في العالم.
بدلاً من أن يكون نموذجًا مستقلًا أو مزودًا ، يبسط LangChain التفاعل مع نماذج متنوعة ، مما يوسع قدرات تطبيقات LLMs إلى ما هو أبعد من قيود مكالمة API بسيطة.
هيكل LangChain
يتضمن مكونات LangChain الرئيسية مدخلات ومخرجات النموذج ، وقوالب التحفيز ، والذاكرة ، والوكلاء ، والسلاسل.
مدخلات ومخرجات النموذج
يُسهل LangChain الاتصال السلس مع نماذج اللغة المختلفة من خلال تغليفها بواجهة موحدة تعرف باسم مدخلات ومخرجات النموذج. هذا يُسهل التبديل السلس بين النماذج لتحسين الأداء أو الأداء الأفضل. يدعم LangChain العديد من مزودي نماذج اللغة ، بما في ذلك OpenAI ، HuggingFace ، Azure ، Fireworks ، وغيرها.
قوالب التحفيز
تُستخدم هذه القوالب لإدارة وتحسين التفاعل مع LLMs من خلال تقديم تعليمات أو أمثلة موجزة. يعزز تحسين التحفيز أداء النموذج ، ويساهم مرونتها بشكل كبير في عملية الإدخال.
مثال بسيط على قالب التحفيز:
from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["subject"],
template="ما هي التطورات الحديثة في مجال {subject}؟")
print(prompt.format(subject="اللغة الطبيعية"))
كما نتقدم في التعقيد ، نجد أنماطًا أكثر تعقيدًا في LangChain ، مثل نمط Reason and Act (ReAct). ReAct نمط حيوي لتنفيذ الإجراءات حيث يخصص الوكيل مهمة إلى أداة مناسبة ، ويتخصّص الإدخال لها ، ويفسّر الإخراج لتحقيق المهمة. يوضح مثال Python التالي كيف يتم هيكلة التحفيز في LangChain ، باستخدام سلسلة من الأفكار والإجراءات لreasoning من خلال مشكلة وإنتاج إجابة نهائية:
PREFIX = """""" FORMAT_INSTRUCTIONS = """""" SUFFIX = """"""
الذاكرة
الذاكرة مفهوم حاسم في LangChain ، مما يسمح للنماذج والtools بالحفاظ على المعلومات مع مرور الوقت. يعزز هذا السلوك القائم على الحالة أداء تطبيقات LangChain من خلال تخزين الاستجابات السابقة ، وتفاعلات المستخدم ، وحالة البيئة ، وأهداف الوكيل. تساعد استراتيجيات ConversationBufferMemory و ConversationBufferWindowMemory في تتبع جزء كامل أو حديث من المحادثة ، على التوالي. لنهج أكثر تعقيدًا ، تسمح استراتيجية ConversationKGMemory بترميز المحادثة كграف معرفة يمكن إعادة تغذيته في التحفيزات أو استخدامها للتنبؤ بالاستجابات دون الاتصال بنموذج LLM.
الوكلاء
يتفاعل الوكيل مع العالم من خلال أداء الإجراءات والمهام. في LangChain ، يجمع الوكلاء الأدوات والسلاسل لتنفيذ المهام. يمكنه أن يؤسس اتصالًا بالعالم الخارجي لاسترجاع المعلومات لتعزيز معرفة LLMs ، وبالتالي التغلب على القيود المتأصلة فيها. يمكنه أن يقرر تمرير الحسابات إلى آلة حاسبة أو مترجم Python حسب الحالة.
الوكلاء مجهزون بمكونات فرعية:
- الأدوات: هذه المكونات الوظيفية.
- أدوات التكامل: مجموعات من الأدوات.
- تنفيذ الوكلاء: هذا هو آليّة التنفيذ التي تسمح باختيار الأدوات.
الوكلاء في LangChain يتبعون أيضًا نمط ReAct بدون إطلاق النار ، حيث يعتمد القرار فقط على وصف الأداة. يمكن تمديد هذه الآلية بالذاكرة من أجل مراعاة تاريخ المحادثة الكامل. مع ReAct ، بدلاً من طلب نموذج LLM لإكمال النص ، يمكنك تحفيزه على الاستجابة في دورة التفكير / الإجراء / الملاحظة.
السلاسل
السلاسل ، كما يشير الاسم ، هي تسلسلات من العمليات التي تسمح لمكتبة LangChain بمعالجة مدخلات ومخرجات نموذج اللغة بسلاسة. هذه المكونات الأساسية من LangChain تتكون بشكل أساسي من روابط ، والتي يمكن أن تكون سلاسل أخرى ، أو البدائيات مثل التحفيزات أو النماذج أو الأدوات.
تخيل سلسلة كخط تجميع في مصنع. كل خطوة على هذا الخط تمثل عملية معينة ، والتي يمكن أن تكون استدعاء نموذج اللغة ، أو تطبيق وظيفة Python على نص ، أو حتى تحفيز النموذج بطريقة معينة.
LangChain يصنف سلاسله إلى ثلاثة أنواع: سلاسل الخدمات ، وسلاسل عامة ، وسلاسل دمج الوثائق. سنغوص في سلاسل الخدمات وسلاسل عامة لمناقشتنا.
- سلاسل الخدمات مصممة خصيصًا لاستخراج إجابات دقيقة من نماذج اللغة لمهام محددة بدقة. على سبيل المثال ، لنأخذ نظرة على LLMMathChain. هذه سلسلة خدمة تمكن نماذج اللغة من أداء الحسابات الرياضية. تقبل سؤالًا بلغة طبيعية ، ويتولى نموذج اللغة توليد شفرة Python ، والتي يتم تنفيذها بعد ذلك لإنتاج الإجابة.
- السلاسل العامة ، من ناحية أخرى ، تعمل كوحدات بناء لتشكيل سلاسل أخرى ، ولكن لا يمكن استخدامها بشكل مستقل. هذه السلاسل ، مثل LLMChain ، هي أساسية وغالبًا ما يتم دمجها مع سلاسل أخرى لتحقيق مهام معقدة. على سبيل المثال ، يتم استخدام LLMChain بشكل متكرر لاستجواب كائن نموذج اللغة bằng تنسيق الإدخال وفقًا لقالب تحفيز معين ومن ثم تمريره إلى نموذج اللغة.
تنفيذ هندسة التحفيز خطوة بخطوة مع 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 ، وهو مدير الحزم القياسي ل Python ، لتسهيل تثبيت وإدارة المكتبات الخارجية. إذا لم يكن موجودًا في توزيع Python الخاص بك ، يمكنك تثبيت Pip bằng اتباع الإرشادات في https://pip.pypa.io/.
لتحميل مكتبة باستخدام Pip ، استخدم الأمر pip install library_name.
然而 ، لا يدير Pip البيئات بنفسه. لتحديد البيئات المختلفة ، نستخدم أداة virtualenv.
في القسم التالي ، سنناقش دمج النماذج.
الخطوة 1: إعداد Langchain
أولاً ، تحتاج إلى تثبيت حزمة Langchain. نحن نستخدم نظام التشغيل Windows. قم بتشغيل الأمر التالي في طرفية لتحميله:
pip install langchain
الخطوة 2: استيراد Langchain والوحدات الضرورية الأخرى
بعد ذلك ، استيرد Langchain جنبًا إلى جنب مع الوحدات الضرورية الأخرى. هنا ، نستيرد أيضًا مكتبة transformers ، التي يتم استخدامها على نطاق واسع في مهام NLP.
import langchain from transformers import AutoModelWithLMHead, AutoTokenizer
الخطوة 3: تحميل النموذج المُدرب مسبقًا
Open AI
نماذج OpenAI يمكن أن تتفاعل بسهولة مع مكتبة LangChain أو مكتبة OpenAI Python. بشكل ملحوظ ، يوفر OpenAI فئة التضمين لنماذج التضمين النصي. هناك نموذجان رئيسيان من LLMs هما GPT-3.5 و GPT-4 ، ويتفوقان بشكل رئيسي في طول الرمز. يمكن العثور على أسعار كل نموذج على موقع OpenAI. بينما هناك نماذج أكثر تطويرًا مثل GPT-4-32K التي لديها قبول رمز أعلى ، فإن توفرها عبر واجهة برمجة التطبيقات ليس دائمًا مضمونًا.
يتطلب الوصول إلى هذه النماذج مفتاح API من OpenAI. يمكن القيام بذلك عن طريق إنشاء حساب على منصة OpenAI ، وضبط معلومات الفاتورة ، وإنشاء مفتاح سري جديد.
import os os.environ["OPENAI_API_KEY"] = 'your-openai-token'
بعد إنشاء المفتاح بنجاح ، يمكنك تعيينه كمتغير بيئة (OPENAI_API_KEY) أو تمريره ك매개변ر أثناء إنشاء الفئة لاستدعاءات OpenAI.
نظرًا إلى نص LangChain لتوضيح التفاعل مع نماذج OpenAI:
from langchain.llms import OpenAI llm = OpenAI(model_name="text-davinci-003") # يتولى LLM التحفيز كمدخل ويخرج استكمالًا prompt = "من هو رئيس الولايات المتحدة الأمريكية؟" completion = llm(prompt)
الرئيس الحالي للولايات المتحدة الأمريكية هو جو بايدن.
في هذا المثال ، يتم 초기化 وكلاء لتنفيذ الحسابات. يتولى الوكيل المدخل ، وهو مهمة إضافة بسيطة ، ويعالجها باستخدام نموذج OpenAI المقدم ، ويعيد النتيجة.
Hugging Face
Hugging Face هي مكتبة Transformers Python المجانية ، متوافقة مع PyTorch و TensorFlow و JAX ، وتشمل تنفيذ نماذج مثل BERT ، T5 ، وغيرها.
Hugging Face تقدم أيضًا Hugging Face Hub ، وهو منصة لاستضافة مستودعات الشفرة ، ونماذج التعلم الآلي ، و مجموعات البيانات ، و تطبيقات الويب.
لاستخدام Hugging Face كمزود للنماذج الخاصة بك ، ستحتاج إلى حساب و مفتاح API ، يمكن الحصول عليهما من موقعهم. يمكن جعل الرمز متاحًا في بيئتك ك HUGGINGFACEHUB_API_TOKEN.
نظرًا إلى شفرة Python التالية التي تستخدم نموذج مفتوح المصدر تم تطويره بواسطة Google ، نموذج Flan-T5-XXL:
from langchain.llms import HuggingFaceHub
llm = HuggingFaceHub(model_kwargs={"temperature": 0.5, "max_length": 64}, repo_id="google/flan-t5-xxl")
prompt = "في أي بلد تقع طوكيو؟"
completion = llm(prompt)
print(completion)
هذه الشفرة تأخذ سؤالًا كمدخل وترجع إجابة ، مما يظهر معرفة و قدرة التنبؤ للنموذج.
الخطوة 4: هندسة التحفيز الأساسية
لنبدأ ، سنوليد تحفيزًا بسيطًا ونتابع كيف يستجيب النموذج.
prompt = 'ترجمة النص الإنجليزي التالي إلى الفرنسية: "{0}"'
input_text = 'مرحبا ، كيف حالك؟'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')
generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
في الشفرة السابقة ، نقدم تحفيزًا لترجمة نص إنجليزي إلى الفرنسية. ثم يتولى نموذج اللغة محاولة ترجمة النص المقدم بناءً على التحفيز.
الخطوة 5: هندسة التحفيز المتقدمة
بينما تعمل الطريقة السابقة جيدًا ، لا تأخذ بالكامل قوة هندسة التحفيز. دعونا نطورها من خلال إدخال هياكل تحفيز أكثر تعقيدًا.
prompt = 'كمتحويل محترف للغة الفرنسية ، ترجم النص الإنجليزي التالي إلى الفرنسية: "{0}"'
input_text = 'مرحبا ، كيف حالك؟'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')
generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
في هذه الشفرة ، نعدل التحفيز ليشير إلى أن الترجمة يتم إجراؤها بواسطة “مترجم فرنسي محترف”. التغيير في التحفيز يمكن أن يؤدي إلى تحسين الترجمات ، حيث يفترض النموذج الآن دور خبير.
بناء نظام أسئلة وأجوبة للأدب الأكاديمي مع 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). لتحقيق ذلك ، نحدد دالة get_arxiv_data(max_results=10). هذه الدالة تجمع ملخصات الأوراق الأكاديمية الحديثة في NLP من قاعدة بيانات arXiv و تغلفها في كائنات وثائق LangChain ، باستخدام الملخص كمحتوى والمعرف الفريد كمرجع.
نستخدم واجهة برمجة تطبيقات arXiv لاسترجاع الأوراق الحديثة المتعلقة بمعالجة اللغة الطبيعية:
def get_arxiv_data(max_results=10):
search = arxiv.Search(
query="NLP",
max_results=max_results,
sort_by=arxiv.SortCriterion.SubmittedDate,
)
documents = []
for result in search.results():
documents.append(Document(
page_content=result.summary,
metadata={"source": result.entry_id},
))
return documents
هذه الدالة تسترجع ملخصات الأوراق الأكاديمية الحديثة في مجال معالجة اللغة الطبيعية من 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))
مع نظام أسئلة وأجوبة الأكاديمي جاهزًا ، يمكننا اختباره bằng سؤال:
print_answer("ما هي التطورات الحديثة في معالجة اللغة الطبيعية؟")
الإخراج سيكون إجابة على سؤالك ، مع ذكر المراجع التي تم استخراج المعلومات منها. على سبيل المثال:
التطورات الحديثة في معالجة اللغة الطبيعية تشمل استخدام نماذج الشبكات العصبية العميقة (DNNs) لتحليل النص التلقائي ومهام معالجة اللغة الطبيعية (NLP) مثل فحص الإملاء ، وكشف اللغة ، و استخراج الكيان ، و كشف المؤلف ، و الإجابة على الأسئلة ، وغيرها من المهام. المصادر: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1
يمكنك بسهولة التبديل بين النماذج أو تعديل النظام حسب احتياجاتك. على سبيل المثال ، هنا نغير إلى GPT-4 الذي يؤدي إلى إجابة أكثر تفصيلًا:
sources = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(model_name="gpt-4", temperature=0))
التطورات الحديثة في معالجة اللغة الطبيعية تشمل استخدام نماذج الشبكات العصبية العميقة (DNNs) لتحليل النص التلقائي ومهام معالجة اللغة الطبيعية (NLP) مثل فحص الإملاء ، وكشف اللغة ، و استخراج الكيان ، و كشف المؤلف ، و الإجابة على الأسئلة ، وغيرها من المهام. كما تشمل التطورات استخدام نماذج اللغة الكبيرة (LLMs) لتحليل النص وتوليد نص جديد. المصادر: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1
رمز التوكين في GPT-4 يمكن أن يكون قصيرًا مثل حرف واحد أو طويلًا مثل كلمة واحدة. على سبيل المثال ، GPT-4-32K يمكنه معالجة ما يصل إلى 32,000 رمز في تشغيل واحد ، بينما يدعم GPT-4-8K و GPT-3.5-turbo 8,000 و 4,000 رمز على التوالي. ومع ذلك ، من المهم ملاحظة أن كل互одействة مع هذه النماذج تأتي بتكلفة مباشرة متناسبة مع عدد الرموز المعالجة ، سواء كانت مدخلات أو مخرجات.
في سياق نظام أسئلة وأجوبة الأكاديمي ، إذا تجاوزت قطعة من الأدب الأكاديمي الحد الأقصى لعدد الرموز ، فإن النظام لن يتمكن من معالجتها بالكامل ، مما يؤثر على جودة و اكتمال الإجابات. لتحقيق هذا ، يمكن تقسيم النص إلى أجزاء أصغر تتوافق مع حد الرموز.
FAISS (Facebook AI Similarity Search) يساعد في العثور بسرعة على أجزاء النص الأكثر صلة بالسؤال المقدم. يخلق تمثيلًا متجهًا لكل جزء من النص ويستخدم هذه المتجهات لتحديد و استرجاع الأجزاء الأكثر تشابهًا مع تمثيل السؤال.
من المهم تذكر أن استخدام هذه النماذج يأتي مع اعتبارات التكلفة ، حيث أن معالجة الرموز تؤثر مباشرة على التكلفة.
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))
search_index = FAISS.from_documents(document_chunks, OpenAIEmbeddings())
chain = load_qa_with_sources_chain(OpenAI(temperature=0))
def print_answer(question):
print(
chain(
{
"input_documents": search_index.similarity_search(question, k=4),
"question": question,
},
return_only_outputs=True,
)["output_text"]
)
مع اكتمال الشفرة ، لدينا الآن أداة قوية لاستجواب الأدب الأكاديمي الحديث في مجال معالجة اللغة الطبيعية.
التطورات الحديثة في معالجة اللغة الطبيعية تشمل استخدام نماذج الشبكات العصبية العميقة (DNNs) لتحليل النص التلقائي ومهام معالجة اللغة الطبيعية (NLP) مثل فحص الإملاء ، وكشف اللغة ، و استخراج الكيان ، و كشف المؤلف ، و الإجابة على الأسئلة ، وغيرها من المهام. المصادر: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1
الختام
دمج نماذج اللغة الكبيرة (LLMs) في التطبيقات قد يعجل بتبني العديد من المجالات ، بما في ذلك الترجمة اللغوية ، وتحليل المشاعر ، و استرجاع المعلومات. هندسة التحفيز هي أداة قوية في تحقيق أقصى استفادة من هذه النماذج ، و Langchain يتصدر الطريق في تبسيط هذه المهمة المعقدة. واجهته الموحدة ، وقوالب التحفيز المرنة ، ودمج النماذج القوي ، و الاستخدام المبتكر للوكلاء والسلاسل ، يضمنون نتائج مثالية لأداء LLMs.
ومع ذلك ، على الرغم من هذه التطورات ، هناك بعض النصائح التي يجب مراعاتها. أثناء استخدام Langchain ، من الضروري فهم أن جودة الإخراج تعتمد بشكل كبير على صياغة التحفيز. التجربة مع أنماط وأشكال تحفيز مختلفة يمكن أن تؤدي إلى نتائج محسنة. بالإضافة إلى ذلك ، من المهم تذكر أن Langchain يدعم مجموعة متنوعة من نماذج اللغة ، وكل نموذج له نقاط قوة و ضعف. اختيار النموذج المناسب لمهمة محددة هو أمر بالغ الأهمية. أخيرًا ، من المهم تذكر أن استخدام هذه النماذج يأتي مع اعتبارات التكلفة ، حيث أن معالجة الرموز تؤثر مباشرة على التكلفة.
كما هو موضح في الدليل خطوة بخطوة ، يمكن أن Langchain قوى تطبيقات قوية ، مثل نظام أسئلة وأجوبة الأدب الأكاديمي. مع مجتمع مستخدمين متزايد و أهمية متزايدة في المناظير المفتوحة ، Langchain يعد أداة واعدة في استغلال إمكانيات كاملة لنماذج LLMs مثل GPT-4.















