Roep REST API's direct aan vanuit agentcode

Gebruik het proxy-eindpunt voor Unity Catalog-verbindingen met de eigen client-SDK van de externe service om REST API's rechtstreeks vanuit agentcode aan te roepen. Wijs de basis-URL van de SDK naar het proxy-eindpunt en gebruik uw Azure Databricks-token als de API-sleutel. Azure Databricks verifieert de aanvraag en injecteert automatisch de referenties van de externe service vanuit de Unity Catalog-verbinding. Uw code verwerkt de tokens van de externe service niet rechtstreeks.

Requirements

OpenAI

Gebruik DatabricksOpenAI om oproepen naar externe OpenAI te routeren via de Unity Catalog-verbindingen proxy. Maak eerst een UNITY Catalog HTTP-verbinding met behulp van uw OpenAI API-sleutel die is opgeslagen als een Databricks-geheim:

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

Installeer vervolgens het databricks-openai pakket en gebruik de proxy-URL en werkruimteclient in uw 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

Configureer de Slack SDK om te routeren via de Unity Catalog-verbindingenproxy. Maak een Unity Catalog HTTP-verbinding aan met host https://slack.com en basispad /api, en gebruik vervolgens de proxy-URL als SDK-basis-URL. Geef de verbinding slack_connection een naam en configureer de provider-inloggegevens voor je Slack-app.

Installeer de bibliotheken:

pip install --upgrade slack-sdk databricks-sdk

Vervang <channel-id> door een kanaal waar je Slack-app berichten kan plaatsen. Het uitvoeren van dit voorbeeld geeft een bericht:

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

Algemene HTTP

Voor diensten zonder een speciale SDK gebruik je direct de requests bibliotheek met de proxy-URL. Vervang de verbindingsnaam, het resource path en de JSON-body door waarden voor je 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)

Zie Aanvragen doorsturen via de HTTP-verbindingsproxy voor meer informatie over het proxy-eindpunt, ondersteunde verificatiemethoden en het instellen van verbindingen.

Verpak http_request() in een Unity Catalog-functie (legacy)

Note

Azure Databricks raadt de hierboven getoonde verbindingsproxy of MCP's aan voor het verbinden van agenten met externe diensten. Unity Catalog functietools die wrappen http_request blijven ondersteund, maar zijn niet langer de aanbevolen aanpak.

Je kunt ook een Unity Catalog-functie maken die wraps http_request() om externe services aan te roepen, wat handig is voor SQL-gebaseerde tooldefinities. De functie gebruikt dezelfde Unity Catalog HTTP-verbinding als de proxy-benadering, aangeduid met naam in de conn parameter.

Het volgende voorbeeld gebruikt het bovenstaande slack_connection, met als basispad /api. Vervang <channel-id> door je Slack-kanaal-ID. De functie plaatst een bericht wanneer deze wordt aangeroepen:

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;

Zie CREATE FUNCTION (SQL, Python, Scala en Java).

Note

SQL-toegang met http_request is geblokkeerd voor de verbindingstypen gebruikers-naar-machine per gebruiker en dynamische clientregistratie. Gebruik in plaats daarvan de Python Azure Databricks SDK.