استراتيجيات التكوين: تنفيذ منشئ السلسلة

تعرف على كيفية تنفيذ السلاسل باستخدام LangChain.

سنغطي ما يلي...

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

عملية الترميز

دعونا نفهم الكود قبل أن نتعمق في التنفيذ الفعلي.

Press + to interact
# Suppress warnings
import warnings
warnings.filterwarnings("ignore", category=UserWarning)
warnings.filterwarnings("ignore", category=FutureWarning)
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# Disable parallelism
os.environ["TOKENIZERS_PARALLELISM"] = "false"
# Set Groq API Key
groq_api_key = os.environ["GROQ_API_KEY"]

في هذا الكود نقوم بالخطوات التالية:

  • الأسطر من ١ إلى ١٠ : تم إلغاء العديد من التحذيرات، وتم ضبط متغير البيئة مفتاح API LLM Groq. سيُستخدم هذا مفتاح لاحقًا للوصول إلى نموذج الذكاء الاصطناعي.

Press + to interact
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough, RunnableParallel
from langchain_core.output_parsers import StrOutputParser
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.document_transformers import BeautifulSoupTransformer
from langchain_groq import ChatGroq
import 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 والخطوط المائلة العكسية غير الضرورية، وتقليل علامات الاقتباس المتعددة والمسافة البيضاء.

Press + to interact
# Define the website to load
url = "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 page
loader = WebBaseLoader(url)
webpage = loader.load()
# Use Beautiful Soup to extract the page content
bs_transformer = BeautifulSoupTransformer()
docs_transformed = bs_transformer.transform_documents(webpage)
docs_content = docs_transformed[0].page_content

في هذا الكود نقوم بالخطوات التالية:

    ...