نشر عامل لتطبيق الذكاء الاصطناعي التوليدي
توضح هذه المقالة كيفية نشر عامل الذكاء الاصطناعي باستخدام 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
كانت صحيحة ودقيقة وترسيخها في سياق تم جلبه بواسطة أداة استرداد.