Generatív AI-modellek lekérdezése
Ebből a cikkből megtudhatja, hogyan formázhatja az alapmodellekhez és külső modellekhez tartozó lekérdezési kérelmeket, és hogyan küldheti el őket a modell végpontját kiszolgáló modellnek.
A hagyományos ML- vagy Python-modellek lekérdezési kéréseivel kapcsolatban lásd az egyéni modellek végpontjait kiszolgáló lekérdezést.
A Mozaik AI-modellkiszolgáló támogatja az alapmodellek API-kat és külső modelleket a generatív AI-modellek eléréséhez. A Modellkiszolgáló egységes OpenAI-kompatibilis API-t és SDK-t használ a lekérdezéshez. Ez lehetővé teszi a generatív AI-modellek kipróbálását és testreszabását az éles környezethez a támogatott felhők és szolgáltatók között.
A Mozaik AI-modellkiszolgálás a következő lehetőségeket kínálja a pontozási kérések alapmodelleket vagy külső modelleket kiszolgáló végpontokra való küldéséhez:
Metódus | Részletek |
---|---|
OpenAI-ügyfél | Egy Mozaik AI-modellszolgáltatás végpontja által üzemeltetett modell lekérdezése az OpenAI-ügyfél használatával. Adja meg bemenetként model a végpontnevet kiszolgáló modellt. Támogatja az Alapmodell API-k vagy külső modellek által elérhetővé tett csevegési, beágyazási és befejezési modelleket. |
Felhasználói felület kiszolgálása | Válassza a Lekérdezési végpont lehetőséget a Kiszolgáló végpont lapján. JSON formátummodell bemeneti adatainak beszúrása, majd a Kérés küldése gombra kattintva. Ha a modellhez egy bemeneti példa van naplózva, a Példa megjelenítése parancsot használva töltse be. |
REST API | A modell meghívása és lekérdezése a REST API használatával. Részletekért lásd: POST /serving-endpoints/{name}/invocations . A több modellt kiszolgáló végpontokra irányuló pontozási kérelmekről a végpont mögötti egyes modellek lekérdezése című témakörben olvashat. |
MLflow Deployments SDK | A modell lekérdezéséhez használja az MLflow Deployments SDK predict() függvényét. |
Databricks Python SDK | A Databricks Python SDK egy réteg a REST API tetején. Kezeli az alacsony szintű részleteket, például a hitelesítést, így könnyebben kezelhetők a modellek. |
SQL-függvény | Modellkövetkeztetés meghívása közvetlenül az SQL-ből az ai_query SQL-függvény használatával. Lásd: Kiszolgált modell lekérdezése ai_query()-val. |
Követelmények
- Végpontot kiszolgáló modell.
- Databricks-munkaterület egy támogatott régióban.
- Ha pontozási kérelmet szeretne küldeni az OpenAI-ügyfélen, a REST API-on vagy az MLflow Deployment SDK-on keresztül, rendelkeznie kell egy Databricks API-jogkivonattal.
Fontos
A Databricks ajánlott biztonsági gyakorlatként az éles környezetekben a gépről gépre történő OAuth-jogkivonatok használatát javasolja a hitelesítéshez az éles környezetben.
Teszteléshez és fejlesztéshez a Databricks a munkaterület felhasználói helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonat használatát javasolja. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.
Csomagok telepítése
Miután kiválasztott egy lekérdezési módszert, először telepítenie kell a megfelelő csomagot a fürtre.
OpenAI-ügyfél
Az OpenAI-ügyfél használatához a databricks-sdk[openai]
csomagot telepíteni kell a fürtre. A Databricks SDK burkolót biztosít az OpenAI-ügyfél létrehozásához, amely automatikusan konfigurálva van a generatív AI-modellek lekérdezésére. Futtassa a következőket a jegyzetfüzetben vagy a helyi terminálban:
!pip install databricks-sdk[openai]
A következőre csak akkor van szükség, ha a csomagot Databricks-jegyzetfüzetbe telepíti
dbutils.library.restartPython()
REST API
A Kiszolgáló REST API-hoz való hozzáférés a Databricks Runtime for Machine Learningben érhető el.
MLflow Deployments SDK
!pip install mlflow
A következőre csak akkor van szükség, ha a csomagot Databricks-jegyzetfüzetbe telepíti
dbutils.library.restartPython()
Databricks Python SDK
A Pythonhoz készült Databricks SDK már telepítve van az összes Olyan Azure Databricks-fürtön, amely a Databricks Runtime 13.3 LTS-t vagy újabb verziót használja. A Databricks Runtime 12.2 LTS-t használó Azure Databricks-fürtök esetében először telepítenie kell a Pythonhoz készült Databricks SDK-t. Lásd: Databricks SDK for Python.
Csevegés-befejezési modell lekérdezése
Az alábbiakban példákat láthat egy csevegési modell lekérdezésére. A példa egy olyan csevegőmodell lekérdezésére vonatkozik, amely a Model Service egyik funkciójának használatával érhető el: Alapmodell API-k vagy külső modellek.
A kötegkövetkeztetési példa a Batch következtetését az Foundation Model API-k által kiosztott átviteli sebesség használatával ismerteti.
OpenAI-ügyfél
Az alábbiakban egy csevegési kérést küldünk a DBRX instruktúramodellhez, databricks-dbrx-instruct
amelyet az Alapmodell API-k jogkivonatonkénti fizetéses végpontja tett elérhetővé a munkaterületen.
Az OpenAI-ügyfél használatához adja meg bemenetként model
a végpont nevét kiszolgáló modellt.
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
)
A munkaterületen kívüli alapmodellek lekérdezéséhez közvetlenül az OpenAI-ügyfelet kell használnia. Az OpenAI-ügyfelet a Databrickshez való csatlakoztatásához a Databricks-munkaterületpéldányra is szüksége van. Az alábbi példa feltételezi, hogy rendelkezik Egy Databricks API-jogkivonattal, és openai
telepítve van a számításra.
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
Fontos
Az alábbi példa REST API-paramétereket használ az alapmodelleket kiszolgáló végpontok lekérdezéséhez. Ezek a paraméterek nyilvános előzetes verziójúak, és a definíció változhat. Lásd: POST /serving-endpoints/{name}/invocations.
Az alábbiakban egy csevegési kérést küldünk a DBRX instruktúramodellhez, databricks-dbrx-instruct
amelyet az Alapmodell API-k jogkivonatonkénti fizetéses végpontja tett elérhetővé a munkaterületen.
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
Fontos
Az alábbi példa az predict()
MLflow Deployments SDK API-t használja.
Az alábbiakban egy csevegési kérést küldünk a DBRX instruktúramodellhez, databricks-dbrx-instruct
amelyet az Alapmodell API-k jogkivonatonkénti fizetéses végpontja tett elérhetővé a munkaterületen.
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
Az alábbiakban egy csevegési kérést küldünk a DBRX instruktúramodellhez, databricks-dbrx-instruct
amelyet az Alapmodell API-k jogkivonatonkénti fizetéses végpontja tett elérhetővé a munkaterületen.
Ezt a kódot a munkaterületen lévő jegyzetfüzetben kell futtatni. Lásd: A Pythonhoz készült Databricks SDK használata egy Azure Databricks-jegyzetfüzetből.
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
Alapmodell végpontjának a LangChain használatával történő lekérdezéséhez használhatja a ChatDatabricks ChatModel osztályt, és megadhatja a endpoint
.
Az alábbi példa a ChatDatabricks
LangChain ChatModel osztályát használja az Foundation Model API-k tokenenkénti fizetéses végpontjának databricks-dbrx-instruct
lekérdezéséhez.
%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
Fontos
Az alábbi példa a beépített SQL-függvényt használja, ai_query. Ez a függvény nyilvános előzetes verzió , és a definíció változhat. Lásd: Kiszolgált modell lekérdezése ai_query()-val.
Az alábbiakban egy csevegési kérést meta-llama-3-1-70b-instruct
jelenítünk meg, amelyet az Foundation Model API-k jogkivonatonkénti fizetéses végpontja databricks-meta-llama-3-1-70b-instruct
tett elérhetővé a munkaterületen.
Feljegyzés
A ai_query()
függvény nem támogatja a DBRX vagy a DBRX Instruct modellt kiszolgáló lekérdezési végpontokat.
SELECT ai_query(
"databricks-meta-llama-3-1-70b-instruct",
"Can you explain AI in ten words?"
)
Példaként a következők a csevegési modell elvárt kérésformátumát jelzik a REST API használatakor. Külső modellek esetén további paramétereket is megadhat, amelyek érvényesek egy adott szolgáltatóra és végpontkonfigurációra. Lásd a további lekérdezési paramétereket.
{
"messages": [
{
"role": "user",
"content": "What is a mixture of experts model?"
}
],
"max_tokens": 100,
"temperature": 0.1
}
A REST API használatával küldött kérések várható válaszformátuma a következő:
{
"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
}
Beágyazási modell lekérdezése
Az alábbiakban egy beágyazási kérést küldünk az gte-large-en
Alapmodell API-k által elérhetővé tett modellhez. A példa egy olyan beágyazási modell lekérdezésére vonatkozik, amely a Model Serving egyik funkciójának használatával érhető el: Alapmodell API-k vagy külső modellek.
OpenAI-ügyfél
Az OpenAI-ügyfél használatához adja meg bemenetként model
a végpont nevét kiszolgáló modellt.
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"
)
A munkaterületen kívüli alapmodellek lekérdezéséhez közvetlenül az OpenAI-ügyfelet kell használnia az alábbiak szerint. Az alábbi példa feltételezi, hogy rendelkezik egy Databricks API-jogkivonattal, és openai van telepítve a számításra. Az OpenAI-ügyfelet a Databrickshez való csatlakoztatásához a Databricks-munkaterületpéldányra is szüksége van.
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
Fontos
Az alábbi példa REST API-paramétereket használ az alapmodelleket vagy külső modelleket kiszolgáló végpontok lekérdezéséhez. Ezek a paraméterek nyilvános előzetes verziójúak, és a definíció változhat. Lásd: 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-gte-large-en/invocations
MLflow Deployments SDK
Fontos
Az alábbi példa az predict()
MLflow Deployments SDK API-t használja.
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
A Databricks Foundation Model API-modell beágyazási modellként való használatához importálja az DatabricksEmbeddings
osztályt, és adja meg a paramétert az endpoint
alábbiak szerint:
%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
Fontos
Az alábbi példa a beépített SQL-függvényt használja, ai_query. Ez a függvény nyilvános előzetes verzió , és a definíció változhat. Lásd: Kiszolgált modell lekérdezése ai_query()-val.
SELECT ai_query(
"databricks-gte-large-en",
"Can you explain AI in ten words?"
)
A következő a beágyazási modell várt kérésformátuma. Külső modellek esetén további paramétereket is megadhat, amelyek érvényesek egy adott szolgáltatóra és végpontkonfigurációra. Lásd a további lekérdezési paramétereket.
{
"input": [
"embedding text"
]
}
A várt válaszformátum a következő:
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": []
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
Ellenőrizze, hogy a beágyazások normalizáltak-e
Az alábbiakban ellenőrizheti, hogy a modell által létrehozott beágyazások normalizálva vannak-e.
import numpy as np
def is_normalized(vector: list[float], tol=1e-3) -> bool:
magnitude = np.linalg.norm(vector)
return abs(magnitude - 1) < tol
Szövegkiegészítési modell lekérdezése
OpenAI-ügyfél
Fontos
Az Alapmodell API-kban az OpenAI-ügyfél használatával elérhetővé tett szövegkiegészítési modellek lekérdezése nem támogatott. Csak az OpenAI-ügyféllel történő külső modellek lekérdezése támogatott, ahogyan az ebben a szakaszban is látható.
Az OpenAI-ügyfél használatához adja meg bemenetként model
a végpont nevét kiszolgáló modellt. Az alábbi példa lekérdezi az claude-2
Anthropic által üzemeltetett befejezési modellt az OpenAI-ügyfél használatával. Az OpenAI-ügyfél használatához töltse ki a model
mezőt a lekérdezni kívánt modellt futtató végpontot kiszolgáló modell nevével.
Ez a példa egy korábban létrehozott végpontot használ, anthropic-completions-endpoint
amely az antropikus modellszolgáltatótól származó külső modellek eléréséhez van konfigurálva. Tekintse meg, hogyan hozhat létre külső modellvégpontokat.
További lekérdezhető modellek és azok szolgáltatóinak támogatott modelljei .
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
Az alábbiakban egy külső modellek használatával elérhetővé tett befejezési modell lekérdezésére vonatkozó befejezési kérést küldünk.
Fontos
Az alábbi példa REST API-paramétereket használ a külső modelleket kiszolgáló végpontok lekérdezéséhez. Ezek a paraméterek nyilvános előzetes verziójúak, és a definíció változhat. Lásd: 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/<completions-model-endpoint>/invocations
MLflow Deployments SDK
Az alábbiakban egy külső modellek használatával elérhetővé tett befejezési modell lekérdezésére vonatkozó befejezési kérést küldünk.
Fontos
Az alábbi példa az predict()
MLflow Deployments SDK API-t használja.
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
TA következő egy befejezési kérelem egy külső modellek használatával elérhetővé tett befejezési modell lekérdezéséhez.
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
Fontos
Az alábbi példa a beépített SQL-függvényt használja, ai_query. Ez a függvény nyilvános előzetes verzió , és a definíció változhat. Lásd: Kiszolgált modell lekérdezése ai_query()-val.
SELECT ai_query(
"<completions-model-endpoint>",
"Can you explain AI in ten words?"
)
A befejezési modell várható kérésformátuma a következő. Külső modellek esetén további paramétereket is megadhat, amelyek érvényesek egy adott szolgáltatóra és végpontkonfigurációra. Lásd a további lekérdezési paramétereket.
{
"prompt": "What is mlflow?",
"max_tokens": 100,
"temperature": 0.1,
"stop": [
"Human:"
],
"n": 1,
"stream": false,
"extra_params":
{
"top_p": 0.9
}
}
A várt válaszformátum a következő:
{
"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
}
}
Csevegés támogatott LLM-ekkel az AI Playground használatával
A támogatott nagy nyelvi modelleket az AI Playground használatával használhatja. Az AI-játszótér egy csevegéshez hasonló környezet, ahol tesztelheti, kérheti és összehasonlíthatja az Azure Databricks-munkaterületről származó LLM-eket.
További erőforrások
- Következtetéstáblák a modellek monitorozásához és hibakereséséhez
- Batch-következtetés az Alapmodell API-k által kiosztott átviteli sebesség használatával
- Databricks alapmodell API-k
- Külső modellek a Mozaik AI-modell szolgáltatásban
- Oktatóanyag: Külső modellvégpontok létrehozása OpenAI-modellek lekérdezéséhez
- Támogatott modellek tokenenkénti fizetéshez
- Alapmodell – REST API-referencia