エージェントコードから直接 REST APIs を呼び出す
外部サービスのクライアントSDKを使用してUnity Catalog接続プロキシEndpointを使用し、エージェントコードから直接REST APIsを呼び出します。SDKのベースURLをプロキシEndpointに向け、DatabricksトークンをAPIキーとして使用します。Databricks はリクエストを認証し、Unity Catalog 接続から外部サービス の認証情報を自動的に挿入します。お客様のコードは、外部サービスのトークンを直接処理しません。
要件
- 外部サービス用のUnity Catalog HTTP接続。プロキシEndpointは、この接続を使用して認証を行い、サービスの認証情報を挿入します。
USE CONNECTION接続オブジェクト上。
OpenAI
DatabricksOpenAIを使用して、Unity Catalog接続プロキシを介して外部OpenAIへの呼び出しをルーティングします。まず、Databricksシークレットとして保存されているOpenAI APIキーを使用してUnity Catalog HTTP接続を作成します。
CREATE CONNECTION openai_connection TYPE HTTP
OPTIONS (
host 'https://api.openai.com',
base_path '/v1',
bearer_token secret ('<secret-scope>', '<secret-key>')
);
次に、databricks-openaiパッケージをインストールし、エージェントコードでプロキシURLとワークスペースクライアントを使用します。
pip install databricks-openai
from databricks_openai import DatabricksOpenAI
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
client = DatabricksOpenAI(
workspace_client=w,
base_url=f"{w.config.host}/api/2.0/unity-catalog/connections/openai_connection/proxy/",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
Slack
Slack SDKを、Unity Catalog接続プロキシ経由でルーティングするように構成します。ホストhttps://slack.comとベースパス/apiを使用してUnity Catalog HTTP接続を作成し、プロキシURLをSDKベースURLとして使用します:
from slack_sdk import WebClient
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
client = WebClient(
token=w.config.authenticate()["Authorization"].split(" ")[1],
base_url=f"{w.config.host}/api/2.0/unity-catalog/connections/slack_connection/proxy/",
)
result = client.chat_postMessage(channel="C123456", text="Hello from Databricks!")
print(result["message"]["text"])
汎用 HTTP
専用のSDKがないサービスの場合、プロキシURLを直接使用してrequestsライブラリを使用してください。
import requests
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = requests.post(
f"{w.config.host}/api/2.0/unity-catalog/connections/my_connection/proxy/api/v1/resource",
headers={
**w.config.authenticate(),
"Content-Type": "application/json",
},
json={"key": "value"},
)
プロキシEndpoint、サポートされている認証方法、および接続設定の詳細については、HTTP接続プロキシ経由でリクエストを転送するを参照してください。
http_request() を Unity Catalog の関数でラップする
Databricks では、エージェントを外部サービスに接続するために、上で示した接続プロキシまたは MCP Services の使用をお勧めします。http_request をラップする Unity Catalog 関数ツールは引き続きサポートされますが、推奨されるアプローチではなくなりました。
外部サービスを呼び出すために http_request() をラップする Unity Catalog 関数を作成することもできます。これは、SQL ベースのツールの定義に役立ちます。この関数は、プロキシ アプローチと同じ Unity Catalog HTTP 接続を使用します。これは conn パラメーターで名前によって参照されます。
次の例では、Slack にメッセージを投稿する Unity Catalog 関数ツールを作成します。
CREATE OR REPLACE FUNCTION main.default.slack_post_message(
text STRING COMMENT 'message content'
)
RETURNS STRING
COMMENT 'Sends a Slack message by passing in the message and returns the response received from the external service.'
RETURN (http_request(
conn => 'test_sql_slack',
method => 'POST',
path => '/api/chat.postMessage',
json => to_json(named_struct(
'channel', "C032G2DAH3",
'text', text
))
)).text
See CREATE FUNCTION (SQL、Python、Scala、および Java).
http_request を使用した SQL アクセスは、User-to-Machine Per User および動的クライアント登録の接続タイプではブロックされます。代わりに Python 用 Databricks SDK を使用してください。