Aller au contenu principal

Appeler des APIs REST directement depuis le code de l’agent

Utilisez l'Endpoint proxy de connexions Unity Catalog avec le SDK client propre au service externe pour appeler directement des APIs REST à partir du code de l'agent. Pointez l'URL de base du SDK vers l'endpoint proxy et utilisez votre jeton Databricks comme clé d'API. Databricks authentifie la requête et injecte automatiquement les identifiants du service externe à partir de la connexion Unity Catalog. Votre code ne gère pas directement les jetons du service externe.

Exigences

  • Une connexion HTTP Unity Catalog pour le service externe. L'Endpoint proxy utilise cette connexion pour s'authentifier et injecter les identifiants du service.
  • USE CONNECTION sur l’objet de connexion.

OpenAI

Utilisez DatabricksOpenAI pour acheminer les appels vers OpenAI externe via le proxy des connexions Unity Catalog. Tout d'abord, créez une connexion HTTP Unity Catalog à l'aide de votre clé API OpenAI stockée en tant que secret Databricks:

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

Ensuite, installez le package databricks-openai et utilisez l'URL de proxy et le client Workspace dans votre code d'agent :

Bash
pip install databricks-openai
Python
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 qu'il soit acheminé via le proxy de connexions Unity Catalog. Créez une connexion HTTP Unity Catalog avec l'hôte https://slack.com et le chemin de base /api, puis utilisez l'URL proxy comme URL de base du SDK :

Python
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 SDK dédié, utilisez directement la bibliothèque requests avec l'URL proxy :

Python
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(),
&quot;Content-Type&quot;: &quot;application/json&quot;,
},
json={&quot;key&quot;: &quot;value&quot;},
)

Pour plus de détails sur l’endpoint proxy, les méthodes d’authentification prises en charge et la configuration de la connexion, consultez Transférer les requêtes via le proxy de connexion HTTP.