Modelos de base de consulta

En este artículo, aprenderá a dar formato a las solicitudes de consulta para los modelos de base 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.

Databricks Model Serving admite las API de Foundation Models y los modelos externos para acceder a los modelos de base y usa una API y un SDK unificados compatibles con OpenAI para consultarlos. Esto permite experimentar con y personalizar modelos básicos para producción en nubes y proveedores admitidos.

Databricks Model Serving proporciona las siguientes opciones para enviar solicitudes de puntuación a modelos de base:

Método Detalles
Cliente OpenAI Consulte un modelo hospedado por un punto de conexión de servicio de modelos de Databricks 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 GenAI de Databricks El SDK GenAI de Databricks es una capa sobre la API de REST. Controla los detalles de bajo nivel, como la autenticación y la asignación de id. de modelo a direcciones URL de punto de conexión, lo que facilita la interacción con los modelos. El SDK está diseñado para usarse desde cuadernos de Databricks.
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 de 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()

API de REST

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 GenAI de Databricks

 !pip install databricks-genai

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

 dbutils.library.restartPython()

Consultar un modelo de finalización de chat

A continuación se muestran ejemplos para consultar un modelo de chat.

Para ver un ejemplo de inferencia por lotes, consulte Inferencia por lotes usando las API de Foundation Model.

Cliente de Openai

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.

Para usar el cliente OpenAI, especifique el nombre del punto de conexión de servicio del modelo como la entrada model. El siguiente ejemplo supone que tiene un Token de API de Databricks y openai instalados en su equipo. También necesitará su instancia de área de trabajo de Databricks para conectar el cliente de OpenAI a 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.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 de REST

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 GenAI de 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.

from databricks_genai_inference import ChatCompletion

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

response = ChatCompletion.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=128)
print(f"response.message:{response.message}")

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 continuación se muestra el formato de solicitud esperado para un modelo de chat. 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:

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

Sesión de chat

El SDK de Databricks GenAI proporciona clases ChatSession para administrar conversaciones de chat de varias rondas. Proporciona las siguientes funciones:

Función Return Descripción
reply (string) Toma un mensaje de un nuevo usuario
last cadena Último mensaje del asistente
history lista de diccionarios Mensajes en el historial de chat, incluidos los roles.
count int Número de rondas de chat realizadas hasta ahora.

Para inicializar ChatSession, use el mismo conjunto de argumentos que ChatCompletion y esos argumentos se usarán en la sesión de chat.


from databricks_genai_inference import ChatSession

chat = ChatSession(model="llama-2-70b-chat", system_message="You are a helpful assistant.", max_tokens=128)
chat.reply("Knock, knock!")
chat.last # return "Hello! Who's there?"
chat.reply("Guess who!")
chat.last # return "Okay, I'll play along! Is it a person, a place, or a thing?"

chat.history
# return: [
#     {'role': 'system', 'content': 'You are a helpful assistant.'},
#     {'role': 'user', 'content': 'Knock, knock.'},
#     {'role': 'assistant', 'content': "Hello! Who's there?"},
#     {'role': 'user', 'content': 'Guess who!'},
#     {'role': 'assistant', 'content': "Okay, I'll play along! Is it a person, a place, or a thing?"}
# ]

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.

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

API de REST

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.


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 GenAI de Databricks


from databricks_genai_inference import Embedding

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

response = Embedding.create(
    model="bge-large-en",
    input="3D ActionSLAM: wearable person tracking in multi-floor environments")
print(f'embeddings: {response.embeddings}')

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. Para conocer los parámetros y la sintaxis, vea Tarea de finalización.

Cliente de 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
)

API de REST

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.


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

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

SDK GenAI de Databricks


from databricks_genai_inference import Completion

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

response = Completion.create(
    model="databricks-mpt-30b-instruct",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets.",
    max_tokens=128)
print(f"response.text:{response.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