Basismodellen opvragen
In dit artikel leert u hoe u queryaanvragen voor basismodellen opmaken en verzendt naar uw model voor eindpunt.
Zie Query's voor eindpunten voor aangepaste modellen voor traditionele ML- of Python-modellen.
Databricks Model Serving ondersteunt Foundation Models-API's en externe modellen voor toegang tot basismodellen en maakt gebruik van een geïntegreerde OpenAI-compatibele API en SDK voor het uitvoeren van query's. Hierdoor kunt u experimenteren met en basismodellen aanpassen voor productie in ondersteunde clouds en providers.
- Een query uitvoeren op een voltooiingsmodel voor chats
- Een query uitvoeren op een insluitmodel
- Een query uitvoeren op een model voor tekstvoltooiing
Databricks Model Serving biedt de volgende opties voor het verzenden van scoreaanvragen naar basismodellen:
Methode | DETAILS |
---|---|
OpenAI-client | Een query uitvoeren op een model dat wordt gehost door een Databricks Model Serving-eindpunt met behulp van de OpenAI-client. Geef de eindpuntnaam van het model op als invoer model . Ondersteund voor chat-, insluitings- en voltooiingsmodellen die beschikbaar worden gesteld door Foundation Model-API's of externe modellen. |
Gebruikersinterface bedienen | Selecteer Een query-eindpunt op de pagina Servereindpunt. Voeg invoergegevens voor het JSON-model in en klik op Aanvraag verzenden. Als het model een ingevoerde voorbeeld heeft geregistreerd, gebruikt u Voorbeeld weergeven om het te laden. |
REST-API | Het model aanroepen en er query's op uitvoeren met behulp van de REST API. Zie POST /serving-endpoints/{name}/aanroepen voor meer informatie. Zie Afzonderlijke modellen achter een eindpunt opvragen voor scoreaanvragen voor eindpunten die meerdere modellen bedienen. |
MLflow Deployments SDK | Gebruik de predict()-functie van de MLflow Deployments SDK om een query uit te voeren op het model. |
Databricks GenAI SDK | Databricks GenAI SDK is een laag boven op de REST API. Het verwerkt details op laag niveau, zoals verificatie en toewijzingsmodel-id's aan eindpunt-URL's, waardoor het eenvoudiger is om met de modellen te communiceren. De SDK is ontworpen voor gebruik vanuit Databricks-notebooks. |
SQL-functie | Roep modeldeductie rechtstreeks vanuit SQL aan met behulp van de ai_query SQL-functie. Zie Query uitvoeren op een geleverd model met ai_query(). |
Eisen
- Een model dat eindpunt bedient.
- Een Databricks-werkruimte in een ondersteunde regio.
- Als u een scoreaanvraag wilt verzenden via de OpenAI-client, REST API of MLflow Deployment SDK, moet u een Databricks API-token hebben.
Belangrijk
Als best practice voor beveiliging voor productiescenario's raadt Databricks u aan om OAuth-tokens voor machine-naar-machine te gebruiken voor verificatie tijdens de productie.
Voor testen en ontwikkelen raadt Databricks aan om een persoonlijk toegangstoken te gebruiken dat hoort bij service-principals in plaats van werkruimtegebruikers. Zie Tokens voor een service-principal beheren om tokens voor service-principals te maken.
Pakketten installeren
Nadat u een querymethode hebt geselecteerd, moet u eerst het juiste pakket installeren in uw cluster.
Openai-client
Als u de OpenAI-client wilt gebruiken, moet het openai
pakket op uw cluster worden geïnstalleerd. Voer het volgende uit in uw notebook of uw lokale terminal:
!pip install openai
Het volgende is alleen vereist bij het installeren van het pakket op een Databricks Notebook
dbutils.library.restartPython()
Rest API
Toegang tot de REST API van Serving is beschikbaar in Databricks Runtime voor Machine Learning.
Mlflow deployments SDK
!pip install mlflow
Het volgende is alleen vereist bij het installeren van het pakket op een Databricks Notebook
dbutils.library.restartPython()
Databricks genai sdk
!pip install databricks-genai
Het volgende is alleen vereist bij het installeren van het pakket op een Databricks Notebook
dbutils.library.restartPython()
Een query uitvoeren op een voltooiingsmodel voor chats
Hier volgen voorbeelden voor het uitvoeren van query's op een chatmodel.
Zie Batch-deductie met behulp van Foundation Model-API's voor een voorbeeld van batchdeductie.
Openai-client
Hier volgt een chataanvraag voor het DBRX Instruct-model dat beschikbaar wordt gesteld door het Foundation Model-API's pay-per-token-eindpunt databricks-dbrx-instruct
in uw werkruimte.
Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer model
. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks-API-token hebt en openai
op uw rekenproces hebt geïnstalleerd. U hebt ook uw Databricks-werkruimte-exemplaar nodig om de OpenAI-client te verbinden met 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
)
Rest API
Belangrijk
In het volgende voorbeeld worden REST API-parameters gebruikt voor het uitvoeren van query's op eindpunten die basismodellen dienen. Deze parameters zijn openbare preview en de definitie kan veranderen. Zie POST /serving-endpoints/{name}/aanroepen.
Hier volgt een chataanvraag voor het DBRX Instruct-model dat beschikbaar wordt gesteld door het Foundation Model-API's pay-per-token-eindpunt databricks-dbrx-instruct
in uw werkruimte.
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
Belangrijk
In het volgende voorbeeld wordt de predict()
API van de MLflow Deployments SDK gebruikt.
Hier volgt een chataanvraag voor het DBRX Instruct-model dat beschikbaar wordt gesteld door het Foundation Model-API's pay-per-token-eindpunt databricks-dbrx-instruct
in uw werkruimte.
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
Hier volgt een chataanvraag voor het DBRX Instruct-model dat beschikbaar wordt gesteld door het Foundation Model-API's pay-per-token-eindpunt databricks-dbrx-instruct
in uw werkruimte.
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
Als u een query wilt uitvoeren op een basismodeleindpunt met behulp van LangChain, kunt u een van de volgende handelingen uitvoeren:
- Importeer de
Databricks
LLM-klasse en geef hetendpoint_name
entransform_input_fn
. - Importeer de
ChatDatabricks
ChatModel-klasse en geef deendpoint
.
In het volgende voorbeeld wordt de Databricks
LLM-klasse in LangChain gebruikt om een query uit te voeren op de Foundation Model-API's voor betalen per token, databricks-dbrx-instruct
. Foundation Model-API's worden verwacht messages
in de aanvraagwoordenlijst, terwijl LangChain Databricks LLM standaard in de aanvraagwoordenlijst staat prompt
. Gebruik de transform_input
functie om de aanvraagwoordenlijst voor te bereiden in de verwachte indeling.
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?")
In het volgende voorbeeld wordt de ChatDatabricks
klasse ChatModel gebruikt en wordt de 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
Belangrijk
In het volgende voorbeeld wordt de ingebouwde SQL-functie ai_query gebruikt. Deze functie is openbare preview en de definitie kan veranderen. Zie Query uitvoeren op een geleverd model met ai_query().
Hier volgt een chataanvraag voor llama-2-70b-chat
het beschikbaar maken van de Foundation Model-API's voor betalen per token databricks-llama-2-70b-chat
, in uw werkruimte.
Notitie
De ai_query()
functie biedt geen ondersteuning voor query-eindpunten die de DBRX of het DBRX Instruct-model dienen.
SELECT ai_query(
"databricks-llama-2-70b-chat",
"Can you explain AI in ten words?"
)
Hier volgt de verwachte aanvraagindeling voor een chatmodel. Voor externe modellen kunt u aanvullende parameters opnemen die geldig zijn voor een bepaalde provider en eindpuntconfiguratie. Zie Aanvullende queryparameters.
{
"messages": [
{
"role": "user",
"content": "What is a mixture of experts model?"
}
],
"max_tokens": 100,
"temperature": 0.1
}
Hier volgt een verwachte antwoordindeling:
{
"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
}
Chatsessie
Databricks GenAI SDK biedt ChatSession
klasse voor het beheren van multi-round chatgesprekken. Het biedt de volgende functies:
Functie | Retourneren | Beschrijving |
---|---|---|
reply (string) |
Neemt een nieuw gebruikersbericht | |
last |
tekenreeks | Laatste bericht van assistent |
history |
lijst met dicteren | Berichten in de chatgeschiedenis, inclusief rollen. |
count |
int | Het aantal chatrondes dat tot nu toe is uitgevoerd. |
Als u wilt initialiseren ChatSession
, gebruikt u dezelfde set argumenten als ChatCompletion
en worden deze argumenten gebruikt tijdens de chatsessie.
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?"}
# ]
Een query uitvoeren op een insluitmodel
Hier volgt een insluitingsaanvraag voor het bge-large-en
model dat beschikbaar is gemaakt door Foundation Model-API's.
Openai-client
Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer model
. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks API-token hebt en openai
op uw cluster hebt geïnstalleerd.
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
Belangrijk
In het volgende voorbeeld worden REST API-parameters gebruikt voor het uitvoeren van query's op eindpunten die basismodellen dienen. Deze parameters zijn openbare preview en de definitie kan veranderen. Zie POST /serving-endpoints/{name}/aanroepen.
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
Belangrijk
In het volgende voorbeeld wordt de predict()
API van de MLflow Deployments SDK gebruikt.
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
Als u een Databricks Foundation Model-API-model in LangChain wilt gebruiken als een insluitmodel, importeert u de DatabricksEmbeddings
klasse en geeft u de endpoint
parameter als volgt op:
from langchain.embeddings import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
embeddings.embed_query("Can you explain AI in ten words?")
SQL
Belangrijk
In het volgende voorbeeld wordt de ingebouwde SQL-functie ai_query gebruikt. Deze functie is openbare preview en de definitie kan veranderen. Zie Query uitvoeren op een geleverd model met ai_query().
SELECT ai_query(
"databricks-bge-large-en",
"Can you explain AI in ten words?"
)
Hier volgt de verwachte aanvraagindeling voor een insluitingsmodel. Voor externe modellen kunt u aanvullende parameters opnemen die geldig zijn voor een bepaalde provider en eindpuntconfiguratie. Zie Aanvullende queryparameters.
{
"input": [
"embedding text"
]
}
Hier volgt de verwachte antwoordindeling:
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": []
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
Een query uitvoeren op een model voor tekstvoltooiing
Hier volgt een voltooiingsaanvraag voor het databricks-mpt-30b-instruct
model dat beschikbaar wordt gesteld door Foundation Model-API's. Zie Voltooiingstaak voor de parameters en syntaxis.
Openai-client
Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer model
. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks API-token hebt en openai
op uw cluster hebt geïnstalleerd.
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
Belangrijk
In het volgende voorbeeld worden REST API-parameters gebruikt voor het uitvoeren van query's op eindpunten die basismodellen dienen. Deze parameters zijn openbare preview en de definitie kan veranderen. Zie POST /serving-endpoints/{name}/aanroepen.
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
Belangrijk
In het volgende voorbeeld wordt de predict()
API van de MLflow Deployments SDK gebruikt.
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
Belangrijk
In het volgende voorbeeld wordt de ingebouwde SQL-functie ai_query gebruikt. Deze functie is openbare preview en de definitie kan veranderen. Zie Query uitvoeren op een geleverd model met ai_query().
SELECT ai_query(
"databricks-mpt-30b-instruct",
"Can you explain AI in ten words?"
)
Hier volgt de verwachte aanvraagindeling voor een voltooiingsmodel. Voor externe modellen kunt u aanvullende parameters opnemen die geldig zijn voor een bepaalde provider en eindpuntconfiguratie. Zie Aanvullende queryparameters.
{
"prompt": "What is mlflow?",
"max_tokens": 100,
"temperature": 0.1,
"stop": [
"Human:"
],
"n": 1,
"stream": false,
"extra_params":{
"top_p": 0.9
}
}
Hier volgt de verwachte antwoordindeling:
{
"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
}
}
Chatten met ondersteunde LLM's met AI Playground
U kunt communiceren met ondersteunde modellen in grote talen met behulp van de AI Playground. De AI Playground is een chatomgeving waarin u LLM's kunt testen, vragen en vergelijken vanuit uw Azure Databricks-werkruimte.
Aanvullende bronnen
- Deductietabellen voor bewakings- en foutopsporingsmodellen
- [_] (/machine-learning/foundation-models/fmapi-batch-inference.md)
- Databricks Foundation-model-API's
- Externe modellen in Databricks Model Serving
- Ondersteunde modellen voor betalen per token
- Naslaginformatie over REST API voor Foundation-model
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor