Delen via


Querygeneratieve AI-modellen

In dit artikel leert u hoe u queryaanvragen kunt opmaken voor basismodellen en externe modellen en deze naar het eindpunt van uw model kunt verzenden.

Zie Query's voor eindpunten voor aangepaste modellen voor traditionele ML- of Python-modellen.

Mozaïek AI Model Serving ondersteunt Foundation Models-API's en externe modellen voor toegang tot generatieve AI-modellen. Model Serving maakt gebruik van een geïntegreerde OpenAI-compatibele API en SDK om er query's op uit te voeren. Dit maakt het mogelijk om te experimenteren met en het aanpassen van generatieve AI-modellen voor productie in ondersteunde clouds en providers.

Mozaïek AI Model Serving biedt de volgende opties voor het verzenden van scoreaanvragen naar eindpunten die basismodellen of externe modellen dienen:

Methode DETAILS
OpenAI-client Een query uitvoeren op een model dat wordt gehost door een Mozaïek AI 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 Python SDK Databricks Python SDK is een laag boven op de REST API. Het verwerkt details op laag niveau, zoals verificatie, waardoor het eenvoudiger is om met de modellen te communiceren.
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 databricks-sdk[openai] pakket op uw cluster worden geïnstalleerd. Databricks SDK biedt een wrapper voor het maken van de OpenAI-client met autorisatie die automatisch is geconfigureerd om query's uit te voeren op generatieve AI-modellen. Voer het volgende uit in uw notebook of uw lokale terminal:

!pip install databricks-sdk[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 Python SDK

De Databricks SDK voor Python is al geïnstalleerd op alle Azure Databricks-clusters die Databricks Runtime 13.3 LTS of hoger gebruiken. Voor Azure Databricks-clusters die Databricks Runtime 12.2 LTS en hieronder gebruiken, moet u eerst de Databricks SDK voor Python installeren. Zie Databricks SDK voor Python.

Een query uitvoeren op een voltooiingsmodel voor chats

Hier volgen voorbeelden voor het uitvoeren van query's op een chatmodel. Het voorbeeld is van toepassing op het uitvoeren van query's op een chatmodel dat beschikbaar is gemaakt met behulp van een van de mogelijkheden voor modelverdiening: Foundation Model-API's of externe modellen.

Zie Voor een voorbeeld van batchdeductie Batch-deductie met behulp van Foundation Model-API's ingerichte doorvoer.

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 .


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_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
)

Als u query's wilt uitvoeren op basismodellen buiten uw werkruimte, moet u de OpenAI-client rechtstreeks gebruiken. U hebt ook uw Databricks-werkruimte-exemplaar nodig om de OpenAI-client te verbinden met Databricks. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks-API-token hebt en openai op uw rekenproces 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.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 Python 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.

Deze code moet worden uitgevoerd in een notebook in uw werkruimte. Zie De Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook.

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

Als u een basismodeleindpunt wilt opvragen met behulp van LangChain, kunt u de klasse ChatDatabricks ChatModel gebruiken en de endpoint.

In het volgende voorbeeld wordt de ChatDatabricks klasse ChatModel in LangChain gebruikt om een query uit te voeren op het eindpunt van het Foundation-modelmodel met betalen per token. databricks-dbrx-instruct

%pip install langchain-databricks
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_databricks import ChatDatabricks

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]

llm = ChatDatabricks(endpoint_name="databricks-dbrx-instruct")
llm.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 meta-llama-3-1-70b-instruct het beschikbaar maken van de Foundation Model-API's voor betalen per token databricks-meta-llama-3-1-70b-instruct , 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-meta-llama-3-1-70b-instruct",
    "Can you explain AI in ten words?"
  )

Als voorbeeld is het volgende de verwachte aanvraagindeling voor een chatmodel wanneer u de REST API gebruikt. 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 voor een aanvraag die is gedaan met behulp van de REST API:

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

Een query uitvoeren op een insluitmodel

Hier volgt een insluitingsaanvraag voor het gte-large-en model dat beschikbaar is gemaakt door Foundation Model-API's. Het voorbeeld is van toepassing op het uitvoeren van query's op een insluitmodel dat beschikbaar is gemaakt met behulp van een van de mogelijkheden voor modelverdiening: Foundation Model-API's of externe modellen.

OpenAI-client

Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer model .


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

Als u een query wilt uitvoeren op basismodellen buiten uw werkruimte, moet u de OpenAI-client rechtstreeks gebruiken, zoals hieronder wordt weergegeven. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks API-token hebt en openai hebt geïnstalleerd op uw rekenproces. 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.embeddings.create(
  model="databricks-gte-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 of externe modellen 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-gte-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-gte-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

Databricks Python SDK


from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

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:

%pip install langchain-databricks
from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-gte-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-gte-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
  }
}

Controleren of insluitingen zijn genormaliseerd

Gebruik het volgende om te controleren of de insluitingen die door uw model worden gegenereerd, zijn genormaliseerd.


  import numpy as np

  def is_normalized(vector: list[float], tol=1e-3) -> bool:
      magnitude = np.linalg.norm(vector)
      return abs(magnitude - 1) < tol

Een query uitvoeren op een model voor tekstvoltooiing

OpenAI-client

Belangrijk

Het uitvoeren van query's voor tekstvoltooiingsmodellen die beschikbaar worden gesteld met behulp van foundationmodel-API's betalen per token met behulp van de OpenAI-client, wordt niet ondersteund. Alleen query's uitvoeren op externe modellen met behulp van de OpenAI-client, zoals wordt weergegeven in deze sectie.

Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer model . In het volgende voorbeeld wordt een query uitgevoerd op het claude-2 voltooiingsmodel dat wordt gehost door Antropic met behulp van de OpenAI-client. Als u de OpenAI-client wilt gebruiken, vult u het model veld in met de naam van het model dat als host fungeert voor het model dat u wilt opvragen.

In dit voorbeeld wordt een eerder gemaakt eindpunt gebruikt, anthropic-completions-endpointgeconfigureerd voor toegang tot externe modellen van de provider van het Antropische model. Zie hoe u externe modeleindpunten maakt.

Zie Ondersteunde modellen voor aanvullende modellen die u kunt opvragen en hun providers.


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

completion = openai_client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)

REST-API

Hier volgt een voltooiingsaanvraag voor het uitvoeren van query's op een voltooiingsmodel dat beschikbaar is gemaakt met behulp van externe modellen.

Belangrijk

In het volgende voorbeeld worden REST API-parameters gebruikt voor het uitvoeren van query's op eindpunten die externe modellen leveren. 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/<completions-model-endpoint>/invocations

MLflow Deployments SDK

Hier volgt een voltooiingsaanvraag voor het uitvoeren van query's op een voltooiingsmodel dat beschikbaar is gemaakt met behulp van externe modellen.

Belangrijk

In het volgende voorbeeld wordt de predict() API van de MLflow Deployments SDK gebruikt.


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="<completions-model-endpoint>",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)

# Print the response
print(completions_response)

Databricks Python SDK

Hier volgt een voltooiingsaanvraag voor het uitvoeren van query's op een voltooiingsmodel dat beschikbaar is gemaakt met behulp van externe modellen.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="<completions-model-endpoint>",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets."
)
print(response.choices[0].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(
    "<completions-model-endpoint>",
    "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