نماذج أساس الاستعلام والنماذج الخارجية
في هذه المقالة، ستتعلم كيفية تنسيق طلبات الاستعلام للنماذج الأساسية والنماذج الخارجية وإرسالها إلى نقطة نهاية خدمة النموذج الخاص بك.
للحصول على طلبات الاستعلام التقليدية لنماذج ML أو Python، راجع نقاط نهاية خدمة الاستعلام للنماذج المخصصة.
يدعم الفسيفساء الذكاء الاصطناعي Model Serving واجهات برمجة التطبيقات لنماذج الأساس والنماذج الخارجية للوصول إلى نماذج الذكاء الاصطناعي التوليدية. تستخدم خدمة النموذج واجهة برمجة تطبيقات وSDK متوافقة مع OpenAI الموحدة للاستعلام عنها. وهذا يجعل من الممكن تجربة وتخصيص نماذج الذكاء الاصطناعي التوليدية للإنتاج عبر السحب والموفرين المدعومين.
يوفر الفسيفساء الذكاء الاصطناعي Model Serving الخيارات التالية لإرسال طلبات تسجيل النقاط إلى نقاط النهاية التي تخدم النماذج الأساسية أو النماذج الخارجية:
الأسلوب | التفاصيل |
---|---|
عميل OpenAI | الاستعلام عن نموذج مستضاف بواسطة نقطة نهاية خدمة نموذج الذكاء الاصطناعي الفسيفساء باستخدام عميل OpenAI. حدد اسم نقطة نهاية خدمة النموذج كمدخل model . مدعوم للدردشة والتضمينات ونماذج الإكمال التي توفرها واجهات برمجة تطبيقات نموذج المؤسسة أو النماذج الخارجية. |
خدمة واجهة المستخدم | حدد "Query endpoint " من صفحة "Serving endpoint ". إدراج بيانات إدخال نموذج تنسيق JSON وانقر فوق إرسال طلب. إذا كان النموذج يحتوي على مثال إدخال مسجل، فاستخدم إظهار المثال لتحميله. |
واجهة برمجة تطبيقات REST | استدعاء النموذج والاستعلام عليه باستخدام واجهة برمجة تطبيقات REST. راجع POST /serving-endpoints/{name}/invocations للحصول على التفاصيل. للحصول على طلبات تسجيل النقاط إلى نقاط النهاية التي تخدم نماذج متعددة، راجع الاستعلام عن نماذج فردية خلف نقطة نهاية. |
MLflow Deployments SDK | استخدم وظيفة predict() الخاصة ب MLflow Deployments SDK للاستعلام عن النموذج. |
Databricks Python SDK | Databricks Python SDK هي طبقة أعلى واجهة برمجة تطبيقات REST. وهو يعالج التفاصيل منخفضة المستوى، مثل المصادقة، ما يسهل التفاعل مع النماذج. |
الدالة SQL | استدعاء استدلال النموذج مباشرة من SQL باستخدام ai_query وظيفة SQL. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query(). |
المتطلبات
- نموذج يخدم نقطة النهاية.
- مساحة عمل Databricks في منطقة مدعومة.
- لإرسال طلب تسجيل من خلال عميل OpenAI أو REST API أو MLflow Deployment SDK، يجب أن يكون لديك رمز مميز لواجهة برمجة تطبيقات Databricks.
هام
كأفضل ممارسة أمان لسيناريوهات الإنتاج، توصي Databricks باستخدام رموز OAuth المميزة من جهاز إلى جهاز للمصادقة أثناء الإنتاج.
للاختبار والتطوير، توصي Databricks باستخدام رمز وصول شخصي ينتمي إلى كيانات الخدمة بدلا من مستخدمي مساحة العمل. لإنشاء رموز مميزة لكيانات الخدمة، راجع إدارة الرموز المميزة لكيان الخدمة.
تثبيت الحزم
بعد تحديد أسلوب استعلام، يجب أولا تثبيت الحزمة المناسبة إلى نظام المجموعة.
عميل OpenAI
لاستخدام عميل OpenAI، يجب تثبيت الحزمة openai
على نظام المجموعة. قم بتشغيل ما يلي في دفتر الملاحظات أو المحطة الطرفية المحلية:
!pip install openai
ما يلي مطلوب فقط عند تثبيت الحزمة على دفتر ملاحظات Databricks
dbutils.library.restartPython()
واجهة برمجة تطبيقات REST
يتوفر الوصول إلى خدمة واجهة برمجة تطبيقات REST في وقت تشغيل Databricks التعلم الآلي.
MLflow Deployments SDK
!pip install mlflow
ما يلي مطلوب فقط عند تثبيت الحزمة على دفتر ملاحظات Databricks
dbutils.library.restartPython()
Databricks Python SDK
تم تثبيت Databricks SDK ل Python بالفعل على جميع مجموعات Azure Databricks التي تستخدم Databricks Runtime 13.3 LTS أو أعلى. بالنسبة لمجموعات Azure Databricks التي تستخدم Databricks Runtime 12.2 LTS والإصدارات أدناه، يجب تثبيت Databricks SDK ل Python أولا. راجع الخطوة 1: تثبيت Databricks SDK ل Python أو ترقيته.
## <a id="chat"> </a><a id="query-a-chat-completion-model"> </a>Query a chat completion model
The following are examples for querying a chat model. The example applies to querying a chat model made available using either of the Model Serving capabilities: Foundation Model APIs or external models.
For a batch inference example, see [Batch inference using Foundation Model APIs](../foundation-models/fmapi-batch-inference.md).
### OpenAI client
The following is a chat request for the DBRX Instruct model made available by the Foundation Model APIs pay-per-token endpoint, ``databricks-dbrx-instruct`` in your workspace.
To use the OpenAI client, specify the model serving endpoint name as the ``model`` input. The following example assumes you have a [Databricks API token](#required) and ``openai`` installed on your compute. You also need your [Databricks workspace instance](../../workspace/workspace-details.md#workspace-url) to connect the OpenAI client to Databricks.
```python
import os
import openai
from openai import OpenAI
client = OpenAI(
api_key="dapi-your-databricks-token",
base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)
response = client.chat.completions.create(
model="databricks-dbrx-instruct",
messages=[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "What is a mixture of experts model?",
}
],
max_tokens=256
)
واجهة برمجة تطبيقات REST
هام
يستخدم المثال التالي معلمات REST API للاستعلام عن نقاط النهاية التي تخدم نماذج الأساس. هذه المعلمات هي معاينة عامة وقد يتغير التعريف. راجع POST /serving-endpoints/{name}/invocations.
فيما يلي طلب دردشة لنموذج تعليمات DBRX الذي تم توفيره بواسطة نقطة نهاية الدفع لكل رمز مميز لواجهة برمجة التطبيقات لنموذج الأساس، databricks-dbrx-instruct
في مساحة العمل الخاصة بك.
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": " What is a mixture of experts model?"
}
]
}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-dbrx-instruct/invocations \
MLflow Deployments SDK
هام
يستخدم predict()
المثال التالي واجهة برمجة التطبيقات من MLflow Deployments SDK.
فيما يلي طلب دردشة لنموذج تعليمات DBRX الذي تم توفيره بواسطة نقطة نهاية الدفع لكل رمز مميز لواجهة برمجة التطبيقات لنموذج الأساس، databricks-dbrx-instruct
في مساحة العمل الخاصة بك.
import mlflow.deployments
# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"
client = mlflow.deployments.get_deploy_client("databricks")
chat_response = client.predict(
endpoint="databricks-dbrx-instruct",
inputs={
"messages": [
{
"role": "user",
"content": "Hello!"
},
{
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
{
"role": "user",
"content": "What is a mixture of experts model??"
}
],
"temperature": 0.1,
"max_tokens": 20
}
)
Databricks Python SDK
فيما يلي طلب دردشة لنموذج تعليمات DBRX الذي تم توفيره بواسطة نقطة نهاية الدفع لكل رمز مميز لواجهة برمجة التطبيقات لنموذج الأساس، databricks-dbrx-instruct
في مساحة العمل الخاصة بك.
يجب تشغيل هذه التعليمة البرمجية في دفتر ملاحظات في مساحة العمل الخاصة بك. راجع استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="databricks-dbrx-instruct",
messages=[
ChatMessage(
role=ChatMessageRole.SYSTEM, content="You are a helpful assistant."
),
ChatMessage(
role=ChatMessageRole.USER, content="What is a mixture of experts model?"
),
],
max_tokens=128,
)
print(f"RESPONSE:\n{response.choices[0].message.content}")
LangChain
للاستعلام عن نقطة نهاية نموذج أساسي باستخدام LangChain، يمكنك القيام بأي مما يلي:
Databricks
قم باستيراد فئة LLM وحددendpoint_name
وtransform_input_fn
.ChatDatabricks
قم باستيراد فئة ChatModel وحددendpoint
.
يستخدم Databricks
المثال التالي فئة LLM في LangChain للاستعلام عن نقطة نهاية الدفع لكل رمز مميز لواجهات برمجة التطبيقات لنموذج الأساس. databricks-dbrx-instruct
تتوقع واجهات messages
برمجة تطبيقات نموذج الأساس في قاموس الطلب، بينما يوفر prompt
LangChain Databricks LLM افتراضيا في قاموس الطلب. استخدم الدالة transform_input
لإعداد قاموس الطلب بالتنسيق المتوقع.
from langchain.llms import Databricks
from langchain_core.messages import HumanMessage, SystemMessage
def transform_input(**request):
request["messages"] = [
{
"role": "user",
"content": request["prompt"]
}
]
del request["prompt"]
return request
llm = Databricks(endpoint_name="databricks-dbrx-instruct", transform_input_fn=transform_input)
llm("What is a mixture of experts model?")
يستخدم ChatDatabricks
المثال التالي فئة ChatModel ويحدد endpoint
.
from langchain.chat_models import ChatDatabricks
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="You're a helpful assistant"),
HumanMessage(content="What is a mixture of experts model?"),
]
chat_model = ChatDatabricks(endpoint="databricks-dbrx-instruct", max_tokens=500)
chat_model.invoke(messages)
SQL
هام
يستخدم المثال التالي دالة SQL المضمنة، ai_query. هذه الدالة هي معاينة عامة وقد يتغير التعريف. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query().
فيما يلي طلب دردشة لتوفيره llama-2-70b-chat
بواسطة واجهة برمجة تطبيقات نموذج الأساس التي تدفع لكل رمز مميز نقطة نهاية، databricks-llama-2-70b-chat
في مساحة العمل الخاصة بك.
إشعار
ai_query()
لا تدعم الدالة نقاط نهاية الاستعلام التي تخدم نموذج DBRX أو DBRX Instruct.
SELECT ai_query(
"databricks-llama-2-70b-chat",
"Can you explain AI in ten words?"
)
على سبيل المثال، ما يلي هو تنسيق الطلب المتوقع لنموذج دردشة عند استخدام واجهة برمجة تطبيقات REST. بالنسبة للنماذج الخارجية، يمكنك تضمين معلمات إضافية صالحة لموفر معين وتكوين نقطة النهاية. راجع معلمات الاستعلام الإضافية.
{
"messages": [
{
"role": "user",
"content": "What is a mixture of experts model?"
}
],
"max_tokens": 100,
"temperature": 0.1
}
فيما يلي تنسيق استجابة متوقع لطلب تم إجراؤه باستخدام واجهة برمجة تطبيقات REST:
{
"model": "databricks-dbrx-instruct",
"choices": [
{
"message": {},
"index": 0,
"finish_reason": null
}
],
"usage": {
"prompt_tokens": 7,
"completion_tokens": 74,
"total_tokens": 81
},
"object": "chat.completion",
"id": null,
"created": 1698824353
}
الاستعلام عن نموذج تضمين
فيما يلي طلب تضمين للنموذج bge-large-en
الذي توفره واجهات برمجة تطبيقات نموذج المؤسسة. ينطبق المثال على الاستعلام عن نموذج تضمين متاح باستخدام أي من قدرات خدمة النموذج: واجهات برمجة تطبيقات نموذج الأساس أو النماذج الخارجية.
عميل OpenAI
لاستخدام عميل OpenAI، حدد اسم نقطة نهاية خدمة النموذج كمدخل model
. يفترض المثال التالي أن لديك رمزا مميزا لواجهة برمجة تطبيقات Databricks ومثبتا openai
على مجموعتك.
import os
import openai
from openai import OpenAI
client = OpenAI(
api_key="dapi-your-databricks-token",
base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)
response = client.embeddings.create(
model="databricks-bge-large-en",
input="what is databricks"
)
واجهة برمجة تطبيقات REST
هام
يستخدم المثال التالي معلمات REST API للاستعلام عن نقاط النهاية التي تخدم نماذج الأساس أو النماذج الخارجية. هذه المعلمات هي معاينة عامة وقد يتغير التعريف. راجع POST /serving-endpoints/{name}/invocations.
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{ "input": "Embed this sentence!"}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-bge-large-en/invocations
MLflow Deployments SDK
هام
يستخدم predict()
المثال التالي واجهة برمجة التطبيقات من MLflow Deployments SDK.
import mlflow.deployments
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"
client = mlflow.deployments.get_deploy_client("databricks")
embeddings_response = client.predict(
endpoint="databricks-bge-large-en",
inputs={
"input": "Here is some text to embed"
}
)
Databricks Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="databricks-bge-large-en",
input="Embed this sentence!"
)
print(response.data[0].embedding)
LangChain
لاستخدام نموذج Databricks Foundation Model APIs في LangChain كنموذج تضمين، قم باستيراد DatabricksEmbeddings
الفئة وحدد المعلمة endpoint
كما يلي:
from langchain.embeddings import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
embeddings.embed_query("Can you explain AI in ten words?")
SQL
هام
يستخدم المثال التالي دالة SQL المضمنة، ai_query. هذه الدالة هي معاينة عامة وقد يتغير التعريف. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query().
SELECT ai_query(
"databricks-bge-large-en",
"Can you explain AI in ten words?"
)
فيما يلي تنسيق الطلب المتوقع لنموذج التضمينات. بالنسبة للنماذج الخارجية، يمكنك تضمين معلمات إضافية صالحة لموفر معين وتكوين نقطة النهاية. راجع معلمات الاستعلام الإضافية.
{
"input": [
"embedding text"
]
}
فيما يلي تنسيق الاستجابة المتوقع:
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": []
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
الاستعلام عن نموذج إكمال النص
فيما يلي طلب إكمال للنموذج databricks-mpt-30b-instruct
الذي توفره واجهات برمجة تطبيقات نموذج المؤسسة. ينطبق المثال على الاستعلام عن نموذج دردشة متوفر باستخدام أي من قدرات خدمة النموذج: واجهات برمجة تطبيقات نموذج الأساس أو النماذج الخارجية. للحصول على المعلمات وبناء الجملة، راجع مهمة الإكمال.
عميل OpenAI
لاستخدام عميل OpenAI، حدد اسم نقطة نهاية خدمة النموذج كمدخل model
. يفترض المثال التالي أن لديك رمزا مميزا لواجهة برمجة تطبيقات Databricks ومثبتا openai
على مجموعتك.
import os
import openai
from openai import OpenAI
client = OpenAI(
api_key="dapi-your-databricks-token",
base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)
completion = client.completions.create(
model="databricks-mpt-30b-instruct",
prompt="what is databricks",
temperature=1.0
)
واجهة برمجة تطبيقات REST
هام
يستخدم المثال التالي معلمات REST API للاستعلام عن نقاط النهاية التي تخدم نماذج الأساس أو النماذج الخارجية. هذه المعلمات هي معاينة عامة وقد يتغير التعريف. راجع POST /serving-endpoints/{name}/invocations.
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "What is a quoll?", "max_tokens": 64}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-mpt-30b-instruct/invocations
MLflow Deployments SDK
هام
يستخدم predict()
المثال التالي واجهة برمجة التطبيقات من MLflow Deployments SDK.
import os
import mlflow.deployments
# Only required when running this example outside of a Databricks Notebook
os.environ['DATABRICKS_HOST'] = "https://<workspace_host>.databricks.com"
os.environ['DATABRICKS_TOKEN'] = "dapi-your-databricks-token"
client = mlflow.deployments.get_deploy_client("databricks")
completions_response = client.predict(
endpoint="databricks-mpt-30b-instruct",
inputs={
"prompt": "What is the capital of France?",
"temperature": 0.1,
"max_tokens": 10,
"n": 2
}
)
# Print the response
print(completions_response)
Databricks Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="databricks-mpt-7b-instruct",
prompt="Write 3 reasons why you should train an AI model on domain specific data sets."
)
print(response.choices[0].text)
SQL
هام
يستخدم المثال التالي دالة SQL المضمنة، ai_query. هذه الدالة هي معاينة عامة وقد يتغير التعريف. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query().
SELECT ai_query(
"databricks-mpt-30b-instruct",
"Can you explain AI in ten words?"
)
فيما يلي تنسيق الطلب المتوقع لنموذج الإكمال. بالنسبة للنماذج الخارجية، يمكنك تضمين معلمات إضافية صالحة لموفر معين وتكوين نقطة النهاية. راجع معلمات الاستعلام الإضافية.
{
"prompt": "What is mlflow?",
"max_tokens": 100,
"temperature": 0.1,
"stop": [
"Human:"
],
"n": 1,
"stream": false,
"extra_params":{
"top_p": 0.9
}
}
فيما يلي تنسيق الاستجابة المتوقع:
{
"id": "cmpl-8FwDGc22M13XMnRuessZ15dG622BH",
"object": "text_completion",
"created": 1698809382,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "MLflow is an open-source platform for managing the end-to-end machine learning lifecycle. It provides tools for tracking experiments, managing and deploying models, and collaborating on projects. MLflow also supports various machine learning frameworks and languages, making it easier to work with different tools and environments. It is designed to help data scientists and machine learning engineers streamline their workflows and improve the reproducibility and scalability of their models.",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 83,
"total_tokens": 88
}
}
الدردشة مع LLMs المدعومة باستخدام الذكاء الاصطناعي Playground
يمكنك التفاعل مع نماذج اللغات الكبيرة المدعومة باستخدام الذكاء الاصطناعي Playground. الذكاء الاصطناعي Playground هو بيئة تشبه الدردشة حيث يمكنك اختبار LLMs ومطالبتها ومقارنتها من مساحة عمل Azure Databricks.