مشاركة عبر


نماذج الذكاء الاصطناعي التوليدية للاستعلام

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

للحصول على طلبات الاستعلام التقليدية لنماذج 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، يجب تثبيت الحزمة databricks-sdk[openai] على نظام المجموعة. يوفر Databricks SDK برنامج تضمين لإنشاء عميل OpenAI مع تخويل تم تكوينه تلقائيا للاستعلام عن نماذج الذكاء الاصطناعي التوليدية. قم بتشغيل ما يلي في دفتر الملاحظات أو المحطة الطرفية المحلية:

!pip install databricks-sdk[openai]>=0.35.0

ما يلي مطلوب فقط عند تثبيت الحزمة على دفتر ملاحظات 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 أولا. راجع Databricks SDK ل Python.

الاستعلام عن نموذج إكمال الدردشة

فيما يلي أمثلة للاستعلام عن نموذج دردشة. ينطبق المثال على الاستعلام عن نموذج دردشة متوفر باستخدام أي من قدرات خدمة النموذج: واجهات برمجة تطبيقات نموذج الأساس أو النماذج الخارجية.

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

عميل OpenAI

فيما يلي طلب دردشة لنموذج تعليمات DBRX الذي تم توفيره بواسطة نقطة نهاية الدفع لكل رمز مميز لواجهة برمجة التطبيقات لنموذج الأساس، databricks-dbrx-instruct في مساحة العمل الخاصة بك.

لاستخدام عميل OpenAI، حدد اسم نقطة نهاية خدمة النموذج كمدخل model .


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_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
)

للاستعلام عن نماذج الأساس خارج مساحة العمل الخاصة بك، يجب استخدام عميل OpenAI مباشرة. تحتاج أيضا إلى مثيل مساحة عمل Databricks لتوصيل عميل OpenAI ب Databricks. يفترض المثال التالي أن لديك رمزا مميزا لواجهة برمجة تطبيقات 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.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، يمكنك استخدام فئة ChatDatabricks ChatModel وتحديد endpoint.

يستخدم ChatDatabricks المثال التالي فئة ChatModel في LangChain للاستعلام عن نقطة نهاية الدفع لكل رمز مميز لواجهات برمجة التطبيقات لنموذج الأساس. databricks-dbrx-instruct

%pip install databricks-langchain
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_databricks import ChatDatabricks

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]

llm = ChatDatabricks(endpoint_name="databricks-dbrx-instruct")
llm.invoke(messages)

SQL

هام

يستخدم المثال التالي دالة SQL المضمنة، ai_query. هذه الدالة هي معاينة عامة وقد يتغير التعريف. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query().

فيما يلي طلب دردشة لتوفيره meta-llama-3-1-70b-instruct بواسطة واجهة برمجة تطبيقات نموذج الأساس التي تدفع لكل رمز مميز نقطة نهاية، databricks-meta-llama-3-1-70b-instruct في مساحة العمل الخاصة بك.

إشعار

ai_query() لا تدعم الدالة نقاط نهاية الاستعلام التي تخدم نموذج DBRX أو DBRX Instruct.

SELECT ai_query(
    "databricks-meta-llama-3-1-70b-instruct",
    "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
}

الاستعلام عن نموذج تضمين

فيما يلي طلب تضمين للنموذج gte-large-en الذي توفره واجهات برمجة تطبيقات نموذج المؤسسة. ينطبق المثال على الاستعلام عن نموذج تضمين متاح باستخدام أي من قدرات خدمة النموذج: واجهات برمجة تطبيقات نموذج الأساس أو النماذج الخارجية.

عميل OpenAI

لاستخدام عميل OpenAI، حدد اسم نقطة نهاية خدمة النموذج كمدخل model .


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

للاستعلام عن نماذج الأساس خارج مساحة العمل الخاصة بك، يجب عليك استخدام عميل OpenAI مباشرة، كما هو موضح أدناه. يفترض المثال التالي أن لديك رمزا مميزا لواجهة برمجة تطبيقات Databricks وopenai مثبتا على الحساب الخاص بك. تحتاج أيضا إلى مثيل مساحة عمل Databricks لتوصيل عميل OpenAI ب Databricks.


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-gte-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-gte-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-gte-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-gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

لاستخدام نموذج واجهات برمجة التطبيقات لنموذج Databricks Foundation في LangChain كنموذج تضمين، قم باستيراد DatabricksEmbeddings الفئة وحدد المعلمة endpoint كما يلي:

%pip install databricks-langchain
from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-gte-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

SQL

هام

يستخدم المثال التالي دالة SQL المضمنة، ai_query. هذه الدالة هي معاينة عامة وقد يتغير التعريف. راجع الاستعلام عن نموذج تم تقديمه باستخدام ai_query().


SELECT ai_query(
    "databricks-gte-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
  }
}

التحقق مما إذا تم تسوية عمليات التضمين

استخدم ما يلي للتحقق مما إذا كانت عمليات التضمين التي تم إنشاؤها بواسطة النموذج الخاص بك تمت تسويتها.


  import numpy as np

  def is_normalized(vector: list[float], tol=1e-3) -> bool:
      magnitude = np.linalg.norm(vector)
      return abs(magnitude - 1) < tol

الاستعلام عن نموذج إكمال النص

عميل OpenAI

هام

الاستعلام عن نماذج إكمال النص المتوفرة باستخدام واجهات برمجة تطبيقات نموذج الأساس الدفع لكل رمز مميز باستخدام عميل OpenAI غير مدعوم. يتم دعم الاستعلام عن النماذج الخارجية فقط باستخدام عميل OpenAI كما هو موضح في هذا القسم.

لاستخدام عميل OpenAI، حدد اسم نقطة نهاية خدمة النموذج كمدخل model . يستعلم المثال التالي عن claude-2 نموذج الإكمال الذي تستضيفه Anthropic باستخدام عميل OpenAI. لاستخدام عميل OpenAI، قم بتعبئة model الحقل باسم نقطة نهاية خدمة النموذج الذي يستضيف النموذج الذي تريد الاستعلام عليه.

يستخدم هذا المثال نقطة نهاية تم إنشاؤها مسبقا، anthropic-completions-endpoint، تم تكوينها للوصول إلى النماذج الخارجية من موفر نموذج Anthropic. تعرف على كيفية إنشاء نقاط نهاية نموذج خارجي.

راجع النماذج المدعومة للحصول على نماذج إضافية يمكنك الاستعلام عن موفريها.


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

completion = openai_client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)

واجهة برمجة تطبيقات 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/<completions-model-endpoint>/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="<completions-model-endpoint>",
    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

Tالتالي هو طلب إكمال للاستعلام عن نموذج إكمال متاح باستخدام نماذج خارجية.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="<completions-model-endpoint>",
    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(
    "<completions-model-endpoint>",
    "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.

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

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