رطم من الصفر إلى الهندسة السريعة المتقدمة مع Langchain في Python - Unite.AI
اتصل بنا للحصول على مزيد من المعلومات

موجه الهندسة

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

mm
تحديث on

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

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

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

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

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

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

فهم الموجهات

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

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

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

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

Langchain: الأداة السريعة الأسرع نموًا

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

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

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

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

هندسة LangChain

 

تتضمن مكونات LangChain الرئيسية نموذج الإدخال / الإخراج ، والقوالب السريعة ، والذاكرة ، والوكلاء ، والسلاسل.

نموذج I / O

يسهل LangChain الاتصال السلس بنماذج اللغات المختلفة عن طريق تغليفها بواجهة قياسية تُعرف باسم Model I / O. هذا يسهل تبديل النموذج بدون جهد لتحسين أو أداء أفضل. يدعم LangChain مختلف موفري نماذج اللغة ، بما في ذلك OpenAI, تعانق الوجه, Azure, Fireworks,en، وأكثر من ذلك.

قوالب موجه

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

مثال بسيط على قالب موجه:

from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["subject"],
template="What are the recent advancements in the field of {subject}?")
print(prompt.format(subject="Natural Language Processing"))

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

PREFIX = """Answer the following question using the given tools:"""
FORMAT_INSTRUCTIONS = """Follow this format:
Question: {input_question}
Thought: your initial thought on the question
Action: your chosen action from [{tool_names}]
Action Input: your input for the action
Observation: the action's outcome"""
SUFFIX = """Start!
Question: {input}
Thought:{agent_scratchpad}"""

مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء

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

وسيط عقاري

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

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

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

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

السلاسل

السلاسل ، كما يوحي المصطلح ، هي سلاسل من العمليات التي تسمح لمكتبة LangChain بمعالجة مدخلات ومخرجات نموذج اللغة بسلاسة. تتكون هذه المكونات المتكاملة لـ LangChain بشكل أساسي من روابط ، والتي يمكن أن تكون سلاسل أخرى أو بدائل مثل المطالبات أو نماذج اللغة أو الأدوات المساعدة.

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

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

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

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

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

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

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

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

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

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

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

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

pip install langchain

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

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

import langchain
from transformers import AutoModelWithLMHead, AutoTokenizer

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

افتح منظمة العفو الدولية

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

يتطلب الوصول إلى هذه النماذج مفتاح OpenAI API. يمكن القيام بذلك عن طريق إنشاء حساب على منصة 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")
# The LLM takes a prompt as an input and outputs a completion
prompt = "who is the president of the United States of America?"
completion = llm(prompt)
The current President of the United States of America is Joe Biden.

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

وجه يعانق

وجه يعانق هو مجاني للاستخدام مكتبة Transformers Python ، متوافقة مع PyTorch و TensorFlow و JAX ، وتتضمن تطبيقات لنماذج مثل بيرت, 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 = "In which country is Tokyo?"
completion = llm(prompt)
print(completion)

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

الخطوة 4: الهندسة السريعة الأساسية

في البداية ، سننشئ موجهًا بسيطًا ونرى كيف يستجيب النموذج.

prompt = 'Translate the following English text to French: "{0}"'
input_text = 'Hello, how are you?'
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 = 'As a highly proficient French translator, translate the following English text to French: "{0}"'
input_text = 'Hello, how are you?'
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

بعد التثبيت ، نقوم بإنشاء دفتر ملاحظات Python جديد واستيراد المكتبات الضرورية:

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). تجمع هذه الوظيفة أحدث ملخصات أوراق البرمجة اللغوية العصبية من arXiv وتغلفها في كائنات مستند LangChain ، باستخدام الملخص كمحتوى ومعرف الإدخال الفريد كمصدر.

سنستخدم arXiv API لجلب الأوراق الحديثة المتعلقة بـ NLP:

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 Document. نحن نستخدم ملخص الورقة ومعرف الإدخال الفريد الخاص بها (عنوان URL للورقة) كمحتوى ومصدر ، على التوالي.

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("What are the recent advancements in NLP?")

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

Recent advancements in NLP include Retriever-augmented instruction-following models and a novel computational framework for solving alternating current optimal power flow (ACOPF) problems using graphics processing units (GPUs).
SOURCES: 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))
Recent advancements in Natural Language Processing (NLP) include the development of retriever-augmented instruction-following models for information-seeking tasks such as question answering (QA). These models can be adapted to various information domains and tasks without additional fine-tuning. However, they often struggle to stick to the provided knowledge and may hallucinate in their responses. Another advancement is the introduction of a computational framework for solving alternating current optimal power flow (ACOPF) problems using graphics processing units (GPUs). This approach utilizes a single-instruction, multiple-data (SIMD) abstraction of nonlinear programs (NLP) and employs a condensed-space interior-point method (IPM) with an inequality relaxation strategy. This strategy allows for the factorization of the KKT matrix without numerical pivoting, which has previously hampered the parallelization of the IPM algorithm.
SOURCES: 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-turbo 8,000 و 4,000 رمز على التوالي. ومع ذلك ، من المهم ملاحظة أن كل تفاعل مع هذه النماذج يأتي بتكلفة تتناسب طرديًا مع عدد الرموز المميزة التي تمت معالجتها ، سواء كانت إدخالاً أو إخراجًا.

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

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

من المهم أن تتذكر أنه حتى مع استخدام أدوات مثل 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) # We can now use feed more data
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"]
    )

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

 
Recent advancements in NLP include the use of deep neural networks (DNNs) for automatic text analysis and natural language processing (NLP) tasks such as spell checking, language detection, entity extraction, author detection, question answering, and other tasks. 
SOURCES: 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.

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