يسعدنا أن نعلن عن إطلاق langchain_huggingface، وهي حزمة شريكة في LangChain تتم صيانتها بشكل مشترك بواسطة Hugging Face وLangChain. تم تصميم حزمة Python الجديدة هذه لجلب قوة أحدث تطوير لـ Hugging Face إلى LangChain وإبقائه محدثًا.

تم ترميز جميع الفصول الدراسية ذات الصلة بـ Hugging Face في LangChain من قبل المجتمع، وبينما نجحنا في ذلك، بمرور الوقت، تم إهمال بعضها بسبب الافتقار إلى منظور من الداخل.

من خلال أن نصبح حزمة شركاء، فإننا نهدف إلى تقليل الوقت المستغرق لتقديم ميزات جديدة متاحة في نظام Hugging Face البيئي لمستخدمي LangChain.

langchain-huggingface يتكامل بسلاسة مع LangChain، مما يوفر طريقة فعالة وفعالة لاستخدام نماذج Hugging Face داخل نظام LangChain البيئي. ولا تقتصر هذه الشراكة على تبادل التكنولوجيا فحسب، بل تتعلق أيضًا بالالتزام المشترك بالحفاظ على هذا التكامل وتحسينه باستمرار.


ابدء

البدء مع langchain-huggingface هو واضح ومباشر. إليك كيفية تثبيت الحزمة والبدء في استخدامها:

pip install langchain-huggingface

الآن بعد أن تم تثبيت الحزمة، دعونا نلقي نظرة على ما بداخلها!

ماجستير في القانون

HuggingFacePipeline

ضمن transformers، يعتبر Pipeline الأداة الأكثر تنوعًا في مجموعة أدوات Hugging Face. تم تصميم LangChain بشكل أساسي لمعالجة حالات استخدام RAG والوكيل، ويتم تقليل نطاق المسار هنا إلى المهام التالية التي تركز على النص: “text-generation", “text2text-generation", “summarization”, “translation”.

يمكن تحميل النماذج مباشرة مع from_model_id طريقة:

from langchain_huggingface import HuggingFacePipeline

llm = HuggingFacePipeline.from_model_id(
    model_id="microsoft/Phi-3-mini-4k-instruct",
    task="text-generation",
    pipeline_kwargs=
        "max_new_tokens": 100,
        "top_k": 50,
        "temperature": 0.1,
    ,
)
llm.invoke("Hugging Face is")

أو يمكنك أيضًا تحديد المسار بنفسك قبل تمريره إلى الفصل:

from transformers import AutoModelForCausalLM, AutoTokenizer,pipeline

model_id = "microsoft/Phi-3-mini-4k-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    load_in_4bit=True,
    
)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=100, top_k=50, temperature=0.1)
llm = HuggingFacePipeline(pipeline=pipe)
llm.invoke("Hugging Face is")

عند استخدام هذه الفئة، سيتم تحميل النموذج في ذاكرة التخزين المؤقت واستخدام أجهزة الكمبيوتر الخاص بك؛ وبالتالي، قد تكون محدودًا بالموارد المتاحة على جهاز الكمبيوتر الخاص بك.

HuggingFaceEndpoint

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

from langchain_huggingface import HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
    repo_id="meta-llama/Meta-Llama-3-8B-Instruct",
    task="text-generation",
    max_new_tokens=100,
    do_sample=False,
)
llm.invoke("Hugging Face is")
llm = HuggingFaceEndpoint(
    endpoint_url="<endpoint_url>",
    task="text-generation",
    max_new_tokens=1024,
    do_sample=False,
)
llm.invoke("Hugging Face is")

تحت الغطاء، تستخدم هذه الفئة InferenceClient لتتمكن من تقديم مجموعة واسعة من حالات الاستخدام وواجهة برمجة التطبيقات بدون خادم لمثيلات TGI المنتشرة.

ChatHuggingFace

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

عند الانتقال من قائمة الرسائل إلى مطالبة الإكمال، هناك سمة موجودة في معظم رموز LLM المميزة تسمى chat_template.

لمعرفة المزيد حول chat_template في النماذج المختلفة، قم بزيارة هذه المساحة التي قمت بإنشائها!

هذا الفصل ملتف حول LLMs الأخرى. يأخذ قائمة من الرسائل كمدخل ثم يقوم بإنشاء مطالبة الإكمال الصحيحة باستخدام tokenizer.apply_chat_template طريقة.

from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
    endpoint_url="<endpoint_url>",
    task="text-generation",
    max_new_tokens=1024,
    do_sample=False,
)
llm_engine_hf = ChatHuggingFace(llm=llm)
llm_engine_hf.invoke("Hugging Face is")

الكود أعلاه يعادل:


llm.invoke("<s>[INST] Hugging Face is [/INST]")


llm.invoke("""<|begin_of_text|><|start_header_id|>user<|end_header_id|>Hugging Face is<|eot_id|><|start_header_id|>assistant<|end_header_id|>""")

التضمينات

تمتلئ Hugging Face بنماذج التضمين القوية جدًا التي يمكنك الاستفادة منها مباشرةً في خط الأنابيب الخاص بك.

أولا اختر النموذج الخاص بك. أحد الموارد الجيدة لاختيار نموذج التضمين هو لوحة المتصدرين لـ MTEB.

HuggingFaceEmbeddings

تستخدم هذه الفئة تضمينات محولات الجملة. فهو يحسب التضمين محليًا، وبالتالي يستخدم موارد الكمبيوتر لديك.

from langchain_huggingface.embeddings import HuggingFaceEmbeddings

model_name = "mixedbread-ai/mxbai-embed-large-v1"
hf_embeddings = HuggingFaceEmbeddings(
    model_name=model_name,
)
texts = ["Hello, world!", "How are you?"]
hf_embeddings.embed_documents(texts)

HuggingFaceEndpointEmbeddings

HuggingFaceEndpointEmbeddings يشبه الى حد كبير ما HuggingFaceEndpoint يفعل ذلك بالنسبة لـ LLM، بمعنى أنه يستخدم أيضًا InferenceClient الموجود أسفل الغطاء لحساب التضمينات. يمكن استخدامه مع النماذج الموجودة على المركز ومثيلات TEI سواء تم نشرها محليًا أو عبر الإنترنت.

from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings

hf_embeddings = HuggingFaceEndpointEmbeddings(
    model= "mixedbread-ai/mxbai-embed-large-v1",
    task="feature-extraction",
    huggingfacehub_api_token="<HF_TOKEN>",
)
texts = ["Hello, world!", "How are you?"]
hf_embeddings.embed_documents(texts)

خاتمة

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

شاركها.
اترك تعليقاً