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


Модели создания запросов и искусственного интеллекта

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

Для традиционных запросов на запросы моделей машинного обучения или 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 рекомендует использовать маркеры 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.

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

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