Appelez les API REST directement à partir du code de l’agent

Utilisez le point de terminaison proxy des connexions du catalogue Unity avec le SDK client propre au service externe pour effectuer des appels aux API REST directement depuis le code de l'agent. Pointez l’URL de base du Kit de développement logiciel (SDK) vers le point de terminaison proxy et utilisez votre jeton Azure Databricks comme clé API. Azure Databricks authentifie la requête et injecte automatiquement les informations d'identification du service externe à partir de la connexion du catalogue Unity. Votre code ne gère pas directement les jetons du service externe.

Exigences

  • Une connexion HTTP du catalogue Unity pour le service externe. Le point de terminaison proxy utilise cette connexion pour authentifier et injecter les identifiants du service.
  • USE CONNECTION sur l’objet de connexion.

OpenAI

Utilisez DatabricksOpenAI pour router les appels vers OpenAI externe à travers le proxy de connexions du catalogue Unity. Tout d’abord, créez une connexion HTTP du catalogue Unity à l’aide de votre clé API OpenAI stockée en tant que secret Databricks :

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

Installez ensuite le databricks-openai package et utilisez l’URL du proxy et le client d’espace de travail dans votre code d’agent :

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

Configurez le SDK Slack pour router via le proxy de connexions du Unity Catalog. Créez une connexion HTTP du catalogue Unity avec l’hôte https://slack.com et le chemin d’accès /apide base, puis utilisez l’URL du proxy comme URL de base du KIT de développement logiciel (SDK) :

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 générique

Pour les services sans Kit de Développement Logiciel (SDK) dédié, utilisez directement la bibliothèque avec l'URL du proxy 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"},
)

Pour plus d’informations sur le point de terminaison proxy, les méthodes d’authentification prises en charge et la configuration de la connexion, consultez Transfert de requêtes via le proxy de connexion HTTP.

Intégrer http_request() dans une fonction Unity Catalog

Note

Azure Databricks recommande le proxy de connexions montré ci-dessus ou MCP Services pour connecter les agents aux services externes. Les outils de fonction Unity Catalog qui encapsulent http_request restent pris en charge, mais ne constituent plus la méthode recommandée.

Vous pouvez aussi créer une fonction Unity Catalog qui s’enroule http_request() pour appeler des services externes, ce qui est utile pour les définitions d’outils basés sur SQL. La fonction utilise la même connexion HTTP du catalogue Unity que l’approche proxy, référencée par son nom dans le conn paramètre.

L’exemple suivant crée un outil fonction de Unity Catalog qui publie un message sur Slack :

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

Consultez CREATE FUNCTION (SQL, Python, Scala et Java).

Note

L’accès SQL avec http_request est bloqué pour les types de connexion User-to-Machine per User et Dynamic Client Registration. Utilisez plutôt le Kit de développement logiciel (SDK) Azure Databricks Python.