Поделиться через


Модели основы запросов

В этой статье вы узнаете, как форматировать запросы для базовых моделей и отправлять их в конечную точку обслуживания модели. Вы можете запросить базовые модели, размещенные в Databricks и базовых моделях, размещенных за пределами Databricks.

Для традиционных запросов моделей машинного обучения или Python см. Конечные точки обслуживания запросов для пользовательских моделей.

Сервис Mosaic AI для моделей поддерживает API основных моделей и внешних моделей для доступа к основным моделям. Служба моделей использует унифицированный API, совместимый с OpenAI, и пакет SDK для их запроса. Это позволяет экспериментировать с настройкой базовых моделей для использования в производственной среде в поддерживаемых облаках и у поставщиков.

Служба модели ИИ Мозаики предоставляет следующие возможности для отправки запросов на оценку конечным точкам, которые служат базовым моделям или внешним моделям:

Метод Сведения
Клиент OpenAI Выполните запрос к модели, размещенной на конечной точке обслуживания модели ИИ Mosaic, используя клиент OpenAI. Укажите имя конечной точки службы модели в качестве входных model данных. Поддерживается для чата, внедрения и завершения моделей, предоставляемых API-интерфейсами модели Foundation или внешними моделями.
Функция SQL Вызов вывода модели непосредственно из SQL с помощью ai_query функции SQL. См. пример: запрос базовой модели.
Обслуживающий пользовательский интерфейс Выберите конечную точку запроса на странице конечной точки обслуживания. Вставьте входные данные модели формата JSON и щелкните «Отправить запрос». Если в модели есть входной пример, используйте команду Show Example для загрузки.
REST API Вызов и запрос модели с помощью REST API. Дополнительные сведения см. в разделе POST /обслуживающие конечные точки/{name}/invocations . Сведения о оценке запросов к конечным точкам, обслуживающим несколько моделей, см. в разделе "Запрос отдельных моделей" за конечной точкой.
Пакет SDK для развертываний MLflow Используйте функцию predict() пакета SDK для MLflow Deployments, чтобы выполнить запрос к модели.
Databricks Python SDK Пакет SDK для Python Databricks — это слой на вершине REST API. Он обрабатывает низкоуровневые сведения, такие как проверка подлинности, что упрощает взаимодействие с моделями.

Требования

Внимание

В качестве рекомендации по обеспечению безопасности для производственных сценариев Databricks рекомендует использовать машинные OAuth-токены для аутентификации в производственной среде.

Для тестирования и разработки Databricks рекомендует использовать личный маркер доступа, принадлежащий субъектам-службам , а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.

Установка пакетов

После выбора метода запроса необходимо сначала установить соответствующий пакет в кластер.

Клиент OpenAI

Чтобы использовать клиент OpenAI, в вашем кластере необходимо установить пакет databricks-sdk[openai]. Пакет SDK Databricks предоставляет оболочку для настройки клиента OpenAI с авторизацией, которая автоматически конфигурируется для выполнения запросов к генеративным моделям ИИ. Выполните следующую команду в записной книжке или локальном терминале:

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

Следующее необходимо только при установке пакета в записной книжке Databricks

dbutils.library.restartPython()

REST API

Доступ к REST API Сервиса предоставляется в Databricks Runtime для машинного обучения.

Пакет SDK для развертываний MLflow

!pip install mlflow

Следующее требуется только при установке пакета в записной книжке Databricks

dbutils.library.restartPython()

Databricks Python SDK

Пакет SDK Databricks для Python уже установлен во всех кластерах Azure Databricks, использующих Databricks Runtime 13.3 LTS или более поздней версии. Для кластеров Azure Databricks, использующих Databricks Runtime 12.2 LTS и ниже, сначала необходимо установить пакет SDK Databricks для Python. См. пакет SDK Databricks для Python.

Запрос модели завершения чата

Ниже приведены примеры для запроса модели чата. Пример применяется к запросу модели чата, доступной с помощью любой из возможностей службы моделей: API-интерфейсы базовых моделей или внешние модели.

Пример пакетного вывода см. в разделе Выполнение пакетного вывода LLM с помощью функций ИИ.

Клиент OpenAI

Ниже приведен запрос чата для модели DBRX Instruct, которая доступна через конечную точку API модельных интерфейсов Foundation с оплатой за токен, 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. В следующем примере предполагается, что у вас есть токен API 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 API

Внимание

