Modelos básicos de consulta y modelos externos

En este artículo, aprenderá a dar formato a las solicitudes de consulta para los modelos de base y los modelos externos y a enviarlos al punto de conexión de servicio del modelo.

Para las solicitudes de consulta de modelos de ML o Python tradicionales, vea Consulta de puntos de conexión de servicio para modelos personalizados.

El servicio de modelos de Mosaic AI admite las API de modelos básicos y modelos externos para acceder a los modelos de IA generativa. El servicio de modelos usa una API y un SDK unificados compatibles con OpenAI para consultarlos. Esto permite experimentar con y personalizar modelos de IA generativa para producción en nubes y proveedores admitidos.

El servicio de modelos de Mosaic IA proporciona las siguientes opciones para enviar solicitudes de puntuación a puntos de conexión que sirven a modelos básicos o modelos externos:

Método Detalles
Cliente OpenAI Consulte un modelo hospedado por un punto de conexión de servicio de modelos de Mosaic AI mediante el cliente OpenAI. Especifique el nombre del punto de conexión de servicio del modelo como la entrada model. Se admite para chat, inserciones y modelos de finalizaciones disponibles por las API de fundación o modelos externos.
Interfaz de usuario de servicio Seleccione Punto de conexión de consulta en la página Punto de conexión de servicio. Introduzca los datos de entrada del modelo en formato JSON y haga clic en Enviar solicitud. Si el modelo tiene un ejemplo de entrada registrado, use Mostrar ejemplo para cargarlo.
REST API Llame al modelo y consulte el modelo mediante la API de REST. Consulte POST /serving-endpoints/{name}/invocations para más detalles. Para puntuar solicitudes a puntos de conexión que sirven a varios modelos, consulte Consultar modelos individuales detrás de un punto de conexión.
SDK de implementaciones de MLflow Use la función predict() del SDK’de implementaciones de MLflow para consultar el modelo.
SDK de Python en Databricks El SDK de Python Databricks es una capa sobre la API de REST. Controla los detalles de bajo nivel, como la autenticación, lo que facilita la interacción con los modelos.
Función SQL Invoque la inferencia del modelo directamente desde SQL usando la función de SQL ai_query. Vea Consulta de un modelo servido con ai_query().

Requisitos

Importante

Como procedimiento recomendado de seguridad para escenarios de producción, Databricks recomienda usar Tokens de OAuth de máquina a máquina para la autenticación durante la producción.

Para pruebas y desarrollo, Databricks recomienda usar un token de acceso personal que pertenezca a entidades de servicio en lugar de usuarios del área de trabajo. Para crear tókenes para entidades de servicio, consulte Administración de tokens de acceso para una entidad de servicio.

Instalar paquetes

Después de seleccionar un método de consulta, primero debe instalar el paquete adecuado en el clúster.

Cliente OpenAI

Para usar el cliente de OpenAI, el paquete openai debe instalarse en el clúster. Ejecute lo siguiente en el cuaderno o en el terminal local:

!pip install openai

Lo siguiente solo es necesario al instalar el paquete en un cuaderno de Databricks

dbutils.library.restartPython()

REST API

El acceso a la API de REST de servicio está disponible en Databricks Runtime para Machine Learning.

SDK de implementaciones de MLflow

!pip install mlflow

Lo siguiente solo es necesario al instalar el paquete en un cuaderno de Databricks

dbutils.library.restartPython()

SDK de Python en Databricks

El SDK de Databricks para Python ya está instalado en todos los clústeres de Azure Databricks que usan Databricks Runtime 13.3 LTS o una versión superior. Para los clústeres de Azure Databricks que usan Databricks Runtime 12.2 LTS y versiones posteriores, primero debe instalar el SDK de Databricks para Python. Vea Paso 1: Instalación o actualización del SDK de 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
)

REST API

Importante

En el ejemplo siguiente se usan parámetros de la API de REST para consultar los puntos de conexión de servicio que sirven a los modelos fundamentales. Estos parámetros están en Versión preliminar pública y la definición podría cambiar. Consulte POST /serving-endpoints/{name}/invocations.

A continuación se muestra una solicitud de chat para el modelo DBRX Instruct que las API de Foundation Model han puesto a disposición del punto de conexión de pago por token, databricks-dbrx-instruct en el área de trabajo.

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 implementaciones de MLflow

Importante

En el ejemplo siguiente se usa la API de predict() del SDK de implementaciones de MLflow.

A continuación se muestra una solicitud de chat para el modelo DBRX Instruct que las API de Foundation Model han puesto a disposición del punto de conexión de pago por token, databricks-dbrx-instruct en el área de trabajo.


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 de Python en Databricks

A continuación se muestra una solicitud de chat para el modelo DBRX Instruct que las API de Foundation Model han puesto a disposición del punto de conexión de pago por token, databricks-dbrx-instruct en el área de trabajo.

Este código debe ejecutarse en un cuaderno del área de trabajo. Consulte Uso del SDK de Databricks para Python desde un cuaderno de 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 un punto de conexión de modelo de base mediante LangChain, puede realizar cualquiera de las siguientes acciones:

  • Importe la clase LLM de Databricks y especifique endpoint_name y transform_input_fn.
  • Importe la clase ChatModel de ChatDatabricks y especifique endpoint.

