Modelos de base de consulta
Neste artigo, você aprenderá a formatar solicitações de consulta para modelos de base e enviá-las para seu ponto de extremidade de serviço de modelo.
Para solicitações de consulta de modelos tradicionais de ML ou Python, consulte Pontos de extremidade de serviço de consulta para modelos personalizados.
O Databricks Model Serving suporta APIs de modelos de base e modelos externos para acessar modelos de base e usa uma API e SDK unificadas compatíveis com OpenAI para consultá-los. Isso torna possível experimentar e personalizar modelos básicos para produção em nuvens e provedores suportados.
- Consultar um modelo de conclusão de chat
- Consultar um modelo de incorporação
- Consultar um modelo de conclusão de texto
O Databricks Model Serving fornece as seguintes opções para enviar solicitações de pontuação para modelos de base:
Método | Detalhes |
---|---|
Cliente OpenAI | Consulte um modelo hospedado por um ponto de extremidade Databricks Model Serving usando o cliente OpenAI. Especifique o modelo que serve o nome do ponto de extremidade como a model entrada. Suportado para modelos de chat, incorporações e conclusão disponibilizados por APIs de Modelo de Base ou modelos externos. |
Servindo a interface do usuário | Selecione Consultar ponto de extremidade na página Ponto de extremidade de serviço. 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}/invocations para obter detalhes. Para marcar solicitações para pontos de extremidade que atendem a vários modelos, consulte Consultar modelos individuais atrás de um ponto de extremidade. |
SDK de implantações MLflow | Use a função predict() do MLflow Deployments SDK para consultar o modelo. |
Databricks GenAI SDK | O Databricks GenAI SDK é uma camada sobre a API REST. Ele lida com detalhes de baixo nível, como autenticação e mapeamento de IDs de modelo para URLs de ponto final, facilitando a interação com os modelos. O SDK foi projetado para ser usado de dentro de notebooks Databricks. |
Função SQL | Invoque a inferência do modelo diretamente do SQL usando a ai_query função SQL. Consulte Consultar um modelo servido com ai_query(). |
Requerimentos
- Um modelo de ponto de extremidade de serviço.
- Um espaço de trabalho Databricks em uma região suportada.
- Para enviar uma solicitação de pontuação por meio do cliente OpenAI, API REST ou SDK de implantação MLflow, você deve ter um token de API Databricks.
Importante
Como prática recomendada de segurança para cenários de produção, o Databricks recomenda que você use tokens OAuth máquina a máquina para autenticação durante a produção.
Para teste e desenvolvimento, o Databricks recomenda o uso de um token de acesso pessoal pertencente a entidades de serviço em vez de usuários 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, você deve primeiro instalar o pacote apropriado no cluster.
Cliente Openai
Para usar o cliente OpenAI, o openai
pacote precisa ser instalado em seu cluster. Execute o seguinte no seu bloco de notas ou no seu terminal local:
!pip install openai
O seguinte só é necessário ao instalar o pacote em um Notebook Databricks
dbutils.library.restartPython()
API de descanso
O acesso à API REST de serviço está disponível no Databricks Runtime for Machine Learning.
Mlflow deployments sdk
!pip install mlflow
O seguinte só é necessário ao instalar o pacote em um Notebook Databricks
dbutils.library.restartPython()
Databricks genai sdk
!pip install databricks-genai
O seguinte só é necessário ao instalar o pacote em um Notebook Databricks
dbutils.library.restartPython()
Consultar um modelo de conclusão de chat
Seguem-se exemplos para consultar um modelo de chat.
Para obter um exemplo de inferência em lote, consulte Inferência em lote usando APIs de modelo básico.
Cliente Openai
A seguir está uma solicitação de bate-papo 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.
Para usar o cliente OpenAI, especifique o modelo que serve o nome do ponto de extremidade como entrada model
. O exemplo a seguir pressupõe que você tenha um token de API Databricks instalado openai
em sua computação. Você também precisa da instância do espaço de trabalho Databricks para conectar o cliente OpenAI ao 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 descanso
Importante
O exemplo a seguir usa parâmetros de API REST para consultar pontos de extremidade de serviço que servem modelos de base. Esses parâmetros são visualização pública e a definição pode mudar. Consulte POST /serving-endpoints/{name}/invocations.
A seguir está uma solicitação de bate-papo 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 \
Mlflow deployments sdk
Importante
O exemplo a seguir usa a predict()
API do MLflow Deployments SDK.
A seguir está uma solicitação de bate-papo 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
}
)
Databricks genai sdk
A seguir está uma solicitação de bate-papo 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.
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 um ponto de extremidade de modelo básico usando LangChain, você pode fazer o seguinte:
- Importe a
Databricks
classe LLM e especifique oendpoint_name
etransform_input_fn
. - Importe a
ChatDatabricks
classe ChatModel e especifique oendpoint
arquivo .
O exemplo a seguir usa a Databricks
classe LLM em LangChain para consultar o ponto de extremidade de pagamento por token das APIs do Modelo de Base, databricks-dbrx-instruct
. As APIs do Foundation Model esperam no dicionário de messages
solicitações, enquanto o LangChain Databricks LLM por padrão fornece prompt
no dicionário de solicitações. Use a transform_input
função para preparar o dicionário de solicitações no 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 ChatDatabricks
classe 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 interna, ai_query. Esta função é Public Preview e a definição pode mudar. Consulte Consultar um modelo servido com ai_query().
A seguir está uma solicitação de bate-papo disponibilizada llama-2-70b-chat
pelo ponto de extremidade databricks-llama-2-70b-chat
de pagamento por token das APIs do Modelo de Fundação em seu espaço de trabalho.
Nota
A ai_query()
função não suporta pontos de extremidade de consulta que servem o modelo DBRX ou DBRX Instruct.
SELECT ai_query(
"databricks-llama-2-70b-chat",
"Can you explain AI in ten words?"
)
A seguir está o formato de solicitação esperado para um modelo de chat. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto final. Consulte Parâmetros de consulta adicionais.
{
"messages": [
{
"role": "user",
"content": "What is a mixture of experts model?"
}
],
"max_tokens": 100,
"temperature": 0.1
}
Segue-se um formato de resposta 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
}
Sessão de chat
O Databricks GenAI SDK fornece ChatSession
classe para gerenciar conversas de bate-papo de várias rodadas. Ele fornece as seguintes funções:
Function | Devolver | Description |
---|---|---|
reply (string) |
Leva uma nova mensagem de usuário | |
last |
string | Última mensagem do assistente |
history |
Lista de ditames | Mensagens no histórico de chat, incluindo funções. |
count |
número inteiro | Número de rondas de chat realizadas até à data. |
Para inicializar ChatSession
o , use o mesmo conjunto de argumentos que ChatCompletion
o , e esses argumentos são usados durante toda a sessão 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 um modelo de incorporação
A seguir está uma solicitação de incorporação para o bge-large-en
modelo disponibilizado pelas APIs do Foundation Model.
Cliente Openai
Para usar o cliente OpenAI, especifique o modelo que serve o nome do ponto de extremidade como entrada model
. O exemplo a seguir pressupõe que você tenha um token de API Databricks instalado openai
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 de descanso
Importante
O exemplo a seguir usa parâmetros de API REST para consultar pontos de extremidade de serviço que servem modelos de base. Esses parâmetros são visualização pública e a definição pode mudar. 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
Mlflow deployments sdk
Importante
O exemplo a seguir usa a predict()
API do MLflow Deployments SDK.
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"
}
)
Databricks genai sdk
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 um modelo de APIs do Databricks Foundation Model em LangChain como um modelo de incorporação, importe a DatabricksEmbeddings
classe e especifique o endpoint
parâmetro 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 interna, ai_query. Esta função é Public Preview e a definição pode mudar. Consulte Consultar um modelo servido com ai_query().
SELECT ai_query(
"databricks-bge-large-en",
"Can you explain AI in ten words?"
)
A seguir está o formato de solicitação esperado para um modelo de incorporação. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto final. Consulte Parâmetros de consulta adicionais.
{
"input": [
"embedding text"
]
}
O seguinte é o formato de resposta esperado:
{
"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 conclusão de texto
A seguir está uma solicitação de conclusão para o databricks-mpt-30b-instruct
modelo disponibilizado pelas APIs do Foundation Model. Para obter os parâmetros e a sintaxe, consulte Tarefa de conclusão.
Cliente Openai
Para usar o cliente OpenAI, especifique o modelo que serve o nome do ponto de extremidade como entrada model
. O exemplo a seguir pressupõe que você tenha um token de API Databricks instalado openai
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 de descanso
Importante
O exemplo a seguir usa parâmetros de API REST para consultar pontos de extremidade de serviço que servem modelos de base. Esses parâmetros são visualização pública e a definição pode mudar. 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
Mlflow deployments sdk
Importante
O exemplo a seguir usa a predict()
API do MLflow Deployments SDK.
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
}
)
Databricks genai sdk
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
O exemplo a seguir usa a função SQL interna, ai_query. Esta função é Public Preview e a definição pode mudar. Consulte Consultar um modelo servido com ai_query().
SELECT ai_query(
"databricks-mpt-30b-instruct",
"Can you explain AI in ten words?"
)
A seguir está o formato de solicitação esperado para um modelo de conclusão. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto final. 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 seguinte é o formato de resposta 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
}
}
Converse com LLMs suportados usando o AI Playground
Você pode interagir com modelos de linguagem grandes suportados usando o AI Playground. O AI Playground é um ambiente semelhante a um bate-papo onde você pode testar, solicitar e comparar LLMs do seu espaço de trabalho do Azure Databricks.
Recursos adicionais
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários