Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est en version bêta. Les administrateurs de compte peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
L'API Superviseur simplifie la création d'agents personnalisés sur Azure Databricks avec prise en charge du mode en arrière-plan pour les tâches de longue durée. Vous définissez le modèle, les outils et les instructions d’une requête à un point de terminaison compatible OpenResponses compatible (POST /mlflow/v1/responses), et Azure Databricks exécute la boucle de l’agent pour vous : appeler à plusieurs reprises le modèle, sélectionner et exécuter des outils et synthétiser une réponse finale.
Il existe trois approches pour créer un agent d’appel d’outils personnalisé sur Azure Databricks :
- Agent Bricks Supervisor Agent (recommandé) : entièrement déclaratif avec optimisation des commentaires humains pour la meilleure qualité.
- API de supervision : Créez un agent personnalisé par programmation : choisissez des modèles au moment de l’exécution, contrôlez les outils à utiliser par requête ou itérer pendant le développement. Également le bon choix lorsque vous avez besoin de choisir le modèle tout en déléguant la gestion des boucles de l’agent à Azure Databricks.
-
API unifiées ou natives de la passerelle IA : écrivez votre propre boucle d’agent. Azure Databricks fournit uniquement la couche d’inférence LLM. Utilisez les API unifiées si possible pour activer le basculement de modèles ou les API natives spécifiques au fournisseur (
/openai,/anthropic,/gemini) lors du portage du code existant vers Azure Databricks ou à l’aide de fonctionnalités spécifiques au fournisseur.
Exigences
-
Unity AI Gateway pour les agents et les LLMs activés pour votre compte. Consultez Gérer les préversions d’Azure Databricks.
- Étant donné que l’API Superviseur s’exécute via Unity AI Gateway, les fonctionnalités AI Gateway telles que les tables d’inférence, les limites de débit et les mesures de repli s’appliquent. Le suivi de l’utilisation n’est pas pris en charge dans cette version bêta.
-
Le stockage des traces OpenTelemetry dans le catalogue Unity est activé pour votre compte. Consultez Gérer les préversions d’Azure Databricks.
- Stocke les traces à partir de la boucle de l’agent d’API Superviseur dans les tables du catalogue Unity.
- Espace de travail Azure Databricks dans une région prise en charge.
- Catalogue Unity activé pour votre espace de travail. Consultez Activer un espace de travail pour le catalogue Unity.
- Les outils que vous transmettez (Genie Spaces, fonctions catalogue Unity, serveurs MCP, assistants de connaissances, applications) doivent déjà être configurés et accessibles.
- Package
databricks-openaiinstallé :pip install databricks-openai
Étape 1 : Créer un appel LLM à un seul tour
Commencez par un appel de base sans outils. Le DatabricksOpenAI client configure automatiquement l’URL de base et l’authentification pour votre espace de travail :
from databricks_openai import DatabricksOpenAI
client = DatabricksOpenAI(use_ai_gateway=True)
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "Tell me about Databricks"}],
stream=False
)
print(response.output_text)
Étape 2 : Ajouter des outils hébergés pour exécuter la boucle de l’agent
Lorsque vous incluez des outils dans la requête, Azure Databricks gère une boucle à plusieurs tour en votre nom : le modèle décide des outils à appeler, Azure Databricks les exécute, alimente les résultats vers le modèle et se répète jusqu’à ce que le modèle produise une réponse finale.
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "Summarize recent customer reviews and flag any urgent issues."}],
tools=[
{
"type": "genie_space",
"genie_space": {
"id": "<genie-space-id>",
"description": "Answers customer review questions using SQL"
}
},
{
"type": "uc_function",
"uc_function": {
"name": "<catalog>.<schema>.<function_name>",
"description": "Flags a review as requiring urgent attention"
}
},
{
"type": "knowledge_assistant",
"knowledge_assistant": {
"knowledge_assistant_id": "<knowledge-assistant-id>",
"description": "Answers questions from internal documentation"
}
},
{
"type": "app",
"app": {
"name": "<app-name>",
"description": "Custom application endpoint"
}
},
{
"type": "uc_connection",
"uc_connection": {
"name": "<uc-connection-name>",
"description": "Searches the web for current information"
}
},
],
stream=True
)
for event in response:
print(event)
Étape 3 (Facultatif) : Se connecter à des services tiers avec des connexions gérées par le système
Azure Databricks fournit des connexions gérées par le système pour les services tiers populaires tels que Google Drive, GitHub, Atlassian et SharePoint. Ces connexions constituent une alternative rapide à la configuration de votre propre serveur MCP externe . Vous pouvez toujours utiliser le uc_connection type d’outil pour vous connecter à n’importe quel serveur MCP externe que vous avez configuré vous-même.
Les connexions gérées par le système nécessitent que les connecteurs tiers pour les agents bêta soient activés dans votre espace de travail. Consultez Gérer les préversions d’Azure Databricks.
Les connecteurs suivants sont pris en charge :
| Connecteur | Description |
|---|---|
system_ai_agent_google_drive |
Recherchez et lisez des fichiers à partir de Google Drive. |
system_ai_agent_github_mcp |
Accédez aux repositories, problèmes et requêtes de tirage (pull requests) GitHub. |
system_ai_agent_atlassian_mcp |
Rechercher et gérer des ressources Atlassian (Jira, Confluence). |
system_ai_agent_sharepoint |
Recherchez et lisez des fichiers à partir de SharePoint. |
Passez un connecteur dans le tableau tools en utilisant un outil de type uc_connection avec le champ name défini sur le nom du connecteur :
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "List my open GitHub pull requests."}],
tools=[
{
"type": "uc_connection",
"uc_connection": {
"name": "system_ai_agent_github_mcp"
}
}
],
)
Authentification utilisateur à machine (U2M)
Chaque utilisateur s’authentifie individuellement. Les jetons OAuth ne sont pas partagés entre les utilisateurs. Dans la première requête qui utilise un connecteur que l’utilisateur n’a pas authentifié, la réponse se termine par status: "failed" une oauth erreur contenant une URL de connexion :
{
"status": "failed",
"error": {
"code": "oauth",
"message": "Failed request to <connector>. Please login first at <login-url>."
}
}
Ouvrez l’URL dans un navigateur, terminez le flux OAuth, puis réexécutez la même requête.
Étape 4 : Activer le suivi
Incluez un trace_destination dans le corps de la requête pour envoyer des traces de la boucle de l’agent aux tables du catalogue Unity. Chaque requête génère une trace capturant la séquence complète d’appels de modèle et d’exécutions d’outils. Si vous ne définissez trace_destinationpas, aucune trace n’est écrite. Pour plus d’informations sur la configuration, consultez Stocker les traces OpenTelemetry dans le catalogue Unity.
À l’aide du client databricks-openai Python, transmettez-le via extra_body :
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "Tell me about Databricks"}],
tools=[...],
extra_body={
"trace_destination": {
"catalog_name": "<catalog>",
"schema_name": "<schema>",
"table_prefix": "<table-prefix>"
}
}
)
Pour également retourner la trace directement dans la réponse de l’API, transmettez "databricks_options": {"return_trace": True}extra_body.
Vous pouvez également utiliser le suivi distribué MLflow pour combiner des traces à partir de votre code d’application et de la boucle de l’agent d’API Supervisor en une seule trace de bout en bout. Propagez les en-têtes de contexte de trace en utilisant le champ extra_headers :
import mlflow
from mlflow.tracing import get_tracing_context_headers_for_http_request
with mlflow.start_span("client-root") as root_span:
root_span.set_inputs({"input": "Tell me about Databricks"})
trace_headers = get_tracing_context_headers_for_http_request()
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "Tell me about Databricks"}],
tools=[...],
extra_body={
"trace_destination": {
"catalog_name": "<catalog>",
"schema_name": "<schema>",
"table_prefix": "<table-prefix>"
}
},
extra_headers=trace_headers,
)
Mode arrière-plan
Le mode en arrière-plan vous permet d’exécuter des workflows d’agent de longue durée qui impliquent plusieurs appels d’outils et un raisonnement complexe sans attendre qu’ils se terminent de manière synchrone. Envoyez votre demande avec background=True, recevez immédiatement un ID de réponse et interrogez le résultat lorsqu’il est prêt. Cela est particulièrement utile pour les agents qui interrogent plusieurs sources de données ou chaînent plusieurs outils ensemble dans une seule requête.
Créer une demande en arrière-plan
response = client.responses.create(
model="databricks-claude-sonnet-4-5",
input=[{"type": "message", "role": "user", "content": "Tell me about Databricks"}],
tools=[...],
background=True,
)
print(response.id) # Use this ID to poll for the result
print(response.status) # "queued" or "in_progress"
Sondage pour le résultat
Permet responses.retrieve() de vérifier l’état jusqu’à ce qu’il atteigne un état terminal :
from time import sleep
while response.status in {"queued", "in_progress"}:
sleep(2)
response = client.responses.retrieve(response.id)
print(response.output_text)
Mode d’arrière-plan avec MCP
Pour la sécurité, l’API Superviseur nécessite une approbation explicite de l’utilisateur avant d’exécuter un appel d’outil MCP en mode en arrière-plan. Lorsque la boucle de l’agent sélectionne un outil MCP, la réponse se termine par un mcp_approval_request. Vous pouvez consulter le nom de l’outil, l’étiquette du serveur et les arguments que le modèle a l’intention de passer :
{
"type": "mcp_approval_request",
"id": "<tool-call-id>",
"arguments": "{\"query\": \"what is Databricks\", \"count\": 5}",
"name": "you-search",
"server_label": "<server-label>",
"status": "completed"
}
Pour approuver l’appel de l’outil et poursuivre le cycle de l’agent, envoyez un mcp_approval_response dans le champ input avec l’historique complet de la conversation :
{
"type": "mcp_approval_response",
"id": "<tool-call-id>",
"approval_request_id": "<tool-call-id>",
"approve": true
}
Note
Les réponses en mode arrière-plan sont conservées dans la base de données pendant un maximum de 30 jours.
Outils pris en charge
Vous définissez des outils dans le tools tableau de votre requête. Chaque entrée spécifie un type et un objet de configuration avec la même clé. Par exemple, un outil Genie Space a "type": "genie_space" et un "genie_space": {...} objet. L’API prend en charge les types d’outils suivants :
| Type d’outil | Description | Scope |
|---|---|---|
genie_space |
Interroge un espace Génie pour répondre à des questions sur vos données. Paramètres : id, description. |
genie |
uc_function |
Appelle une fonction de catalogue Unity en tant qu’outil d’agent. Paramètres : name, description. |
unity-catalog |
uc_connection |
Se connecte à un serveur MCP externe via une connexion de catalogue Unity. Paramètres : name, description. Pour les connexions système gérées par Azure Databricks, définissez name sur un connecteur system_ai_agent_* (voir Step 3 (facultatif) : Connectez-vous à des services tiers avec des connexions gérées par le système). Remarque : les serveurs MCP personnalisés sur les applications ne sont pas encore pris en charge. |
unity-catalog |
app |
Appelle un endpoint d'Azure Databricks App. Paramètres : name, description. |
apps |
knowledge_assistant |
Appelle un point de terminaison de l'Assistant de Connaissance. Paramètres : knowledge_assistant_id, description. |
model-serving |
Paramètres pris en charge
Chaque requête adressée à l’API Superviseur accepte les paramètres suivants.
-
model: l’un des modèles pris en charge suivants. Modifiez ce champ pour changer de fournisseur sans modifier le reste de votre code.-
Claude-Haiku-4.5 (
databricks-claude-haiku-4-5) -
Claude-Opus-4.1 (
databricks-claude-opus-4-1) -
Claude-Opus-4.5 (
databricks-claude-opus-4-5) -
Claude-Opus-4.6 (
databricks-claude-opus-4-6) -
Claude-Sonnet-4 (
databricks-claude-sonnet-4) -
Claude-Sonnet-4.5 (
databricks-claude-sonnet-4-5) -
Claude-Sonnet-4.6 (
databricks-claude-sonnet-4-6)
-
Claude-Haiku-4.5 (
-
input: messages de conversation à envoyer. -
tools: définitions d’outils hébergées (genie_space, ,uc_functionknowledge_assistant, ).appuc_connection -
instructions: invite du système destinée à guider le comportement du superviseur. -
stream: défini surtruele flux de réponses. -
background: définisseztruepour exécuter la requête de manière asynchrone. Retourne un ID de réponse avec lequel vous interrogezresponses.retrieve(). Voir le mode Arrière-plan. -
trace_destination: objet facultatif aveccatalog_name,schema_nameettable_prefixchamps. Quand elle est définie, l’API Superviseur écrit une trace de la boucle de l’agent complet dans les tables de catalogue Unity spécifiées. Passez parextra_bodydans le client Python.
L’API ne prend pas en charge les paramètres d’inférence tels que temperature. Le serveur gère ces éléments en interne.
Limitations
L’API Superviseur présente les limitations suivantes :
- Runtime en mode arrière-plan : les requêtes en mode arrière-plan ont une durée d’exécution maximale de 30 minutes.
-
Appel de fonction côté client : seuls les outils hébergés sont pris en charge. Vous ne pouvez pas passer de définitions d’outils pour que le client s’exécute, et vous ne pouvez pas combiner d’outils hébergés
functionavec des outils côtéfunctionclient dans la même requête. -
Diffusion en continu en mode arrière-plan :
streametbackgroundne peut pas êtretruedans la même requête. - Exécution durable : la récupération automatique à partir d’échecs ou d’interruptions avec des garanties d’exécution exactement une fois pour la boucle de l’agent n’est pas prise en charge.
- Azure Databricks Apps OBO non pris en charge : l’autorisation au nom de l'utilisateur n’est pas prise en charge pour l’API du superviseur. Pour utiliser l’API Superviseur dans Azure Databricks Apps, utilisez autorisation du système et accordez des autorisations pour vos outils.