Compartilhar via


Modelos de base de consulta e modelos externos.

Neste artigo, você aprenderá a formatar solicitações de consulta para modelos de base e modelos externos e enviá-las para o ponto de extremidade de serviço do modelo.

Para solicitações de consulta de modelos ML ou Python tradicionais, consulte Consulta que serve pontos de extremidade para modelos personalizados.

O Serviço de Modelo de IA do Mosaic dá suporte a APIs de Modelos Base e modelos externos para acessar modelos de IA generativa. O Serviço de Modelo usa uma API e um SDK unificados, compatíveis com o OpenAI para consultá-los. Isso possibilita experimentar e personalizar modelos de IA generativa para produção em nuvens e provedores com suporte.

O Serviço de Modelo de IA do Mosaic traz as seguintes opções para enviar solicitações de pontuação para pontos de extremidade que fornecem modelos base ou modelos externos:

Método Detalhes
Cliente OpenAI Consultar um modelo hospedado por um ponto de extremidade do Serviço de Modelo do Mosaic AI usando o cliente OpenAI. Especifique o nome do ponto de extremidade de serviço do modelo como a entrada model. Com suporte para modelos de chat, inserções e preenchimentos disponibilizados por APIs de modelos de base ou modelos externos.
Servindo a interface do usuário Selecione Ponto de extremidade de consulta na página Ponto de extremidade de atendimento. Insira os dados de entrada do modelo no formato JSON e clique em Enviar solicitação. Se o modelo tiver um exemplo de entrada registrado, use Mostrar Exemplo para carregá-lo.
API REST Chame e consulte o modelo usando a API REST. Consulte POST /serving-endpoints/{name}/invocações para obter detalhes. Para solicitações de pontuação para pontos de extremidade que atendem a vários modelos, consulte Consultar modelos individuais em um ponto de extremidade.
SDK de Implantações do MLflow Use a função predict() do SDK de Implantações do MLflow para consultar o modelo.
SDK do Databricks para Python O SDK do Python do Databricks é uma camada sobre a API REST. Ele lida com detalhes de baixo nível, como a autenticação, facilitando a interação com os modelos.
Função SQL Invoque a inferência de modelo diretamente do SQL usando a função SQL ai_query. Consulte Pergunte a um modelo atendido com ai_query().

Requisitos

Importante

Como prática recomendada de segurança para cenários de produção, a Databricks recomenda que você use tokens OAuth máquina a máquina para autenticação durante a produção.

Para testes e desenvolvimento, a Databricks recomenda a utilização de um token de acesso pessoal pertencente a principais de serviço em vez de utilizadores do espaço de trabalho. Para criar tokens para entidades de serviço, consulte Gerenciar tokens para uma entidade de serviço.

Instalar Pacotes

Depois de selecionar um método de consulta, primeiro você deve instalar o pacote apropriado no cluster.

Cliente OpenAI

Para usar o cliente OpenAI, o pacote openai precisa ser instalado em seu cluster. Execute o seguinte no bloco de anotações ou no terminal local:

!pip install openai

A seguir só é necessário ao instalar o pacote em um Databricks Notebook

dbutils.library.restartPython()

API REST

O acesso à API REST de serviço está disponível no Databricks Runtime para Machine Learning.

SDK de Implantações do MLflow

!pip install mlflow

A seguir só é necessário ao instalar o pacote em um Databricks Notebook

dbutils.library.restartPython()

SDK do Databricks para Python

O SDK do Databricks para Python já está instalado em todos os clusters do Azure Databricks que usam o Databricks Runtime 13.3 LTS ou superior. Para clusters do Azure Databricks que usam o Databricks Runtime 12.2 LTS e inferior, você precisa instalar primeiro o SDK do Databricks para Python. Consulte Etapa 1: instalar ou atualizar o SDK do Databricks para Python.


## <a id="chat"> </a><a id="query-a-chat-completion-model"> </a>Query a chat completion model

The following are examples for querying a chat model. The example applies to querying a chat model made available using either of the Model Serving capabilities: Foundation Model APIs or external models.

For a batch inference example, see [Batch inference using Foundation Model APIs](../foundation-models/fmapi-batch-inference.md).

### OpenAI&nbsp;client

