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

أحد الجوانب المهمة لنماذج اللغات الكبيرة (LLMs) هو عدد المعلمات التي تستخدمها هذه النماذج للتعلم. كلما زاد عدد المعلمات في النموذج ، كان من الأفضل فهم العلاقة بين الكلمات والعبارات. وهذا يعني أن النماذج التي تحتوي على مليارات من المعلمات لديها القدرة على إنشاء تنسيقات نصية إبداعية متنوعة والإجابة على الأسئلة المفتوحة والصعبة بطريقة إعلامية.
LLMs مثل ChatGPT ، التي تستخدم نموذج Transformer ، بارعة في فهم وتوليد اللغة البشرية ، مما يجعلها مفيدة للتطبيقات التي تتطلب فهمًا طبيعيًا للغة. ومع ذلك ، فهي لا تخلو من قيودها ، والتي تشمل المعرفة القديمة ، وعدم القدرة على التفاعل مع الأنظمة الخارجية ، والافتقار إلى فهم السياق ، وفي بعض الأحيان توليد استجابات تبدو معقولة ولكنها غير صحيحة أو لا معنى لها ، من بين أمور أخرى.
تتطلب معالجة هذه القيود تكامل LLM مع مصادر وإمكانيات البيانات الخارجية ، والتي يمكن أن تقدم تعقيدات وتتطلب مهارات ترميز ومعالجة بيانات مكثفة. هذا ، إلى جانب تحديات فهم مفاهيم الذكاء الاصطناعي والخوارزميات المعقدة ، يساهم في منحنى التعلم المرتبط بتطوير التطبيقات باستخدام LLMs.
ومع ذلك ، فإن تكامل LLM مع أدوات أخرى لتشكيل تطبيقات LLM يمكن أن يعيد تعريف المشهد الرقمي لدينا. إن إمكانات مثل هذه التطبيقات هائلة ، بما في ذلك تحسين الكفاءة والإنتاجية ، وتبسيط المهام ، وتعزيز صنع القرار ، وتوفير تجارب مخصصة.
في هذه المقالة ، سوف نتعمق في هذه المشكلات ، ونستكشف التقنيات المتقدمة للهندسة السريعة باستخدام Langchain ، ونقدم تفسيرات واضحة وأمثلة عملية وإرشادات خطوة بخطوة حول كيفية تنفيذها.
لانغتشين، مكتبة متطورة، تُسهّل تصميم وتنفيذ وضبط المطالبات البرمجية. مع شرحنا لمبادئ وممارسات هندسة المطالبات البرمجية، ستتعلم كيفية الاستفادة من ميزات لانغتشين القوية للاستفادة من نقاط قوة نماذج الذكاء الاصطناعي التوليدي SOTA، مثل GPT-4.
فهم الموجهات
قبل الغوص في تقنيات الهندسة السريعة ، من الضروري فهم مفهوم المحفزات وأهميتها.
ا 'موجه'عبارة عن سلسلة من الرموز المميزة التي تُستخدم كمدخلات في نموذج اللغة ، وتطلب منه إنشاء نوع معين من الاستجابة. تلعب الموجهات دورًا حاسمًا في توجيه سلوك النموذج. يمكن أن تؤثر على جودة النص الذي تم إنشاؤه ، وعند صياغتها بشكل صحيح ، يمكن أن تساعد النموذج في تقديم نتائج ثاقبة ودقيقة ومحددة السياق.
هندسة المحفزات هي فن وعلم تصميم المحفزات الفعالة. الهدف هو استخلاص النتائج المرجوة من نموذج اللغة. باختيار المحفزات وهيكلتها بعناية، يمكن توجيه النموذج نحو توليد استجابات أكثر دقة وارتباطًا. عمليًا، يتضمن ذلك ضبط عبارات الإدخال بدقة لتتوافق مع تدريب النموذج وتحيزاته الهيكلية.
يتراوح تطور الهندسة السريعة من التقنيات البسيطة ، مثل تغذية النموذج بالكلمات الرئيسية ذات الصلة ، إلى الأساليب الأكثر تقدمًا التي تتضمن تصميم المطالبات المعقدة والمنظمة التي تستخدم الآليات الداخلية للنموذج لصالحها.
Langchain: الأداة السريعة الأسرع نموًا
LangChain ، تم إطلاقه في أكتوبر 2022 بواسطة هاريسون تشيس، أصبح أحد الأطر مفتوحة المصدر الأكثر تقييمًا على GitHub في عام 2023. يوفر واجهة مبسطة وموحدة لدمج نماذج اللغات الكبيرة (LLMs) في التطبيقات. كما يوفر واجهة غنية بالميزات للهندسة السريعة ، مما يسمح للمطورين بتجربة استراتيجيات مختلفة وتقييم نتائجها. من خلال استخدام Langchain ، يمكنك أداء مهام هندسية فورية بشكل أكثر فعالية وبديهية.
لانجفلو يعمل كواجهة مستخدم لتنظيم مكونات LangChain في مخطط انسيابي قابل للتنفيذ ، مما يتيح النماذج الأولية السريعة والتجريب.

