Модели основы запросов
В этой статье вы узнаете, как форматировать запросы для базовых моделей и отправлять их в конечную точку обслуживания модели. Вы можете запросить базовые модели, размещенные в 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 в поддерживаемом регионе.
- Чтобы отправить запрос оценки через клиент OpenAI, REST API или SDK для развертывания MLflow, необходимо иметь токен API Databricks.
Внимание
В качестве рекомендации по обеспечению безопасности для производственных сценариев 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.
Дополнительные ресурсы
- Мониторинг развернутых моделей с помощью таблиц вывода предсказаний с поддержкой шлюза AI
- Выполнение пакетной LLM-инференции, используя функции ИИ
- API модели Databricks Foundation
- Внешние модели в мозаичной модели ИИ
- Руководство. Создание конечных точек внешней модели для запроса моделей OpenAI
- Поддерживаемые модели для оплаты за токен
- Справочник по REST API модели Foundation