The following is a chat request for the DBRX Instruct model made available by the Foundation Model APIs pay-per-token endpoint, ``databricks-dbrx-instruct`` in your workspace.

To use the OpenAI client, specify the model serving endpoint name as the ``model`` input. The following example assumes you have a [Databricks API token](#required) and ``openai`` installed on your compute. You also need your [Databricks workspace instance](../../workspace/workspace-details.md#workspace-url) to connect the OpenAI client to Databricks.

```python

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
)

API REST

Importante

O exemplo a seguir usa os parâmetros da API REST para consultar os pontos de extremidade de serviço que atendem aos modelos de base. Esses parâmetros estão em Visualização Pública e a definição pode ser alterada. Consulte POST /serving-endpoints/{name}/invocations.

A seguir está uma solicitação de chat para o modelo DBRX Instruct disponibilizado pelo ponto de extremidade de pagamento por token das APIs do Foundation Model, databricks-dbrx-instruct em seu espaço de trabalho.

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 de Implantações do MLflow

Importante

O exemplo a seguir usa a API predict() do SDK de Implantações do MLflow..

A seguir está uma solicitação de chat para o modelo DBRX Instruct disponibilizado pelo ponto de extremidade de pagamento por token das APIs do Foundation Model, databricks-dbrx-instruct em seu espaço de trabalho.


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

SDK do Databricks para Python

A seguir está uma solicitação de chat para o modelo DBRX Instruct disponibilizado pelo ponto de extremidade de pagamento por token das APIs do Foundation Model, databricks-dbrx-instruct em seu espaço de trabalho.

Esse código deve ser executado em um notebook em seu workspace. Consulte Usar o SDK do Databricks para Python de um notebook do 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

Para consultar um ponto de extremidade de modelo básico usando LangChain, você pode fazer o seguinte:

  • Importe a classe LLM Databricks e especifique o endpoint_name e o transform_input_fn.
  • Importe a classe ChatDatabricks ChatModel e especifique o endpoint.

O exemplo a seguir usa a classe Databricks LLM em LangChain para consultar o ponto de extremidade pay-per-token das APIs do Modelo de Fundação, databricks-dbrx-instruct. As APIs do Modelo de Fundação esperam messages no dicionário de solicitação, enquanto o LangChain Databricks LLM por padrão fornece prompt no dicionário de solicitação. Use a função transform_input para preparar o dicionário de solicitações para o formato esperado.

from langchain.llms import Databricks
from langchain_core.messages import HumanMessage, SystemMessage

def transform_input(**request):
  request["messages"] = [
    {
      "role": "user",
      "content": request["prompt"]
    }
  ]
  del request["prompt"]
  return request

llm = Databricks(endpoint_name="databricks-dbrx-instruct", transform_input_fn=transform_input)
llm("What is a mixture of experts model?")

O exemplo a seguir usa a classe ChatDatabricks ChatModel e especifica o endpoint.

from langchain.chat_models import ChatDatabricks
from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]
chat_model = ChatDatabricks(endpoint="databricks-dbrx-instruct", max_tokens=500)
chat_model.invoke(messages)

SQL

Importante

O exemplo a seguir usa a função SQL integrada, ai_query. Esta função está em Visualização Pública e a definição pode ser alterada. Consulte Pergunte a um modelo atendido com ai_query().

A seguir está uma solicitação de chat para llama-2-70b-chat disponibilizada pelo ponto de extremidade de pagamento por token das APIs do Foundation Model, databricks-llama-2-70b-chat em seu espaço de trabalho.

Observação

A função ai_query() não suporta terminais de consulta que atendem ao modelo DBRX ou DBRX Instruct.

SELECT ai_query(
    "databricks-llama-2-70b-chat",
    "Can you explain AI in ten words?"
  )

Por exemplo, o seguinte é o formato de solicitação esperado para um modelo de chat ao usar a API REST. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto de extremidade. Consulte parâmetros de consulta adicionais.

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

Veja a seguir um formato de resposta esperado para uma solicitação feita usando a API 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
}

Consultar um modelo de inserção

A seguir, uma solicitação de inserção para o modelo bge-large-en disponibilizado pelas APIs do Modelo Base. O exemplo se aplica à consulta de um modelo de inserção disponibilizado que usa uma das funcionalidades do Serviço de Modelo: APIs do Modelo Base ou modelos externos.

Cliente OpenAI

Para usar o cliente OpenAI, especifique o nome do ponto de extremidade de serviço do modelo como a entrada model. O exemplo a seguir pressupõe que você tenha um token de API do Databricks e openai instalados em seu cluster.


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-bge-large-en",
  input="what is databricks"
)

API REST

Importante

O exemplo a seguir usa os parâmetros da API REST para consultar os pontos de extremidade de serviço que fornecem modelos base ou modelos externos. Esses parâmetros estão em Visualização Pública e a definição pode ser alterada. Consulte 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-bge-large-en/invocations

SDK de Implantações do MLflow

Importante

O exemplo a seguir usa a API predict() do SDK de Implantações do 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-bge-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

SDK do Databricks para Python


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

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-bge-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

Para usar um modelo de APIs de modelo do Databricks Foundation no LangChain como um modelo de inserção, importe a classe DatabricksEmbeddings e especifique o parâmetro endpoint da seguinte maneira:

from langchain.embeddings import DatabricksEmbeddings

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

SQL

Importante

O exemplo a seguir usa a função SQL integrada, ai_query. Esta função está em Visualização Pública e a definição pode ser alterada. Consulte Pergunte a um modelo atendido com ai_query().


SELECT ai_query(
    "databricks-bge-large-en",
    "Can you explain AI in ten words?"
  )

A seguir, o formato de solicitação esperado para um modelo de inserções. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto de extremidade. Consulte parâmetros de consulta adicionais.


{
  "input": [
    "embedding text"
  ]
}

O formato de resposta esperado é o seguinte:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Consultar um modelo de preenchimento de texto

Veja a seguir uma solicitação de conclusão para o modelo databricks-mpt-30b-instruct disponibilizado pelas APIs do Foundation Model. O exemplo se aplica à consulta de um modelo de chat disponibilizado que usa uma das funcionalidades do Serviço de Modelo: APIs do Modelo Base ou modelos externos. Para ver os parâmetros e a sintaxe, confira a tarefa Preenchimento.

Cliente OpenAI

Para usar o cliente OpenAI, especifique o nome do ponto de extremidade de serviço do modelo como a entrada model. O exemplo a seguir pressupõe que você tenha um token de API do Databricks e openai instalados em seu cluster.


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"
)

completion = client.completions.create(
  model="databricks-mpt-30b-instruct",
  prompt="what is databricks",
  temperature=1.0
)

API REST

Importante

O exemplo a seguir usa os parâmetros da API REST para consultar os pontos de extremidade de serviço que fornecem modelos base ou modelos externos. Esses parâmetros estão em Visualização Pública e a definição pode ser alterada. Consulte 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/databricks-mpt-30b-instruct/invocations

SDK de Implantações do MLflow

Importante

O exemplo a seguir usa a API predict() do SDK de Implantações do 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="databricks-mpt-30b-instruct",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)

# Print the response
print(completions_response)

SDK do Databricks para Python

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

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-mpt-7b-instruct",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets."
)
print(response.choices[0].text)

SQL

Importante

O exemplo a seguir usa a função SQL integrada, ai_query. Esta função está em Visualização Pública e a definição pode ser alterada. Consulte Pergunte a um modelo atendido com ai_query().

SELECT ai_query(
    "databricks-mpt-30b-instruct",
    "Can you explain AI in ten words?"
  )

A seguir, o formato de solicitação esperado para um modelo de conclusões. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto de extremidade. Consulte parâmetros de consulta adicionais.

{
  "prompt": "What is mlflow?",
  "max_tokens": 100,
  "temperature": 0.1,
  "stop": [
    "Human:"
  ],
  "n": 1,
  "stream": false,
  "extra_params":{
    "top_p": 0.9
  }
}

O formato de resposta esperado é o seguinte:

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

Conversar com LLMs com suporte usando o Playground de IA

Você pode interagir com modelos de linguagem grandes com suporte usando o Playground de IA. O Playground de IA é um ambiente semelhante a um chat onde você pode testar, enviar solicitações e comparar LLMs a partir do seu workspace do Azure Databricks.

Playground de IA

Recursos adicionais