Freigeben über


Verbinden von Agents mit externen Diensten

Important

Dieses Feature befindet sich in der Public Preview.

Verbinden Sie Ihre KI-Agents mit externen Anwendungen wie Slack, Google Calendar oder einem beliebigen Dienst mit einer API. Azure Databricks bietet verschiedene Ansätze, je nachdem, ob der externe Dienst über einen MCP-Server verfügt, unabhängig davon, ob Sie eine Benutzerauthentifizierung benötigen oder ob Sie APIs direkt aus dem Agentcode aufrufen möchten. Alle Ansätze basieren auf einer Unity-Katalog-HTTP-Verbindung , um Anmeldeinformationen sicher zu verwalten und den Zugriff auf externe Dienste zu steuern.

Vorgehensweise Empfohlener Anwendungsfall
Externe MCP-Server Verwenden Sie diesen Ansatz für Dienste, die einen MCP-Server veröffentlichen. Es liefert die automatische Toolerkennung und funktioniert mit Standard-SDKs.
Verwaltetes OAuth Verwenden Sie diesen Ansatz für Google Drive- oder SharePoint-Integrationen. Azure Databricks verwaltet die OAuth-Anmeldeinformationen, sodass keine App-Registrierung erforderlich ist.
UC Connections Proxy Verwenden Sie diesen Ansatz, um direkte REST-API-Aufrufe von Agentcode mithilfe des eigenen Client-SDK des externen Diensts zu tätigen.
UC-Funktionstools Verwenden Sie diesen Ansatz für SQL-basierte Tooldefinitionen, die die http_request() Funktion umschließen.

Requirements

  • Eine Unity-Katalog-HTTP-Verbindung für Ihre externe Anwendung. Unity Catalog-Verbindungen bieten sichere, geregelte Anmeldeinformationsverwaltung und aktivieren mehrere Authentifizierungsmethoden, einschließlich OAuth 2.0-Benutzer-zu-Computer- und Computer-zu-Computer-Authentifizierung.

Externe MCP-Server

Wenn der externe Dienst über einen MCP-Server verfügt, empfiehlt Azure Databricks die Verbindung über external MCP-Server. MCP-Server bieten automatische Toolermittlung, vereinfachte Integration und benutzerspezifische Authentifizierung. Weitere Informationen finden Sie unter Verwenden externer MCP-Server für Installationsmethoden, programmgesteuerte Verwendung und Authentifizierungsdetails.

Hinzufügen eines externen MCP-Servers zu Ihrem Agent

Nachdem Sie den externen MCP-Server als Unity Catalog-Verbindung registriert haben, verbinden Sie Ihren Agent mit ihm über die verwaltete MCP-URL: https://<workspace-hostname>/api/2.0/mcp/external/{connection_name}. Ersetzen Sie <connection-name> durch den Namen Ihrer Unity Catalog-Verbindung.

OpenAI Agents SDK (Apps)

from agents import Agent, Runner
from databricks.sdk import WorkspaceClient
from databricks_openai.agents import McpServer

workspace_client = WorkspaceClient()
host = workspace_client.config.host

async with McpServer(
    url=f"{host}/api/2.0/mcp/external/<connection-name>",
    name="external-service",
    workspace_client=workspace_client,
) as external_server:
    agent = Agent(
        name="Connected agent",
        instructions="You are a helpful assistant with access to external services.",
        model="databricks-claude-sonnet-4-5",
        mcp_servers=[external_server],
    )
    result = await Runner.run(agent, "Send a Slack message to the team about the deployment")
    print(result.final_output)

Gewähren Sie der App Zugriff auf die Unity-Katalogverbindung in databricks.yml:

resources:
  apps:
    my_agent_app:
      resources:
        - name: 'my_connection'
          uc_securable:
            securable_full_name: '<connection-name>'
            securable_type: 'CONNECTION'
            permission: 'USE_CONNECTION'

LangGraph (Apps)

from databricks.sdk import WorkspaceClient
from databricks_langchain import ChatDatabricks, DatabricksMCPServer, DatabricksMultiServerMCPClient
from langgraph.prebuilt import create_react_agent

workspace_client = WorkspaceClient()
host = workspace_client.config.host

mcp_client = DatabricksMultiServerMCPClient([
    DatabricksMCPServer(
        name="external-service",
        url=f"{host}/api/2.0/mcp/external/<connection-name>",
        workspace_client=workspace_client,
    ),
])

async with mcp_client:
    tools = await mcp_client.get_tools()
    agent = create_react_agent(
        ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
        tools=tools,
    )
    result = await agent.ainvoke(
        {"messages": [{"role": "user", "content": "Send a Slack message to the team about the deployment"}]}
    )
    print(result["messages"][-1].content)

Gewähren Sie der App Zugriff auf die Unity-Katalogverbindung in databricks.yml:

resources:
  apps:
    my_agent_app:
      resources:
        - name: 'my_connection'
          uc_securable:
            securable_full_name: '<connection-name>'
            securable_type: 'CONNECTION'
            permission: 'USE_CONNECTION'

Bereitstellung von Modellen

from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow

workspace_client = WorkspaceClient()
host = workspace_client.config.host

mcp_client = DatabricksMCPClient(
    server_url=f"{host}/api/2.0/mcp/external/<connection-name>",
    workspace_client=workspace_client,
)

tools = mcp_client.list_tools()

mlflow.pyfunc.log_model(
    "agent",
    python_model=my_agent,
    resources=mcp_client.get_databricks_resources(),
)

Informationen zum Bereitstellen des Agents finden Sie unter Bereitstellen eines Agents für generative KI-Anwendungen (Model Serving). Ausführliche Informationen zum Protokollieren von Agents mit MCP-Ressourcen finden Sie unter Use Databricks managed MCP servers.

Verwaltetes OAuth

Azure Databricks bietet verwaltete OAuth-Flüsse für ausgewählte API-Toolanbieter. Sie müssen ihre eigene OAuth-App nicht registrieren oder Anmeldeinformationen verwalten. Azure Databricks empfiehlt verwaltetes OAuth für Entwicklung und Tests. Wenn Produktionsanwendungsfälle das Generieren von benutzerdefinierten OAuth-Anmeldeinformationen erfordern, finden Sie weitere Informationen in der Dokumentation der Anbieter.

Die folgenden Integrationen verwenden Azure Databricks verwalteten OAuth-Anmeldeinformationen, die sicher im Back-End gespeichert sind.

Provider Konfigurationsnotizen Unterstützte Geltungsbereiche Beschreibung
Google Drive-API Nichts https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/documents.readonly https://www.googleapis.com/auth/spreadsheets.readonly offline_access Schreibgeschützter Zugriff auf Google Drive-Dateien.
SharePoint-API Nichts https://graph.microsoft.com/Sites.Read.All offline_access openid profile Schreibgeschützter Zugriff auf SharePoint-Sites.

Um verwaltetes OAuth einzurichten, erstellen Sie eine HTTP-Verbindung mit dem Authentifizierungstyp OAuth User to Machine Per User und wählen Sie Ihren Anbieter aus dem Dropdown-Menü OAuth-Anbieter aus. Ausführliche Schritte finden Sie unter Installieren eines externen MCP-Servers.

Jeder Benutzer wird aufgefordert, bei der ersten Verwendung mit dem Anbieter zu autorisieren.

Lassen Sie bei Bedarf die folgenden Umleitungs-URIs zu, die von verwaltetem OAuth verwendet werden:

Wolke Umleitungs-URI
AWS https://oregon.cloud.databricks.com/api/2.0/http/oauth/redirect
Azure https://westus.azuredatabricks.net/api/2.0/http/oauth/redirect
GCP https://us-central1.gcp.databricks.com/api/2.0/http/oauth/redirect

UC Connections-Proxyendpunkt

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 die Anmeldeinformationen des externen Diensts automatisch aus der Unity-Katalogverbindung ein. Ihr Code behandelt niemals die Token des externen Diensts direkt.

Erforderliche Berechtigungen:USE CONNECTION auf dem 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 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. Erstellen Sie eine Unity-Katalog-HTTP-Verbindung mit Host https://slack.com und Basispfad /api, und verwenden Sie dann die Proxy-URL als SDK-Basis-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"])

Generisches HTTP

Verwenden Sie für Dienste ohne dediziertes SDK die requests Bibliothek mit der Proxy-URL direkt:

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"},
)

UC-Funktionstools mit HTTP-Verbindungen

Note

Azure Databricks empfiehlt die Verwendung von MCP-Servern oder dem UC-Verbindungsproxy für neue Integrationen. UC-Funktionstools mit http_request werden zwar weiterhin unterstützt, sind jedoch nicht mehr der empfohlene Ansatz.

Sie können eine Unity-Katalogfunktion erstellen, die http_request() umschließt, um externe Dienste aufzurufen. Dieser Ansatz ist für SQL-basierte Tooldefinitionen nützlich. Ausführliche Informationen zum Erstellen von UC-Funktionstools finden Sie unter Erstellen von KI-Agent-Tools mithilfe von Unity Catalog-Funktionen .

Im folgenden Beispiel wird ein Unity Catalog-Funktionstool erstellt, das eine Nachricht an Slack sendet:

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

Siehe CREATE FUNCTION (SQL und Python).

Note

SQL-Zugriff mit http_request ist für den Verbindungstyp "Benutzer-zu-Maschine für jeden Nutzer" blockiert. Verwenden Sie stattdessen das Python Azure Databricks SDK.

Beispielnotebooks

Verbinden eines Agents mit Slack

Siehe Verbinden eines AI-Agents mit Slack.

Verbinden eines Agents mit Microsoft Teams

Siehe Einen KI-Agenten mit Microsoft Teams verbinden.

Externe Verbindungstools

Die folgenden Notizbücher veranschaulichen das Erstellen von KI-Agent-Tools, die eine Verbindung mit Slack, OpenAI und Azure KI-Suche herstellen.

Messagingagententool von Slack

Notebook abrufen

Microsoft Graph-API-Agent-Tool

Notebook abrufen

Azure-AI-Suchagent-Tool

Notebook abrufen