...
/استراتيجيات التكوين: تنفيذ منشئ السلسلة
استراتيجيات التكوين: تنفيذ منشئ السلسلة
تعرف على كيفية تنفيذ السلاسل باستخدام LangChain.
سنغطي ما يلي...
في هذا الدرس، سنتعلم كيفية تطوير روبوت محادثة يستجيب لاستفسارات المستخدمين باستخدام الأساليب والوظائف التي تعلمناها حتى الآن. سنستخدم نظام RAG مع LangChain لتحميل النصوص وتقسيمها وتضمينها، وتقسيم الرموز، وتحميلها إلى مخزن متجهات، وإعداد مُسترد، وإنشاء مُطالبة باستخدام قالب مُطالبة، وإعداد نموذج LLM باستخدام أحدث النماذج، وتنفيذ سلاسل التوصيل، وإنشاء استجابة لاستفسارات المستخدمين.
عملية الترميز
دعونا نفهم الكود قبل أن نتعمق في التنفيذ الفعلي.
# Suppress warningsimport warningswarnings.filterwarnings("ignore", category=UserWarning)warnings.filterwarnings("ignore", category=FutureWarning)import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'# Disable parallelismos.environ["TOKENIZERS_PARALLELISM"] = "false"# Set Groq API Keygroq_api_key = os.environ["GROQ_API_KEY"]
في هذا الكود نقوم بالخطوات التالية:
الأسطر من ١ إلى ١٠ : تم إلغاء العديد من التحذيرات، وتم ضبط متغير البيئة مفتاح API LLM Groq. سيُستخدم هذا مفتاح لاحقًا للوصول إلى نموذج الذكاء الاصطناعي.
from langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.embeddings import HuggingFaceEmbeddingsfrom langchain_community.vectorstores import FAISSfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables import RunnablePassthrough, RunnableParallelfrom langchain_core.output_parsers import StrOutputParserfrom langchain_community.document_loaders import WebBaseLoaderfrom langchain_community.document_transformers import BeautifulSoupTransformerfrom langchain_groq import ChatGroqimport re
في هذا الكود نقوم بالخطوات التالية:
الخط 1 :
RecursiveCharacterTextSplitter
يتم استخدامه لتقسيم النص إلى أجزاء قابلة للإدارة.الخط 2 :
HuggingFaceEmbeddings
يقوم بإنشاء تضمينات لأجزاء النص لدينا لتسهيل عمليات الفهم الدلالي والاسترجاع.الخط 3 :
FAISS
يدير متجرًا متجهًا يسمح باسترجاع النص بكفاءة استنادًا إلى التشابه، وهو أمر ضروري للتعامل مع استعلامات المستخدم وتوفير المعلومات ذات الصلة.الخط الرابع :
ChatPromptTemplate
يتيح لنا تنسيق مطالبتنا النصية الهندسية إلى قالب يمكن لنموذج LLM الخاص بنا فهمه ومتابعته.الخط 5 :
RunnablePassthrough
وRunnableParallel
يتم استخدامها لتوجيه الأوامر في سلسلة منشئ LLM.الخط 6 :
StrOutputParser
يتم استخدامه لتحليل وتنسيق استجابة LLM.الخط 7 :
WebBaseLoader
: يتم استخدامه لجلب المحتوى من عنوان URL محدد.الخط 8 :
BeautifulSoupTransformer
يتم تطبيقه لاستخراج نص قابل للقراءة من محتوى HTML المحمل.الخط 9 :
ChatGroq
يعمل كواجهة لنماذج اللغة القوية الخاصة بـ Groq، مما يتيح للدردشة الآلية إنشاء استجابات بناءً على البيانات النصية المضمنة والمستردة.الخط 10 :
re
يتم استخدام (التعبيرات العادية) لتنظيف النص وتنسيقه عن طريق إزالة العلامات المشابهة لـ HTML والخطوط المائلة العكسية غير الضرورية، وتقليل علامات الاقتباس المتعددة والمسافة البيضاء.
# Define the website to loadurl = "https://elnion.com/2024/05/01/generative-ai-poised-for-takeoff-but-organisational-transformation-holds-the-key/"# Create an instance of WebBaseLoader and load the web pageloader = WebBaseLoader(url)webpage = loader.load()# Use Beautiful Soup to extract the page contentbs_transformer = BeautifulSoupTransformer()docs_transformed = bs_transformer.transform_documents(webpage)docs_content = docs_transformed[0].page_content
في هذا الكود نقوم بالخطوات التالية: