Sdílet prostřednictvím


Dotazování základních modelů a externích modelů

V tomto článku se dozvíte, jak formátovat požadavky na dotazy na základní modely a externí modely a odesílat je do koncového bodu obsluhy modelu.

Požadavky na dotazy tradičních modelů ML nebo Pythonu najdete v tématu Dotaz obsluhující koncové body pro vlastní modely.

Rozhraní API pro vytváření modelů systému Mosaic AI podporuje rozhraní API základních modelů a externí modely pro přístup k generačním modelům AI. Obsluha modelů používá k dotazování sjednocené rozhraní API kompatibilní s OpenAI a sadou SDK. Díky tomu můžete experimentovat s generujícími modely AI a přizpůsobit je pro produkční prostředí napříč podporovanými cloudy a poskytovateli.

Služba rozhraní AI Model Serving poskytuje následující možnosti pro odesílání žádostí o bodování do koncových bodů, které obsluhují základní modely nebo externí modely:

Metoda Podrobnosti
Klient OpenAI Dotazování na model hostovaný koncovým bodem obsluhy modelu Mosaic AI pomocí klienta OpenAI Zadejte model obsluhující název koncového model bodu jako vstup. Podporované modely chatu, vkládání a dokončování, které jsou dostupné rozhraními API modelu Foundation nebo externími modely.
Obsluha uživatelského rozhraní Na stránce Obsluha koncového bodu vyberte koncový bod dotazu. Vložte vstupní data modelu formátu JSON a klikněte na Odeslat požadavek. Pokud má model zaprotokolovaný vstupní příklad, načtěte ho pomocí příkazu Zobrazit příklad .
REST API Volání a dotazování modelu pomocí rozhraní REST API Podrobnosti najdete v tématu POST /serving-endpoints/{name}/invocations . Žádosti o bodování na koncové body obsluhující více modelů najdete v tématu Dotazování jednotlivých modelů za koncovým bodem.
Sada SDK pro nasazení MLflow K dotazování modelu použijte funkci predict() sady SDK pro nasazení MLflow.
Databricks Python SDK Sada Databricks Python SDK je vrstva nad rozhraním REST API. Zpracovává podrobnosti nízké úrovně, jako je ověřování, což usnadňuje interakci s modely.
Funkce SQL Vyvolání odvozování modelu přímo z SQL pomocí ai_query funkce SQL Viz Dotaz na model obsluhované pomocí ai_query().

Požadavky

Důležité

Jako osvědčený postup zabezpečení pro produkční scénáře doporučuje Databricks používat tokeny OAuth počítače pro ověřování během produkčního prostředí.

Pro účely testování a vývoje doporučuje Databricks místo uživatelů pracovního prostoru používat osobní přístupový token patřící instančním objektům . Pokud chcete vytvořit tokeny pro instanční objekty, přečtěte si téma Správa tokenů instančního objektu.

Instalace balíčků

Po výběru metody dotazování musíte nejprve nainstalovat příslušný balíček do clusteru.

Klient OpenAI

Pokud chcete použít klienta OpenAI, musí být balíček openai nainstalovaný ve vašem clusteru. V poznámkovém bloku nebo místním terminálu spusťte následující příkaz:

!pip install openai

Následující informace se vyžadují jenom při instalaci balíčku do poznámkového bloku Databricks.

dbutils.library.restartPython()

REST API

Přístup k rozhraní REST API pro obsluhu je k dispozici v Prostředí Databricks Runtime pro Machine Learning.

Sada SDK pro nasazení MLflow

!pip install mlflow

Následující informace se vyžadují jenom při instalaci balíčku do poznámkového bloku Databricks.

dbutils.library.restartPython()

Databricks Python SDK

Sada Databricks SDK pro Python je už nainstalovaná na všech clusterech Azure Databricks, které používají Databricks Runtime 13.3 LTS nebo vyšší. V případě clusterů Azure Databricks, které používají Databricks Runtime 12.2 LTS a níže, musíte nejprve nainstalovat sadu Databricks SDK pro Python. Viz krok 1: Instalace nebo upgrade sady Databricks SDK pro Python.

