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

هام

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

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

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

  • استخدم النماذج التي يقدمها Databricks ك LLMs أو تضمينات في تطبيق LangChain الخاص بك.

  • دمج الفسيفساء الذكاء الاصطناعي Vector Search لتخزين المتجهات واستردادها.

  • إدارة نماذج وأداء LangChain وتعقبها في تجارب MLflow.

  • تتبع مراحل التطوير والإنتاج لتطبيق LangChain الخاص بك باستخدام تتبع MLflow.

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

  • الاستعلام بشكل تفاعلي عن بياناتك باستخدام اللغة الطبيعية باستخدام Spark DataFrame Agent أو Databricks SQL Agent.

ما هو LangChain؟

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

الاستفادة من MLflow لتطوير LangChain

يتوفر LangChain كنكهة MLflow، والتي تمكن المستخدمين من تسخير أدوات MLflow القوية لتتبع التجارب وإمكانية المراقبة في كل من بيئات التطوير والإنتاج مباشرة داخل Databricks. لمزيد من التفاصيل والإرشادات حول استخدام MLflow مع LangChain، راجع وثائق نكهة MLflow LangChain.

يوفر MLflow على Databricks ميزات إضافية تميزه عن الإصدار مفتوح المصدر، ما يعزز تجربة التطوير الخاصة بك مع الإمكانات التالية:

  • خادم تتبع تدفق MLflow المدار بالكامل: متوفر على الفور داخل مساحة عمل Databricks، مما يسمح لك ببدء تعقب التجارب دون تأخير في الإعداد.

  • التكامل السلس مع دفاتر ملاحظات Databricks: ترتبط التجارب تلقائيا بدفاتر الملاحظات، مما يسهل عملية التعقب.

  • تتبع MLflow على Databricks: يوفر مراقبة على مستوى الإنتاج مع تكامل جدول الاستدلال، ما يضمن إمكانية المراقبة الشاملة من التطوير إلى الإنتاج.

  • إدارة دورة حياة النموذج باستخدام كتالوج Unity: التحكم المركزي في الوصول والتدقيق والنسل واكتشاف النموذج عبر مساحات العمل الخاصة بك.

  • الذكاء الاصطناعي الفسيفساء المتكامل تقييم العامل: تقييم الجودة والتكلفة وزمن الانتقال لتطبيقات LangChain الخاصة بك.

من خلال الاستفادة من هذه الميزات، يمكنك تحسين تطوير ومراقبة وإدارة مشاريعك المستندة إلى LangChain، ما يجعل Databricks خيارا مميزا لمبادرات الذكاء الاصطناعي التي تعمل ب MLflow.

المتطلبات

  • Databricks Runtime 13.3 ML أو أعلى.
  • تثبيت حزمة تكامل LangChain Databricks وموصل Databricks SQL. توصي Databricks أيضا بتثبيت أحدث إصدار من LangChain لضمان حصولك على آخر التحديثات.
    • %pip install --upgrade langchain-databricks langchain-community langchain databricks-sql-connector

استخدام نماذج خدمة Databricks ك LLMs أو تضمينات

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

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

  • نموذج LLM أو تضمين مسجل تم نشره في نموذج Azure Databricks يخدم نقطة النهاية.
    • بدلا من ذلك، يمكنك استخدام النماذج المتوفرة بواسطة واجهات برمجة تطبيقات نموذج الأساس، وهي قائمة منسقة من النماذج مفتوحة المصدر المنشورة داخل مساحة العمل الخاصة بك وجاهزة للاستخدام الفوري.
  • CAN QUERY permission to the endpoint.

نماذج الدردشة

يوضح المثال التالي كيفية استخدام نموذج إرشاد Llama 3.1 70B الخاص ب Meta كمكون LLM في LangChain باستخدام واجهة برمجة تطبيقات نماذج المؤسسة.


from langchain_databricks import ChatDatabricks

chat_model = ChatDatabricks(
    endpoint="databricks-meta-llama-3-1-70b-instruct"
    temperature=0.1,
    max_tokens=250,
)
chat_model.invoke("How to use Databricks?")

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

عمليات التضمين

يوضح المثال التالي كيفية استخدام databricks-bge-large-en نموذج التضمين كمكون تضمين في LangChain باستخدام واجهة برمجة تطبيقات نماذج المؤسسة.


from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")

يمكن العثور على تفاصيل إضافية في وثائق LangChain

LLMs

تحذير

تعتبر نماذج الإكمال ميزة قديمة. تستخدم معظم النماذج الحديثة واجهة إكمال الدردشة ويجب استخدامها مع مكون ChatModel بدلا من ذلك.

يوضح المثال التالي كيفية استخدام واجهة برمجة تطبيقات نموذج الإكمال كمكون LLM في LangChain.

from langchain_community.llms import Databricks

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

استخدام البحث عن متجهات الذكاء الاصطناعي الفسيفساء كمخزن متجهات

الفسيفساء الذكاء الاصطناعي Vector Search هو محرك بحث تشابه بلا خادم على Databricks، مما يتيح لك تخزين تمثيلات المتجهات لبياناتك، بما في ذلك بيانات التعريف، في قاعدة بيانات المتجهات. يمكنك إنشاء فهارس بحث متجهات التحديث التلقائي من جداول Delta التي يديرها كتالوج Unity والاستعلام عنها عبر واجهة برمجة تطبيقات بسيطة لاسترداد المتجهات الأكثر تشابها.

لاستخدام هذه الميزة في LangChain، قم بإنشاء مثيل DatabricksVectorSearch :

from langchain_databricks import DatabricksVectorSearch

vector_store = DatabricksVectorSearch(index_name="<YOUR_VECTOR_SEARCH_INDEX_NAME>")
retriever = vector_store.as_retriever(search_kwargs={"k": 5})
retriever.invoke("What is Databricks?")

راجع وثائق DatabricksVectorSearch للحصول على مزيد من التفاصيل.

استخدام دالة كتالوج Unity كأدوات

إشعار

تكامل دالة كتالوج Unity في الحزمة langchain-community . يجب تثبيته باستخدام %pip install langchain-community للوصول إلى وظائفه. سيتم ترحيل هذا التكامل إلى langchain-databricks الحزمة في إصدار قادم.

يمكنك عرض وظائف SQL أو Python في كتالوج Unity كأدوات لعامل LangChain الخاص بك. للحصول على إرشادات كاملة حول إنشاء وظائف كتالوج Unity واستخدامها في LangChain، راجع وثائق مجموعة أدوات Databricks UC.

تحميل البيانات باستخدام محمل 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 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
from langchain_databricks import ChatDatabricks

# Note: Databricks SQL connections eventually time out. We set pool_pre_ping: True to
# try to ensure connection health is checked before a SQL query is made
db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi", engine_args={"pool_pre_ping": True})
llm = ChatDatabricks(
    endpoint="databricks-meta-llama-3-1-70b-instruct",
    temperature=0.1,
    max_tokens=250,
)

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?")

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

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

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