نشر عامل لتطبيق الذكاء الاصطناعي التوليدي

هام

هذه الميزة في المعاينة العامة.

توضح هذه المقالة كيفية نشر عامل الذكاء الاصطناعي باستخدام deploy() واجهة برمجة التطبيقات من databricks.agents .

المتطلبات

  • MLflow 2.13.1 أو أعلى لنشر العوامل باستخدام deploy() واجهة برمجة التطبيقات من databricks.agents.

  • تسجيل عامل الذكاء الاصطناعي في كتالوج Unity. راجع تسجيل السلسلة في كتالوج Unity.

  • databricks-agents تثبيت SDK.

    %pip install databricks-agents
    dbutils.library.restartPython()
    

نشر عامل باستخدام deploy()

تقوم deploy() واجهة برمجة التطبيقات بالآتي:

  • إنشاء نموذج وحدة المعالجة المركزية الذي يخدم نقاط النهاية لوكيلك والتي يمكن دمجها في التطبيق الذي يواجه المستخدم.
    • يتم تمكين جداول الاستدلال على نقاط نهاية خدمة النموذج هذه. راجع جداول الاستدلال لمراقبة وتصحيح النماذج.
      • يتم تمرير بيانات اعتماد المصادقة تلقائيا إلى جميع الموارد المدارة بواسطة Databricks المطلوبة من قبل العامل كما هو محدد عند تسجيل النموذج. ينشئ Databricks كيان خدمة لديه حق الوصول إلى هذه الموارد، ويمرر ذلك تلقائيا إلى نقطة النهاية. راجع المصادقة للموارد التابعة.
      • إذا كانت لديك تبعيات موارد غير مدارة بواسطة Databricks، على سبيل المثال باستخدام Pinecone، يمكنك تمرير متغيرات البيئة مع البيانات السرية إلى deploy() واجهة برمجة التطبيقات. راجع تكوين الوصول إلى الموارد من نقاط نهاية خدمة النموذج.
  • تمكين تطبيق المراجعة لوكيلك. يسمح تطبيق المراجعة للمساهمين بالدردشة مع الوكيل وتقديم ملاحظات باستخدام واجهة مستخدم مراجعة التطبيق.
  • يسجل كل طلب إلى Review App أو REST API إلى جدول استدلال. تتضمن البيانات المسجلة طلبات الاستعلام والاستجابات وبيانات التتبع الوسيطة من تتبع MLflow.
  • إنشاء نموذج ملاحظات بنفس الكتالوج والمخطط مثل العامل الذي تحاول نشره. نموذج الملاحظات هذا هو الآلية التي تجعل من الممكن قبول الملاحظات من تطبيق المراجعة وتسجيلها في جدول استدلال. يتم تقديم هذا النموذج في نفس نموذج وحدة المعالجة المركزية الذي يخدم نقطة النهاية مثل العامل المنشور. نظرا لأن نقطة نهاية العرض هذه تحتوي على جداول استدلال ممكنة، فمن الممكن تسجيل الملاحظات من تطبيق المراجعة إلى جدول استدلال.

إشعار

قد تستغرق عمليات النشر ما يصل إلى 15 دقيقة لإكمالها. تستغرق حمولات JSON الأولية من 10 إلى 30 دقيقة للوصول، وتتم معالجة السجلات المنسقة من الحمولات الأولية كل ساعة تقريبا.


from databricks.agents import deploy
from mlflow.utils import databricks_utils as du

deployment = deploy(model_fqn, uc_model_info.version)

# query_endpoint is the URL that can be used to make queries to the app
deployment.query_endpoint

# Copy deployment.rag_app_url to browser and start interacting with your RAG application.
deployment.rag_app_url

جداول الاستدلال المحسنة من قبل العامل

deploy() ينشئ ثلاثة جداول استدلال لكل عملية نشر لتسجيل الطلبات والاستجابات من وإلى نقطة نهاية خدمة العامل. يمكن للمستخدمين توقع أن تكون البيانات في جدول الحمولة في غضون ساعة من التفاعل مع توزيعهم.

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

إشعار

إذا كان لديك Azure Storage Firewall ممكنا، فتواصل مع فريق حساب Databricks لتمكين جداول الاستدلال لنقاط النهاية الخاصة بك.

جدول مثال على اسم جدول كتالوج Unity ما هو موجود في كل جدول
الحمولة {catalog_name}.{schema_name}.{model_name}_payload حمولات طلب واستجابة JSON الأولية
سجلات طلب الحمولة {catalog_name}.{schema_name}.{model_name}_payload_request_logs الطلب والاستجابات المنسقة، تتبعات MLflow
سجلات تقييم الحمولة {catalog_name}.{schema_name}.{model_name}_payload_assessment_logs الملاحظات المنسقة، كما هو متوفر في تطبيق المراجعة، لكل طلب

يظهر التالي مخطط جدول سجلات الطلب.

اسم العمود النوع الوصف
client_request_id السلسلة‬ معرف طلب العميل، عادة null.
databricks_request_id السلسلة‬ معرف طلب Databricks.
date التاريخ تاريخ الطلب.
timestamp_ms طويل الطابع الزمني بالمللي ثانية.
timestamp طابع زمني الطابع الزمني للطلب.
status_code رقم صحيح رمز الحالة لنقطة النهاية.
execution_time_ms طويل إجمالي التنفيذ بالمللي ثانية.
conversation_id السلسلة‬ معرف المحادثة المستخرج من سجلات الطلب.
request السلسلة‬ استعلام المستخدم الأخير من محادثة المستخدم. يتم استخراج هذا من طلب RAG.
response السلسلة‬ الاستجابة الأخيرة للمستخدم. يتم استخراج هذا من طلب RAG.
request_raw السلسلة‬ تمثيل سلسلة الطلب.
response_raw السلسلة‬ تمثيل سلسلة الاستجابة.
trace السلسلة‬ تمثيل سلسلة التتبع المستخرج databricks_options من بنية الاستجابة.
sampling_fraction مزدوج كسر أخذ العينات.
request_metadata Map[String, String] خريطة لبيانات التعريف المتعلقة بنقطة نهاية خدمة النموذج المقترنة بالطلب. تحتوي هذه الخريطة على اسم نقطة النهاية واسم النموذج وإصدار النموذج المستخدم لنقطة النهاية.
schema_version السلسلة‬ عدد صحيح لإصدار المخطط.

فيما يلي مخطط لجدول سجلات التقييم.

اسم العمود النوع الوصف
request_id السلسلة‬ معرف طلب Databricks.
step_id السلسلة‬ مشتق من تقييم الاسترداد.
source البنية حقل بنية يحتوي على معلومات حول من أنشأ التقييم.
timestamp طابع زمني الطابع الزمني للطلب.
text_assessment البنية حقل بنية يحتوي على بيانات لأي ملاحظات حول استجابات العامل من تطبيق المراجعة.
retrieval_assessment البنية حقل بنية يحتوي على البيانات لأي ملاحظات حول المستندات التي تم استردادها للاستجابة.

المصادقة للموارد التابعة

عند إنشاء نقطة نهاية خدمة النموذج لنشر العامل، يتحقق Databricks من أن منشئ نقطة النهاية لديه أذونات للوصول إلى جميع الموارد التي يعتمد عليها العامل.

بالنسبة إلى العوامل ذات النكهة LangChain، يتم استنتاج الموارد التابعة تلقائيا أثناء إنشاء العامل وتسجيله. يتم تسجيل هذه الموارد في resources.yaml الملف في أداة النموذج المسجل. أثناء النشر، databricks.agents.deploy ينشئ تلقائيا رموز M2M OAuth المميزة المطلوبة للوصول إلى تبعيات الموارد المستنتجة هذه والتواصل معها.

بالنسبة إلى عوامل PyFunc المنكهة، يجب عليك تحديد أي تبعيات موارد يدويا أثناء تسجيل العامل المنشور في المعلمة resources . راجع تحديد الموارد لعامل PyFunc أو LangChain. أثناء النشر، databricks.agents.deploy ينشئ رمز OAuth المميز M2M مع الوصول إلى الموارد المحددة في المعلمة resources ، وينشره إلى العامل المنشور.

مرور المصادقة التلقائية

يسرد الجدول التالي الميزات التي تدعم المرور التلقائي للمصادقة. يستخدم المرور التلقائي للمصادقة بيانات اعتماد منشئ النشر للمصادقة تلقائيا مقابل الميزات المدعومة.

ميزة الحد الأدنى mlflow للإصدار
فهارس البحث عن المتجهات mlflow يتطلب 2.13.1 أو أعلى
نقاط نهاية خدمة النموذج mlflow يتطلب 2.13.1 أو أعلى
مستودعات SQL mlflow يتطلب 2.16.1 أو أعلى
دوال كتالوج Unity mlflow يتطلب 2.16.1 أو أعلى

المصادقة اليدوية

إذا كان لديك مورد تابع لا يدعم المرور التلقائي للمصادقة، أو إذا كنت تريد استخدام بيانات اعتماد أخرى غير بيانات اعتماد منشئ النشر، يمكنك توفير بيانات الاعتماد يدويا باستخدام متغيرات البيئة المستندة إلى الأسرار. على سبيل المثال، إذا كنت تستخدم Databricks SDK في عاملك للوصول إلى أنواع أخرى من الموارد التابعة، يمكنك تعيين متغيرات البيئة الموضحة في المصادقة الموحدة لعميل Databricks.

الحصول على التطبيقات المنشورة

يوضح ما يلي كيفية الحصول على الوكلاء الموزعين.

from databricks.agents import list_deployments, get_deployments

# Get the deployment for specific model_fqn and version
deployment = get_deployments(model_name=model_fqn, model_version=model_version.version)

deployments = list_deployments()
# Print all the current deployments
deployments

تقديم ملاحظات حول عامل منشور (تجريبي)

عند نشر العامل الخاص بك مع agents.deploy()، يقوم إطار عمل العامل أيضا بإنشاء ونشر إصدار نموذج "ملاحظات" داخل نفس نقطة النهاية، والتي يمكنك الاستعلام عنها لتقديم ملاحظات حول تطبيق العامل الخاص بك. تظهر إدخالات الملاحظات كصفوف طلب داخل جدول الاستدلال المقترن بعاملك الذي يخدم نقطة النهاية.

لاحظ أن هذا السلوك تجريبي: قد توفر Databricks واجهة برمجة تطبيقات من الدرجة الأولى لتقديم ملاحظات حول عامل تم نشره في المستقبل، وقد تتطلب الوظائف المستقبلية الترحيل إلى واجهة برمجة التطبيقات هذه.

تتضمن قيود واجهة برمجة التطبيقات هذه ما يلي:

  • تفتقر واجهة برمجة تطبيقات الملاحظات إلى التحقق من صحة الإدخال - فهي تستجيب دائما بنجاح، حتى إذا تم تمرير إدخال غير صالح.
  • تتطلب واجهة برمجة تطبيقات الملاحظات تمرير طلب نقطة نهاية العامل الذي ترغب في تقديم ملاحظات عليه في Databricks الذي تم request_id إنشاؤه. للحصول على ، قم بتضمين databricks_request_id{"databricks_options": {"return_trace": True}} في طلبك الأصلي إلى نقطة نهاية خدمة العامل. ثم ستتضمن databricks_request_id استجابة نقطة نهاية العامل المقترنة بالطلب، بحيث يمكنك تمرير معرف الطلب هذا مرة أخرى إلى واجهة برمجة تطبيقات الملاحظات عند تقديم ملاحظات حول استجابة العامل.
  • يتم جمع الملاحظات باستخدام جداول الاستدلال. راجع قيود جدول الاستدلال.

يوفر طلب المثال التالي ملاحظات حول نقطة نهاية العامل المسماة "your-agent-endpoint-name"، ويفترض أن DATABRICKS_TOKEN متغير البيئة تم تعيينه إلى رمز Databricks REST API المميز.

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '
      {
          "dataframe_records": [
              {
                  "source": {
                      "id": "user@company.com",
                      "type": "human"
                  },
                  "request_id": "573d4a61-4adb-41bd-96db-0ec8cebc3744",
                  "text_assessments": [
                      {
                          "ratings": {
                              "answer_correct": {
                                  "value": "positive"
                              },
                              "accurate": {
                                  "value": "positive"
                              }
                          },
                          "free_text_comment": "The answer used the provided context to talk about Delta Live Tables"
                      }
                  ],
                  "retrieval_assessments": [
                      {
                          "ratings": {
                              "groundedness": {
                                  "value": "positive"
                              }
                          }
                      }
                  ]
              }
          ]
      }' \
https://<workspace-host>.databricks.com/serving-endpoints/<your-agent-endpoint-name>/served-models/feedback/invocations

يمكنك تمرير أزواج إضافية أو مختلفة من قيم المفاتيح في text_assessments.ratings الحقلين و retrieval_assessments.ratings لتقديم أنواع مختلفة من الملاحظات. في المثال، تشير حمولة الملاحظات إلى أن استجابة العامل للطلب مع المعرف 573d4a61-4adb-41bd-96db-0ec8cebc3744 كانت صحيحة ودقيقة وترسيخها في سياق تم جلبه بواسطة أداة استرداد.

الموارد الإضافية