Databricks Apps または Model Serving エンドポイントにデプロイされたエージェントに要求を送信する方法について説明します。 Databricks には、さまざまなユース ケースと統合のニーズに合わせて複数のクエリ メソッドが用意されています。
ユース ケースに最も適したクエリ アプローチを選択します。
| 方式 | 主な利点 |
|---|---|
| Databricks OpenAI クライアント (推奨) | ネイティブ統合、完全な機能サポート、ストリーミング機能 |
| REST API | OpenAI と互換性があり、言語に依存せず、既存のツールで動作します |
AI 関数: ai_query |
モデル サービス エンドポイントでのみホストされている OpenAI 互換のクエリ レガシ エージェント |
Databricks は、新しいアプリケーションに Databricks OpenAI クライアント を推奨します。 OpenAI と互換性のあるエンドポイントが必要なプラットフォームと統合する場合は、 REST API を選択します。
Databricks OpenAI クライアント (推奨)
Databricks では、 DatabricksOpenAI クライアント を使用して、デプロイされたエージェントに対してクエリを実行することをお勧めします。 デプロイされたエージェントの API に応じて、応答またはチャット完了クライアントを使用します。
アプリにデプロイされたエージェント
エージェントを構築する場合に推奨される インターフェイスに従って、ResponsesAgentエージェントの例を次に示します。
Databricks アプリでホストされているエージェントにクエリを実行するには、Databricks OAuth トークンを使用する必要があります。
from databricks.sdk import WorkspaceClient
from databricks_openai import DatabricksOpenAI
input_msgs = [{"role": "user", "content": "What does Databricks do?"}]
app_name = "<agent-app-name>" # TODO: update this with your app name
# The WorkspaceClient must be configured with OAuth authentication
# See: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-u2m.html
w = WorkspaceClient()
client = DatabricksOpenAI(workspace_client=w)
# Run for non-streaming responses. Calls the "invoke" method
# Include the "apps/" prefix in the model name
response = client.responses.create(model=f"apps/{app_name}", input=input_msgs)
print(response)
# Include stream=True for streaming responses. Calls the "stream" method
# Include the "apps/" prefix in the model name
streaming_response = client.responses.create(
model=f"apps/{app_name}", input=input_msgs, stream=True
)
for chunk in streaming_response:
print(chunk)
custom_inputsを渡す場合は、extra_bodyパラメーターを使用して追加できます。
streaming_response = client.responses.create(
model=f"apps/{app_name}",
input=input_msgs,
stream=True,
extra_body={
"custom_inputs": {"id": 5},
},
)
for chunk in streaming_response:
print(chunk)
モデル提供のエージェント
インターフェイスに従って ResponsesAgentの例を次に示します。 Databricks OAuth トークンまたは個人用アクセス トークン (PAT) を使用して、モデル サービスでホストされているエージェントにクエリを実行できます。
from databricks_openai import DatabricksOpenAI
input_msgs = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name
client = DatabricksOpenAI()
# Run for non-streaming responses. Invokes `predict`
response = client.responses.create(model=endpoint, input=input_msgs)
print(response)
# Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.responses.create(model=endpoint, input=input_msgs, stream=True)
for chunk in streaming_response:
print(chunk)
custom_inputsまたはdatabricks_optionsを渡す場合は、extra_bodyパラメーターを使用して追加できます。
streaming_response = client.responses.create(
model=endpoint,
input=input_msgs,
stream=True,
extra_body={
"custom_inputs": {"id": 5},
"databricks_options": {"return_trace": True},
},
)
for chunk in streaming_response:
print(chunk)
ChatAgent または ChatModel インターフェイスに従ってサービスを提供するモデルのレガシ エージェントの例を次に示します。
from databricks.sdk import WorkspaceClient
messages = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name
ws_client = WorkspaceClient()
client = ws_client.serving_endpoints.get_open_ai_client()
# Run for non-streaming responses. Invokes `predict`
response = client.chat.completions.create(model=endpoint, messages=messages)
print(response)
# Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.chat.completions.create(model=endpoint, messages=messages, stream=True)
for chunk in streaming_response:
print(chunk)
custom_inputsまたはdatabricks_optionsを渡す場合は、extra_bodyパラメーターを使用して追加できます。
streaming_response = client.chat.completions.create(
model=endpoint,
messages=messages,
stream=True,
extra_body={
"custom_inputs": {"id": 5},
"databricks_options": {"return_trace": True},
},
)
for chunk in streaming_response:
print(chunk)
REST API
Databricks REST API は、OpenAI と互換性のあるモデルのエンドポイントを提供します。 これにより、Databricks エージェントを使用して、OpenAI インターフェイスを必要とするアプリケーションにサービスを提供できます。
このアプローチは、次の場合に最適です。
- HTTP 要求を使用する言語に依存しないアプリケーション
- OpenAI と互換性のある API を必要とするサード パーティ製プラットフォームとの統合
- コードの変更を最小限に抑えた OpenAI から Databricks への移行
Databricks OAuth トークンを使用して REST API で認証します。 詳細なオプションと情報については、 Databricks 認証のドキュメント を参照してください。
アプリにデプロイされたエージェント
エージェントを構築する場合に推奨される インターフェイスに従って、ResponsesAgentエージェントの例を次に示します。
Databricks アプリでホストされているエージェントにクエリを実行するには、Databricks OAuth トークンを使用する必要があります。
curl --request POST \
--url <app-url>.databricksapps.com/responses \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"input": [{ "role": "user", "content": "hi" }],
"stream": true
}'
custom_inputsを渡す場合は、要求本文に追加できます。
curl --request POST \
--url <app-url>.databricksapps.com/responses \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"input": [{ "role": "user", "content": "hi" }],
"stream": true,
"custom_inputs": { "id": 5 }
}'
モデルサービングのエージェント
インターフェイスに従って ResponsesAgentの例を次に示します。 Databricks OAuth トークンまたは個人用アクセス トークン (PAT) を使用して、モデル サービスでホストされているエージェントにクエリを実行できます。 REST API 呼び出しは、次と同じです。
-
responses.createで Databricks OpenAI クライアントを使用する。 - 特定のエンドポイントの URL に POST 要求を送信する (例:
https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations)。 詳細については、エンドポイントの [モデル サービス] ページと モデル サービスのドキュメントを参照してください。
curl --request POST \
--url https://<host.databricks.com\>/serving-endpoints/responses \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"model": "\<model-name\>",
"input": [{ "role": "user", "content": "hi" }],
"stream": true
}'
custom_inputsまたはdatabricks_optionsを渡す場合は、要求本文に追加できます。
curl --request POST \
--url https://<host.databricks.com\>/serving-endpoints/responses \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"model": "\<model-name\>",
"input": [{ "role": "user", "content": "hi" }],
"stream": true,
"custom_inputs": { "id": 5 },
"databricks_options": { "return_trace": true }
}'
従来の ChatAgent または ChatModel インターフェイスで作成されたエージェントには、次を使用します。 これは次の内容に相当します。
-
chat.completions.createで Databricks OpenAI クライアントを使用する。 - 特定のエンドポイントの URL に POST 要求を送信する (例:
https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations)。 詳細については、エンドポイントの [モデル サービス] ページと モデル サービスのドキュメントを参照してください。
curl --request POST \
--url https://<host.databricks.com\>/serving-endpoints/chat/completions \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"model": "\<model-name\>",
"messages": [{ "role": "user", "content": "hi" }],
"stream": true
}'
custom_inputsまたはdatabricks_optionsを渡す場合は、要求本文に追加できます。
curl --request POST \
--url https://<host.databricks.com\>/serving-endpoints/chat/completions \
--header 'Authorization: Bearer <OAuth token>' \
--header 'content-type: application/json' \
--data '{
"model": "\<model-name\>",
"messages": [{ "role": "user", "content": "hi" }],
"stream": true,
"custom_inputs": { "id": 5 },
"databricks_options": { "return_trace": true }
}'
AI 関数: ai_query
ai_queryを使用して、SQL を使用してサービスを提供するモデルでホストされているデプロイされたエージェントに対してクエリを実行できます。 SQL 構文とパラメーター定義については、ai_query関数を参照してください。
SELECT ai_query(
"<model name>", question
) FROM (VALUES ('what is MLflow?'), ('how does MLflow work?')) AS t(question);