Share via


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.

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

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 het endpoint_name en transform_input_fn.
  • Importeer de ChatDatabricks ChatModel-klasse en geef de endpoint.

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 ChatCompletionen 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.

AI-speeltuin

Aanvullende bronnen