Anropa REST-API:er direkt från agentkod

Använd proxyslutpunkten för Unity Catalog-anslutningar med den externa tjänstens egen klient-SDK för att anropa REST-API:er direkt från agentkoden. Peka SDK:ns bas-URL till proxyslutpunkten och använd din Azure Databricks-token som API-nyckel. Azure Databricks autentiserar begäran och matar automatiskt in den externa tjänstens autentiseringsuppgifter från Unity Catalog-anslutningen. Koden hanterar inte den externa tjänstens token direkt.

Requirements

  • Python 3.12 och inloggning till arbetsytan.
  • En HTTP-anslutning i Unity Catalog för den externa tjänsten. Proxy-endpointen använder denna anslutning för att autentisera och injicera tjänstens inloggningsuppgifter.
  • USE CONNECTION i anslutningsobjektet.

OpenAI

Använd DatabricksOpenAI för att dirigera anrop till extern OpenAI via proxyn för Unity Catalog-anslutningar. Skapa först en HTTP-anslutning för Unity Catalog med hjälp av din OpenAI API-nyckel som lagras som en Databricks-hemlighet:

CREATE CONNECTION openai_connection TYPE HTTP
OPTIONS (
  host 'https://api.openai.com',
  base_path '/v1',
  bearer_token secret ('<secret-scope>', '<secret-key>')
);

Installera sedan databricks-openai-paketet och använd proxy-URL:en och arbetsyte-klienten i agentkoden.

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

Konfigurera Slack SDK så att det dirigeras via unity catalog-anslutningsproxyn. Skapa en HTTP-anslutning i Unity Catalog med värdnamn https://slack.com och bassökväg /api, och använd sedan proxy-URL:en som SDK:s bas-URL. Namnge anslutningen slack_connection och konfigurera leverantörsuppgifterna för din Slack-app.

Installera biblioteken:

pip install --upgrade slack-sdk databricks-sdk

Ersätt <channel-id> med en kanal där din Slack-app kan posta. Att köra detta exempel skickar ett meddelande:

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"])

Generisk HTTP

För tjänster utan dedikerat SDK, använd requests-biblioteket med proxy-URL:en direkt. Byt ut anslutningsnamnet, resursvägen och JSON-kroppen med värden för ditt 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)

Mer information om proxyslutpunkten, autentiseringsmetoder som stöds och anslutningskonfiguration finns i Vidarebefordra begäranden via HTTP-anslutningsproxyn.

Omslut http_request() i en Unity Catalog-funktion (legacy)

Anmärkning

Azure Databricks rekommenderar anslutningsproxyn som visas ovan eller MCP för att koppla agenter till externa tjänster. Unity Catalog-funktionsverktyg som wrappar http_request stöds fortfarande men är inte längre den rekommenderade metoden.

Du kan också skapa en Unity Catalog-funktion som omsluter http_request() för att anropa externa tjänster, vilket är användbart för SQL-baserade verktygsdefinitioner. Funktionen använder samma HTTP-anslutning i Unity Catalog som proxy-metoden, refererad med namn i parametern conn .

Följande exempel använder ovanstående slack_connection , vars basväg är /api. Byt ut <channel-id> med ditt Slack-kanal-ID. Funktionen skickar ett meddelande när den anropas:

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;

Se CREATE FUNCTION (SQL, Python, Scala och Java).

Anmärkning

SQL-åtkomst med http_request blockeras för anslutningstyperna Användare till dator per användare och Dynamisk klientregistrering. Använd Python Azure Databricks SDK i stället.