يملأ LangChain فجوة حاسمة في تطوير الذكاء الاصطناعي للجماهير. إنه يمكّن مجموعة من تطبيقات البرمجة اللغوية العصبية مثل المساعدين الظاهريين ومولدات المحتوى وأنظمة الإجابة على الأسئلة والمزيد لحل مجموعة من مشاكل العالم الحقيقي.
بدلاً من كونه نموذجًا أو مزودًا مستقلاً ، يبسط LangChain التفاعل مع النماذج المتنوعة ، مما يوسع قدرات تطبيقات LLM إلى ما وراء قيود استدعاء API البسيط.
هندسة LangChain
تشتمل المكونات الرئيسية لـ LangChain على نموذج I/O، وقوالب المطالبة، والذاكرة، والوكلاء، والسلاسل.
نموذج 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. تُمكّن هذه السلسلة نماذج اللغة من إجراء حسابات رياضية. تقبل هذه السلسلة سؤالاً باللغة الطبيعية، ويقوم نموذج اللغة بدوره بتوليد مقتطف برمجي بلغة بايثون، والذي يُنفَّذ بعد ذلك لإنتاج الإجابة.
- سلاسل عامة، من ناحية أخرى ، بمثابة لبنات بناء لسلاسل أخرى ولكن لا يمكن استخدامها بشكل مستقل بشكل مستقل. هذه السلاسل ، مثل 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، مدير الحزم القياسي لبايثون، لتسهيل تثبيت وإدارة مكتبات الجهات الخارجية. إذا لم يكن 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. يمكن القيام بذلك بإنشاء حساب على منصة 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 لجلب الأوراق الحديثة المتعلقة بـ 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
تسترجع هذه الدالة ملخصات أحدث أوراق معالجة اللغة الطبيعية (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("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 الطريق في تبسيط هذه المهمة المعقدة. تضمن واجهتها الموحدة، وقوالب الاستجابة السريعة المرنة، وتكاملها القوي مع النماذج، واستخدامها المبتكر للوكلاء والسلاسل، تحقيق أفضل النتائج لأداء نماذج اللغات الكبيرة.
مع ذلك، ورغم هذه التطورات، هناك بعض النصائح التي يجب أخذها في الاعتبار. عند استخدامك لـ Langchain، من الضروري إدراك أن جودة المخرجات تعتمد بشكل كبير على صياغة الموجه. يمكن أن تُحسّن تجربة أنماط وهياكل مختلفة للموجهات من نتائجك. تذكر أيضًا أنه على الرغم من دعم Langchain لمجموعة متنوعة من نماذج اللغة، إلا أن لكل منها نقاط قوة ونقاط ضعف. من الضروري اختيار النموذج المناسب لمهمتك المحددة. وأخيرًا، من المهم تذكر أن استخدام هذه النماذج له اعتبارات تتعلق بالتكلفة، حيث تؤثر معالجة الرموز بشكل مباشر على تكلفة التفاعلات.
كما هو موضح في الدليل التفصيلي ، يمكن لـ Langchain تشغيل تطبيقات قوية ، مثل نظام الأسئلة والأجوبة حول الأدب الأكاديمي. مع تزايد مجتمع المستخدمين وزيادة البروز في المشهد المفتوح المصدر ، تعد Langchain بأن تكون أداة محورية في تسخير الإمكانات الكاملة لـ LLMs مثل GPT-4.










