Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie den Unity Catalog Connections-Proxyendpunkt mit dem eigenen Client-SDK des externen Diensts, um REST-APIs direkt aus dem Agentcode aufzurufen. Verweisen Sie die Basis-URL des SDK auf den Proxyendpunkt, und verwenden Sie Ihr Azure Databricks-Token als API-Schlüssel. Azure Databricks authentifiziert die Anforderung und fügt automatisch die Anmeldeinformationen des externen Diensts aus der Unity-Katalogverbindung ein. Ihr Code behandelt die Token des externen Diensts nicht direkt.
Anforderungen
- Python 3.12 und Workspace-Anmeldung.
- Eine Unity Catalog HTTP-Verbindung für den externen Dienst. Der Proxy-Endpunkt nutzt diese Verbindung, um die Zugangsdaten des Dienstes zu authentifizieren und einzuschleusen.
-
USE CONNECTIONfür das Verbindungsobjekt.
OpenAI
Verwenden Sie DatabricksOpenAI, um Anrufe an externe OpenAI über den Unity Catalog-Verbindungsproxy weiterzuleiten. Erstellen Sie zunächst eine Unity-Katalog-HTTP-Verbindung mit Ihrem OpenAI-API-Schlüssel, der als Databricks-Schlüssel gespeichert ist:
CREATE CONNECTION openai_connection TYPE HTTP
OPTIONS (
host 'https://api.openai.com',
base_path '/v1',
bearer_token secret ('<secret-scope>', '<secret-key>')
);
Installieren Sie dann das databricks-openai Paket, und verwenden Sie den Proxy-URL- und Arbeitsbereichsclient in Ihrem Agentcode:
pip install --upgrade 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
Konfigurieren Sie das Slack-SDK, um den Unity Catalog-Verbindungsproxy zu durchlaufen. Erstelle eine Unity Catalog HTTP-Verbindung mit Host https://slack.com und Basispfad /apiund verwende dann die Proxy-URL als SDK-Basis-URL. Benenne die Verbindung slack_connection und konfiguriere die Provider-Zugangsdaten für deine Slack-App.
Installieren Sie die Bibliotheken:
pip install --upgrade slack-sdk databricks-sdk
Ersetze <channel-id> durch einen Kanal, auf dem deine Slack-App posten kann. Das Ausführen dieses Beispiels sendet eine Nachricht:
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="<channel-id>", text="Hello from Databricks!")
print(result["message"]["text"])
Generisches HTTP
Für Dienste ohne dediziertes SDK verwenden Sie die requests Bibliothek mit der Proxy-URL direkt. Ersetze den Verbindungsnamen, den Ressourcenpfad und den JSON-Körper durch Werte für deine API.
pip install --upgrade requests databricks-sdk
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"},
timeout=30,
)
response.raise_for_status()
print(response.text)
Ausführliche Informationen zum Proxyendpunkt, unterstützten Authentifizierungsmethoden und Verbindungseinrichtung finden Sie unter Weiterleitungsanforderungen über den HTTP-Verbindungsproxy.
Verpacken von http_request() in eine Unity Catalog-Funktion (Legacy)
Note
Azure Databricks empfiehlt den oben gezeigten Connections-Proxy oder MCPs, um Agenten mit externen Diensten zu verbinden. Unity-Catalog-Funktions-Tools, die http_request umschließen, werden weiterhin unterstützt, sind aber nicht mehr die empfohlene Vorgehensweise.
Sie können auch eine Unity-Catalog-Funktion erstellen, die http_request() kapselt, um externe Dienste aufzurufen, was für SQL-basierte Tooldefinitionen nützlich ist. Die Funktion verwendet dieselbe Unity Catalog HTTP-Verbindung wie der Proxy-Ansatz, der im Parameter conn nach Namen referenziert wird.
Das folgende Beispiel verwendet das obige slack_connection, dessen Basispfad /api ist. Ersetze <channel-id> durch deine Slack-Kanal-ID. Die Funktion postet eine Nachricht, wenn sie aufgerufen wird:
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 => 'slack_connection',
method => 'POST',
path => '/chat.postMessage',
json => to_json(named_struct(
'channel', '<channel-id>',
'text', text
))
)).text;
Siehe CREATE FUNCTION (SQL, Python, Scala und Java).
Note
SQL-Zugriff mit http_request ist für die Verbindungstypen "Benutzer-zu-Maschine pro Benutzer" und "Dynamische Clientregistrierung" blockiert. Verwenden Sie stattdessen das Python Azure Databricks SDK.