Модели создания запросов и искусственного интеллекта
Из этой статьи вы узнаете, как форматировать запросы для базовых моделей и внешних моделей и отправлять их в конечную точку обслуживания модели.
Для традиционных запросов на запросы моделей машинного обучения или Python см. сведения о конечных точках обслуживания запросов для пользовательских моделей.
Служба моделей Мозаичного ИИ поддерживает API-интерфейсы и внешние модели для доступа к созданным моделям ИИ. Служба моделей использует унифицированный API, совместимый с OpenAI, и пакет SDK для их запроса. Это позволяет поэкспериментировать и настроить модели создания ИИ для рабочей среды в поддерживаемых облаках и поставщиках.
Служба модели ИИ Мозаики предоставляет следующие возможности для отправки запросов на оценку конечным точкам, которые служат базовым моделям или внешним моделям:
Метод | Сведения |
---|---|
Клиент OpenAI | Запрос модели, размещенной конечной точкой обслуживания модели ИИ Мозаики, с помощью клиента OpenAI. Укажите имя конечной точки службы модели в качестве входных model данных. Поддерживается для чата, внедрения и завершения моделей, предоставляемых API-интерфейсами модели Foundation или внешними моделями. |
Обслуживающий пользовательский интерфейс | Выберите конечную точку запроса на странице конечной точки обслуживания. Вставьте входные данные модели формата JSON и нажмите кнопку "Отправить запрос". Если в модели есть входной пример, используйте команду Show Example для загрузки. |
REST API | Вызов и запрос модели с помощью REST API. Дополнительные сведения см. в разделе POST /обслуживающие конечные точки/{name}/invocations . Сведения о оценке запросов к конечным точкам, обслуживающим несколько моделей, см. в разделе "Запрос отдельных моделей" за конечной точкой. |
Пакет SDK для развертываний MLflow | Используйте функцию predict() пакета SDK для развертывания MLflow для запроса модели. |
Databricks Python SDK | Пакет SDK для Python Databricks — это слой на вершине REST API. Он обрабатывает низкоуровневые сведения, такие как проверка подлинности, что упрощает взаимодействие с моделями. |
Функция SQL | Вызов вывода модели непосредственно из SQL с помощью ai_query функции SQL. См. статью "Запрос обслуживаемой модели" с помощью ai_query(). |
Требования
- Конечная точка обслуживания модели.
- Рабочая область 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-интерфейсы модели Foundation или внешние модели.
Пример вывода пакетной службы см. в разделе "Вывод пакетной службы" с помощью API модели Foundation, подготовленной пропускной способности.
Клиент OpenAI
Ниже приведен запрос чата для модели инструкции DBRX, предоставляемой 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.
Ниже приведен запрос чата для модели инструкции DBRX, предоставляемой API-интерфейсами модели Foundation для каждой конечной точки токена, 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, можно использовать класс ChatDatabricks ChatModel и указать его endpoint
.
В следующем примере используется ChatDatabricks
класс ChatModel в LangChain для запроса конечной точки API-интерфейсов модели Foundation для оплаты за токен. 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
получения доступа к конечным точкам 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-интерфейсы модели Foundation или внешние модели.
Клиент 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 и открыт для вычислений. Вам также нужен экземпляр рабочей области 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 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
Внимание
Запрос моделей завершения текста, доступных с помощью API-интерфейсов модели Foundation для каждого токена с помощью клиента 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 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. Эта функция является общедоступной предварительной версией , и определение может измениться. См. статью "Запрос обслуживаемой модели" с помощью 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.
Дополнительные ресурсы
- Таблицы вывода для моделей мониторинга и отладки
- Пакетное вывод с помощью API-интерфейсов модели Foundation, подготовленных пропускной способности
- API модели Databricks Foundation
- Внешние модели в мозаичной модели ИИ
- Руководство. Создание конечных точек внешней модели для запроса моделей OpenAI
- Поддерживаемые модели для оплаты за токен
- Справочник по REST API модели Foundation