В следующем примере используются параметры REST API для запроса конечных точек обслуживания, которые служат базовым моделям. Эти параметры относятся к общедоступной предварительной версии. Поэтому их определение может измениться. См. POST /serving-endpoints/{name}/invocations.

Ниже приведен запрос чата для модели Instruct DBRX, предоставляемой API-интерфейсами Foundation Model с оплатой за токен, 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 \

Пакет SDK для развертываний MLflow

Внимание

В следующем примере используется predict() API из пакета SDK для развертываний MLflow.

Ниже приведен запрос чата для модели инструкции DBRX, предоставляемой API-интерфейсами модели Foundation для каждой конечной точки токена, 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, предоставляемой API-интерфейсами модели Foundation для каждой конечной точки токена, databricks-dbrx-instruct в рабочей области.

Этот код должен выполняться в блокноте в вашей рабочей области. См. использование SDK Databricks для 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, можно использовать класс ChatModel ChatDatabricks и указать endpoint.

В следующем примере используется класс ChatDatabricks ChatModel в LangChain для обращения к конечной точке API основной модели с оплатой за токен databricks-dbrx-instruct.

%pip install databricks-langchain
from langchain_core.messages import HumanMessage, SystemMessage
from databricks_langchain 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. Эта функция является общедоступной предварительной версией , и определение может измениться.

Ниже приведен запрос чата для meta-llama-3-1-70b-instruct, предоставленный конечной точкой оплаты за токен API модели Foundation, доступной в databricks-meta-llama-3-1-70b-instruct вашей рабочей области.

Примечание.

Функция ai_query() не поддерживает конечные точки запросов, обслуживающие DBRX или инструкционную модель DBRX.

SELECT ai_query(
    "databricks-meta-llama-3-1-70b-instruct",
    "Can you explain AI in ten words?"
  )

Например, ниже приведен ожидаемый формат запроса для модели чата при использовании REST API. Для внешних моделей можно включить дополнительные параметры, допустимые для заданного поставщика и конфигурации конечной точки. См. дополнительные параметры запроса.

{
  "messages": [
    {
      "role": "user",
      "content": "What is a mixture of experts model?"
    }
  ],
  "max_tokens": 100,
  "temperature": 0.1
}

Ниже приведен ожидаемый формат ответа для запроса, сделанного с помощью REST API:

{
  "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 API-интерфейсами модели Foundation. Пример относится к запросу модели встраивания, доступной через одну из возможностей развертывания моделей: API фундаментальной модели или внешние модели.

Клиент 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, как показано ниже. В следующем примере предполагается, что у вас есть токен API 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 API

Внимание

В следующем примере используются параметры 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

Пакет SDK для развертываний MLflow

Внимание

В следующем примере используется predict() API из пакета SDK для развертываний MLflow.


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

Чтобы использовать модель API модели Databricks Foundation в LangChain в качестве модели внедрения, импортируйте DatabricksEmbeddings класс и укажите endpoint параметр следующим образом:

%pip install databricks-langchain
from databricks_langchain import DatabricksEmbeddings

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

SQL

Внимание

В следующем примере используется встроенная функция SQL, 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

Внимание

Запрос моделей завершения текста, доступных через API-интерфейсы Foundation Model и оплачиваемых за каждый токен с использованием клиента OpenAI, не поддерживается. Запросы только внешних моделей с помощью клиента OpenAI поддерживаются, как показано в этом разделе.

Чтобы использовать клиент OpenAI, укажите имя конечной точки службы модели в качестве входных model данных. В следующем примере выполняется запрос к модели завершения, размещенной 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 API

Ниже приведен запрос на завершение для запроса модели завершения, доступной с помощью внешних моделей.

Внимание

В следующем примере используются параметры 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

Пакет SDK для развертываний MLflow

Запрос на выполнение, касающийся использования модели выполнения, предоставленной с помощью внешних моделей, приведен ниже.

Внимание

В следующем примере используется predict() API из пакета SDK для развертываний MLflow.


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

Ниже приведен запрос на завершение для запроса модели завершения, доступной с помощью внешних моделей.

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. Эта функция является общедоступной предварительной версией , и определение может измениться.

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
  }
}

Чат с поддерживаемыми LLM с помощью ИИ-площадки

Вы можете взаимодействовать с поддерживаемыми крупными языковыми моделями с помощью игровой площадки ИИ. Платформа искусственного интеллекта — это среда чата, в которой можно тестировать, запрашивать и сравнивать LLM из рабочей области Azure Databricks.

Детская площадка для искусственного интеллекта

Дополнительные ресурсы