次の方法で共有


Azure Databricks にデプロイされたエージェントのクエリを実行する

Databricks Apps または Model Serving エンドポイントにデプロイされたエージェントに要求を送信する方法について説明します。 Databricks には、さまざまなユース ケースと統合のニーズに合わせて複数のクエリ メソッドが用意されています。

ユース ケースに最も適したクエリ アプローチを選択します。

方式 主な利点
Databricks OpenAI クライアント (推奨) ネイティブ統合、完全な機能サポート、ストリーミング機能
REST API OpenAI と互換性があり、言語に依存せず、既存のツールで動作します
AI 関数: ai_query モデル サービス エンドポイントでのみホストされている OpenAI 互換のクエリ レガシ エージェント

Databricks は、新しいアプリケーションに Databricks OpenAI クライアント を推奨します。 OpenAI と互換性のあるエンドポイントが必要なプラットフォームと統合する場合は、 REST API を選択します。

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);

次のステップ

運用環境での GenAI の監視