Dotazování modelu dokončování chatu

Tady jsou příklady pro dotazování modelu chatu. Příklad se vztahuje na dotazování chatovacího modelu, který je k dispozici pomocí některé z možností obsluhy modelů: rozhraní API základního modelu nebo externích modelů.

Příklad dávkového odvozování najdete v tématu Dávkové odvozování pomocí zřízené propustnosti rozhraní API základního modelu.

Klient OpenAI

Následuje žádost o chat pro model DBRX Instruct, který zpřístupnil koncový bod databricks-dbrx-instruct rozhraní API základního modelu s průběžnými platbami za token ve vašem pracovním prostoru.

Pokud chcete použít klienta OpenAI, zadejte jako vstup model obsluhující název koncového model bodu. Následující příklad předpokládá, že máte token rozhraní API Databricks a openai na výpočetní prostředky nainstalovaný. K připojení klienta OpenAI k Databricks k Databricks potřebujete také instanci pracovního prostoru 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

Důležité

Následující příklad používá parametry rozhraní REST API k dotazování obsluhujících koncové body, které obsluhují základní modely. Tyto parametry jsou ve verzi Public Preview a definice se může změnit. Viz POST /serving-endpoints/{name}/invocations.

Následuje žádost o chat pro model DBRX Instruct, který zpřístupnil koncový bod databricks-dbrx-instruct rozhraní API základního modelu s průběžnými platbami za token ve vašem pracovním prostoru.

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 \

Sada SDK pro nasazení MLflow

Důležité

Následující příklad používá predict() rozhraní API ze sady SDK pro nasazení MLflow.

Následuje žádost o chat pro model DBRX Instruct, který zpřístupnil koncový bod databricks-dbrx-instruct rozhraní API základního modelu s průběžnými platbami za token ve vašem pracovním prostoru.


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

Následuje žádost o chat pro model DBRX Instruct, který zpřístupnil koncový bod databricks-dbrx-instruct rozhraní API základního modelu s průběžnými platbami za token ve vašem pracovním prostoru.

Tento kód musí být spuštěný v poznámkovém bloku ve vašem pracovním prostoru. Viz Použití sady Databricks SDK pro Python z poznámkového bloku Azure Databricks.

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

K dotazování základního koncového bodu modelu pomocí JazykChain můžete použít ChatDatabricks ChatModel třídy a zadat endpoint.

Následující příklad používá ChatDatabricks ChatModel třídy LangChain k dotazování rozhraní API modelu foundation model pay-per-token koncový bod, 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

Důležité

Následující příklad používá integrovanou funkci SQL ai_query. Tato funkce je ve verzi Public Preview a definice se může změnit. Viz Dotaz na model obsluhované pomocí ai_query().

Následuje žádost o chat, llama-2-70b-chat kterou zpřístupnil koncový bod databricks-llama-2-70b-chat rozhraní API základního modelu s průběžnými platbami za token ve vašem pracovním prostoru.

Poznámka:

Funkce ai_query() nepodporuje koncové body dotazů, které obsluhují dbRX nebo model DBRX Instruct.

SELECT ai_query(
    "databricks-llama-2-70b-chat",
    "Can you explain AI in ten words?"
  )

Například následující formát požadavku pro model chatu při použití rozhraní REST API je očekávaný formát požadavku. U externích modelů můžete zahrnout další parametry platné pro daného poskytovatele a konfiguraci koncového bodu. Viz Další parametry dotazu.

{
  "messages": [
    {
      "role": "user",
      "content": "What is a mixture of experts model?"
    }
  ],
  "max_tokens": 100,
  "temperature": 0.1
}

Následuje očekávaný formát odpovědi pro požadavek vytvořený pomocí rozhraní 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
}

Dotazování modelu vkládání

Následuje žádost o vložení modelu bge-large-en zpřístupněného rozhraními API základního modelu. Příklad se vztahuje na dotazování modelu vkládání, který byl zpřístupněn pomocí některého z funkcí obsluhy modelů: rozhraní API základního modelu nebo externích modelů.

Klient OpenAI

