LangChain على Azure Databricks لتطوير LLM

هام

هذه ميزات تجريبية وقد تتغير تعريفات واجهة برمجة التطبيقات.

توضح هذه المقالة تكاملات LangChain التي تسهل تطوير ونشر نماذج اللغات الكبيرة (LLMs) على Azure Databricks.

باستخدام عمليات تكامل LangChain هذه، يمكنك:

  • تحميل البيانات بسلاسة من PySpark DataFrame باستخدام محمل PySpark DataFrame.
  • الاستعلام بشكل تفاعلي عن بياناتك باستخدام اللغة الطبيعية باستخدام Spark DataFrame Agent أو Databricks SQL Agent.
  • قم بتضمين نموذج خدمة Azure Databricks كنموذج لغة كبير (LLM) في LangChain.

ما هو LangChain؟

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

يتوفر LangChain كنكهة MLflow تجريبية تسمح لعملاء LangChain للاستفادة من الأدوات القوية وقدرات تتبع التجارب ل MLflow مباشرة من بيئة Azure Databricks. راجع وثائق MLflow لنكهة LangChain.

المتطلبات

  • Databricks Runtime 13.3 ML وما فوق.
  • توصي Databricks بتثبيت أحدث إصدار من LangChain لضمان حصولك على آخر التحديثات.
    • %pip install --upgrade langchain

تحميل البيانات باستخدام محمل PySpark DataFrame

يعمل محمل PySpark DataFrame في LangChain على تبسيط تحميل البيانات من PySpark DataFrame باستخدام أسلوب واحد.

from langchain.document_loaders import PySparkDataFrameLoader

loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()

يعرض دفتر الملاحظات التالي مثالا حيث يتم استخدام محمل PySpark DataFrame لإنشاء روبوت دردشة يستند إلى الاسترداد يتم تسجيله باستخدام MLflow، والذي بدوره يسمح بتفسير النموذج كدالة Python عامة للاستدلال باستخدام mlflow.pyfunc.load_model().

محمل PySpark DataFrame وMLFlow في دفتر ملاحظات Langchain

الحصول على دفتر الملاحظات

عامل Spark DataFrame

يسمح عامل Spark DataFrame في LangChain بالتفاعل مع Spark DataFrame، محسن للإجابة على الأسئلة. توفر وثائق عامل Spark DataFrame من LangChain مثالا مفصلا لكيفية إنشاء واستخدام عامل Spark DataFrame مع DataFrame.

from langchain.agents import create_spark_dataframe_agent

df = spark.read.csv("/databricks-datasets/COVID/coronavirusdataset/Region.csv", header=True, inferSchema=True)
display(df)

agent = create_spark_dataframe_agent(llm=OpenAI(temperature=0), df=df, verbose=True)
...

يوضح دفتر الملاحظات التالي كيفية إنشاء واستخدام عامل Spark DataFrame لمساعدتك في الحصول على رؤى حول بياناتك.

استخدام LangChain للتفاعل مع دفتر ملاحظات Spark DataFrame

الحصول على دفتر الملاحظات

Databricks SQL Agent

عامل Databricks SQL هو متغير من عامل قاعدة بيانات SQL القياسي الذي يوفره LangChain ويعتبر متغيرا أكثر قوة من عامل Spark DataFrame.

باستخدام Databricks SQL Agent، يمكن لأي مستخدم من مستخدمي Azure Databricks التفاعل مع مخطط محدد في كتالوج Unity وإنشاء رؤى حول بياناتهم.

هام

يمكن ل Databricks SQL Agent الاستعلام عن الجداول فقط، ولا يقوم بإنشاء جداول.

في المثال التالي يتم إنشاء مثيل قاعدة البيانات داخل SQLDatabase.from_databricks(catalog="...", schema="...") الأمر ويتم إنشاء العامل والأدوات المطلوبة بواسطة SQLDatabaseToolkit(db=db, llm=llm) و create_sql_agent(llm=llm, toolkit=toolkit, **kwargs)، على التوالي.

from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI

db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi")
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=.7)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)

agent.run("What is the longest trip distance and how long did it take?")

إشعار

تتطلب نماذج OpenAI اشتراكا مدفوعا، إذا وصل الاشتراك المجاني إلى حد السعر.

يوضح دفتر الملاحظات التالي كيفية إنشاء Databricks SQL Agent واستخدامه لمساعدتك على فهم البيانات الموجودة في قاعدة البيانات بشكل أفضل.

استخدام LangChain للتفاعل مع دفتر ملاحظات قاعدة بيانات SQL

الحصول على دفتر الملاحظات

التفاف نماذج خدمة Azure Databricks ك LLMs

إذا كان لديك LLM قمت بإنشائه على Azure Databricks، يمكنك استخدامه مباشرة داخل LangChain بدلا من OpenAI أو HuggingFace أو أي موفر LLM آخر.

يدعم هذا التكامل نوعين من نقاط النهاية:

التفاف نقطة نهاية خدمة نموذج

يمكنك تضمين نقاط نهاية Azure Databricks ك LLMs في LangChain. لتضمين نقطة نهاية خدمة نموذج ك LLM في LangChain تحتاج إلى:

  • تم نشر LLM مسجل في نموذج Azure Databricks الذي يخدم نقطة النهاية.
  • CAN QUERY permission to the endpoint.

في كثير من الأحيان، تتطلب النماذج أو توصي بمعلمات مهمة، مثل temperature أو max_tokens. يوضح المثال التالي كيفية إدخال هذه المعلمات باستخدام نموذج تم نشره باسم falcon-7b-instruct. يمكن العثور على تفاصيل إضافية في وثائق التفاف نقطة نهاية خدمة LangChain.

from langchain.llms import Databricks

llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")

التفاف تطبيق وكيل برنامج تشغيل نظام المجموعة

لتضمين تطبيق وكيل برنامج تشغيل نظام المجموعة ك LLM في LangChain تحتاج إلى:

  • تم تحميل LLM على نظام مجموعة تفاعلية Azure Databricks في وضع "مستخدم واحد" أو "لا يوجد عزل مشترك".
  • خادم HTTP محلي يعمل على عقدة برنامج التشغيل لخدمة النموذج في "/" باستخدام HTTP POST مع إدخال/إخراج JSON.
  • يستخدم التطبيق رقم منفذ بين [3000، 8000] ويستمع إلى عنوان IP لبرنامج التشغيل أو ببساطة 0.0.0.0 بدلا من localhost فقط.
  • إذن CAN ATTACH TO إلى نظام المجموعة.

راجع وثائق LangChain لالتفاف تطبيق وكيل برنامج تشغيل نظام المجموعة للحصول على مثال.