En el ejemplo siguiente se usa la Databricksclase LLM en LangChain para consultar el punto de conexión de pago por token de las API de Foundation Model, databricks-dbrx-instruct. Las API de Foundation Model esperan messages en el diccionario de solicitudes, mientras que LangChain Databricks LLM proporciona de forma predeterminada prompt en el diccionario de solicitudes. Use la función transform_input para preparar el diccionario de solicitudes en el 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?")

En el ejemplo siguiente se usa la ChatModel de ChatDatabricks y se especifica 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

En el ejemplo siguiente se usa la función SQL integrada, ai_query. Esta función está en Versión preliminar pública y la definición podría cambiar. Vea Consulta de un modelo servido con ai_query().

La siguiente es una solicitud de chat para llama-2-70b-chat puesta a disposición por el punto de conexión de pago por token de las API de Foundation Model, databricks-llama-2-70b-chat en su área de trabajo.

Nota:

La función ai_query() no admite puntos de conexión de consulta que sirven al modelo DBRX o DBRX Instruct.

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

A modo de ejemplo, a continuación se muestra el formato de solicitud esperado para un modelo de chat cuando se usa la API de REST. En el caso de los modelos externos, puede incluir parámetros adicionales válidos para una configuración de punto de conexión y proveedor determinada. Consulte parámetros de consulta adicionales.

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

A continuación se muestra un formato de respuesta esperado para una solicitud realizada mediante la API de 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 un modelo de inserción

A continuación se muestra una solicitud de inserciones para el modelo bge-large-en facilitada por las API de Foundation Model. El ejemplo se aplica a la consulta de un modelo de inserción que está disponible mediante las funcionalidades del servicio de modelos: API de modelos básicos o modelos externos.

Cliente OpenAI

Para usar el cliente OpenAI, especifique el nombre del punto de conexión de servicio del modelo como la entrada model. En el ejemplo siguiente se supone que tiene un token de API de Databricks y openai instalado en el clúster.


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

REST API

Importante

En el ejemplo siguiente se usan parámetros de la API de REST para consultar los puntos de conexión de servicio que sirven a los modelos básicos o los modelos externos. Estos parámetros están en Versión preliminar pública y la definición podría cambiar. 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 implementaciones de MLflow

Importante

En el ejemplo siguiente se usa la API de predict() del SDK de implementaciones de 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 de Python en Databricks


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 un modelo de API de Modelo de Databricks Foundation en LangChain como modelo de inserción, importe la clase DatabricksEmbeddings y especifique el parámetro endpoint de la siguiente manera:

from langchain.embeddings import DatabricksEmbeddings

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

SQL

Importante

En el ejemplo siguiente se usa la función SQL integrada, ai_query. Esta función está en Versión preliminar pública y la definición podría cambiar. Vea Consulta de un modelo servido con ai_query().


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

A continuación se muestra el formato de solicitud esperado para un modelo de inserción. En el caso de los modelos externos, puede incluir parámetros adicionales válidos para una configuración de punto de conexión y proveedor determinada. Consulte parámetros de consulta adicionales.


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

A continuación se muestra el formato de respuesta esperado:

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

Consultar un modelo de finalización de texto

A continuación se muestra una solicitud de finalización para el modelo databricks-mpt-30b-instruct facilitada por las API de Foundation Model. El ejemplo se aplica a la consulta de un modelo de chat que está disponible mediante las funcionalidades del servicio de modelos: API de modelos básicos o modelos externos. Para conocer los parámetros y la sintaxis, vea Tarea de finalización.

Cliente OpenAI

Para usar el cliente OpenAI, especifique el nombre del punto de conexión de servicio del modelo como la entrada model. En el ejemplo siguiente se supone que tiene un token de API de Databricks y openai instalado en el clúster.


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
)

REST API

Importante

En el ejemplo siguiente se usan parámetros de la API de REST para consultar los puntos de conexión de servicio que sirven a los modelos básicos o los modelos externos. Estos parámetros están en Versión preliminar pública y la definición podría cambiar. 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 implementaciones de MLflow

Importante

En el ejemplo siguiente se usa la API de predict() del SDK de implementaciones de 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 de Python en Databricks

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

En el ejemplo siguiente se usa la función SQL integrada, ai_query. Esta función está en Versión preliminar pública y la definición podría cambiar. Vea Consulta de un modelo servido con ai_query().

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

A continuación se muestra el formato de solicitud esperado para un modelo de finalizaciones. En el caso de los modelos externos, puede incluir parámetros adicionales válidos para una configuración de punto de conexión y proveedor determinada. Consulte parámetros de consulta adicionales.

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

A continuación se muestra el formato de respuesta esperado:

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

Chat con los LLM admitidos con AI Playground

Puede interactuar con modelos de lenguaje grandes compatibles mediante AI Playground. AI Playground es un entorno similar al chat en el que puede probar, preguntar y comparar los LLM desde el área de trabajo de Azure Databricks.

Área de juegos de IA

Recursos adicionales