نماذج أساس الاستعلام والنماذج الخارجية

في هذه المقالة، ستتعلم كيفية تنسيق طلبات الاستعلام للنماذج الأساسية والنماذج الخارجية وإرسالها إلى نقطة نهاية خدمة النموذج الخاص بك.

للحصول على طلبات الاستعلام التقليدية لنماذج 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 باستخدام رموز 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&nbsp;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.

ملعب الذكاء الاصطناعي

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