Pokud chcete použít klienta OpenAI, zadejte jako vstup model obsluhující název koncového model bodu. Následující příklad předpokládá, že máte v clusteru nainstalovaný token openai rozhraní API 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-bge-large-en",
  input="what is databricks"
)

REST API

Důležité

Následující příklad používá parametry rozhraní REST API k dotazování obsluhujících koncové body, které obsluhují základní modely nebo externí modely. Tyto parametry jsou ve verzi Public Preview a definice se může změnit. Viz 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

Sada SDK pro nasazení MLflow

Důležité

Následující příklad používá predict() rozhraní API ze sady SDK pro nasazení 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"
    }
)

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-bge-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

Pokud chcete jako vložený model použít model Rozhraní API modelu Modelu Foundation Databricks v JazyceChain , naimportujte DatabricksEmbeddings třídu a zadejte endpoint parametr následujícím způsobem:

%pip install langchain-databricks
from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

SQL

Důležité

Následující příklad používá integrovanou funkci SQL ai_query. Tato funkce je ve verzi Public Preview a definice se může změnit. Viz Dotaz na model obsluhované pomocí ai_query().


SELECT ai_query(
    "databricks-bge-large-en",
    "Can you explain AI in ten words?"
  )

Následuje očekávaný formát požadavku pro model vkládání. U externích modelů můžete zahrnout další parametry platné pro daného poskytovatele a konfiguraci koncového bodu. Viz Další parametry dotazu.


{
  "input": [
    "embedding text"
  ]
}

Následuje očekávaný formát odpovědi:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Dotazování modelu dokončování textu

Následuje žádost o databricks-mixtral-8x7b-instruct dokončení modelu zpřístupněného rozhraními API základního modelu. Příklad se vztahuje na dotazování chatovacího modelu, který je k dispozici pomocí některé z možností obsluhy modelů: rozhraní API základního modelu nebo externích modelů. Parametry a syntaxe najdete v části Úloha dokončení.

Klient OpenAI

Pokud chcete použít klienta OpenAI, zadejte jako vstup model obsluhující název koncového model bodu. Následující příklad předpokládá, že máte v clusteru nainstalovaný token openai rozhraní API 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"
)

completion = client.completions.create(
  model="databricks-mixtral-8x7b-instruct",
  prompt="what is databricks",
  temperature=1.0
)

REST API

Důležité

Následující příklad používá parametry rozhraní REST API k dotazování obsluhujících koncové body, které obsluhují základní modely nebo externí modely. Tyto parametry jsou ve verzi Public Preview a definice se může změnit. Viz 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-mixtral-8x7b-instruct/invocations

Sada SDK pro nasazení MLflow

Důležité

Následující příklad používá predict() rozhraní API ze sady SDK pro nasazení MLflow.


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="databricks-mixtral-8x7b-instruct",
    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

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

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-mixtral-8x7b-instruct",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets."
)
print(response.choices[0].text)

SQL

Důležité

Následující příklad používá integrovanou funkci SQL ai_query. Tato funkce je ve verzi Public Preview a definice se může změnit. Viz Dotaz na model obsluhované pomocí ai_query().

SELECT ai_query(
    "databricks-mpt-30b-instruct",
    "Can you explain AI in ten words?"
  )

Následuje očekávaný formát požadavku pro model dokončení. U externích modelů můžete zahrnout další parametry platné pro daného poskytovatele a konfiguraci koncového bodu. Viz Další parametry dotazu.

{
  "prompt": "What is mlflow?",
  "max_tokens": 100,
  "temperature": 0.1,
  "stop": [
    "Human:"
  ],
  "n": 1,
  "stream": false,
  "extra_params":{
    "top_p": 0.9
  }
}

Následuje očekávaný formát odpovědi:

{
  "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 s podporovanými LLM pomocí AI Playground

S podporovanými velkými jazykovými modely můžete pracovat pomocí AI Playgroundu. AI Playground je prostředí podobné chatu, ve kterém můžete testovat, zobrazovat výzvy a porovnávat LLM z pracovního prostoru Azure Databricks.

AI dětské hřiště

Další materiály