API do Supervisor (Beta)
Beta
Este recurso está em versão Beta. Os administradores da conta podem controlar o acesso a este recurso na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.
A API Supervisor simplifica a criação de agentes personalizados no Databricks , com suporte para modo em segundo plano para tarefas de longa duração. Você define o modelo, as ferramentas e as instruções em uma solicitação para um endpoint compatível com OpenResponses(POST /mlflow/v1/responses), e Databricks executa o loop do agente para você: chamando repetidamente o modelo, selecionando e executando ferramentas e sintetizando uma resposta final.
Existem três abordagens para criar um agente de chamada de ferramentas personalizado no Databricks:
- Agente Supervisor de Tijolos (recomendado): Totalmente declarativo com otimização de feedback humano para a mais alta qualidade.
- API do Supervisor : Crie um agente personalizado programaticamente — escolha modelos em tempo de execução, controle quais ferramentas usar por solicitação ou itere durante o desenvolvimento. Também é a escolha certa quando você precisa de controle sobre a seleção do modelo, ao mesmo tempo que delega o gerenciamento do loop do agente ao Databricks.
- APIs unificadas ou nativas do AI Gateway : Crie seu próprio loop de agente. O Databricks fornece apenas a camada de inferência LLM. Use APIs unificadas sempre que possível para permitir a troca de modelos ou APIs nativas específicas do provedor (
/openai,/anthropic,/gemini) ao migrar código existente para Databricks ou usar recurso específico do provedor.
Requisitos
-
O Unity AI Gateway para agentes e LLMs está habilitado para sua account. Veja as prévias do Gerenciador Databricks.
- Como a execução API Supervisor ocorre por meio do Unity AI Gateway, recursos AI Gateway, como tabelas de inferência, limites de taxa e mecanismos de fallback, são aplicáveis. O recurso de acompanhamento de uso não é suportado nesta versão beta.
-
Armazenar rastreamentos do OpenTelemetry no Unity Catalog está habilitado para sua account. Veja as prévias do Gerenciador Databricks.
- Armazena os rastros do loop do agente API Supervisor nas tabelas Unity Catalog .
-
Um workspace Databricks em uma região compatível.
-
Unity Catalog está habilitado para seu workspace. Consulte Ativar um workspace para Unity Catalog.
-
As ferramentas que você passar (Genie Spaces, funções do Unity Catalog, servidores MCP, assistentes de conhecimento, aplicativos) já devem estar configuradas e acessíveis.
-
O pacote
databricks-openaifoi instalado:pip install databricks-openai
o passo 1: Criar uma chamada LLM de turno único
Comece com uma chamada básica, sem usar nenhuma ferramenta. O cliente DatabricksOpenAI configura automaticamente o URL base e a autenticação para seu workspace:
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)
o passo 2: Adicionar ferramentas hospedadas para executar o loop do agente
Ao incluir ferramentas na solicitação, Databricks gerencia um ciclo de várias etapas em seu nome: o modelo decide quais ferramentas chamar, Databricks as executa, envia os resultados de volta para o modelo e repete o processo até que o modelo produza uma resposta final.
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)
o passo 3 (Opcional): Conecte-se a serviço de terceiros com sistema de gerenciamento de conexões
Databricks oferece conexões de gerenciamento de sistema para serviços populares de terceiros, como Google Drive, GitHub, Atlassian e SharePoint. Essas conexões são uma alternativa rápida à configuração de seu próprio servidor MCP externo — você ainda pode usar o tipo de ferramenta uc_connection para se conectar a qualquer servidor MCP externo que você mesmo configurou.
As conexões de gerenciamento do sistema exigem que os Conectores de Terceiros para Agentes (versão beta) estejam habilitados em seu workspace. Veja as prévias do Gerenciador Databricks.
Os seguintes conectores são suportados:
Conector | Descrição |
|---|---|
| Pesquise e leia arquivos do Google Drive. |
| Acesse repositórios, problemas e solicitações de pull do GitHub. |
| Pesquisa e gerenciamento de recurso Atlassian (Jira, Confluence). |
| Pesquise e leia arquivos do SharePoint. |
Passe um conector na matriz tools usando o tipo de ferramenta uc_connection com o campo name definido com o nome do conector:
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"
}
}
],
)
Autenticação de usuário para máquina (U2M)
Cada usuário se autentica individualmente. Os tokens OAuth não são compartilhados entre usuários. Na primeira requisição que utiliza um conector para o qual o usuário não foi autenticado, a resposta é concluída com status: "failed" e um erro oauth contendo uma URL de login:
{
"status": "failed",
"error": {
"code": "oauth",
"message": "Failed request to <connector>. Please login first at <login-url>."
}
}
Abra o URL em um navegador, complete o fluxo OAuth e, em seguida, execute novamente a mesma solicitação.
o passo 4: Ativar rastreamento
Passe um trace_destination no corpo da solicitação para enviar rastreamentos do loop do agente para as tabelas Unity Catalog . Cada solicitação gera um rastreamento que captura a sequência completa de chamadas de modelo e execuções de ferramentas. Se você não definir trace_destination, nenhum rastreamento será gravado. Para obter detalhes sobre a configuração, consulte Armazenar rastreamentos do OpenTelemetry no Unity Catalog.
Usando o cliente Python databricks-openai , passe-o por meio de 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>"
}
}
)
Para também retornar o rastreamento diretamente na resposta da API, passe "databricks_options": {"return_trace": True} em extra_body.
Você também pode usar o rastreamento distribuído do MLflow para combinar rastreamentos do código do seu aplicativo e do loop do agente da API do Supervisor em um único rastreamento de ponta a ponta. Propagar cabeçalhos de contexto de rastreamento usando o campo 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,
)
Modo de fundo
O modo em segundo plano permite a execução de fluxos de trabalho de agentes de longa duração que envolvem múltiplas chamadas de ferramentas e raciocínio complexo sem esperar que elas terminem de forma síncrona. Envie sua solicitação com background=True, receba um ID de resposta imediatamente e aguarde o resultado quando estiver pronto. Isso é especialmente útil para agentes que consultam múltiplas fontes de dados ou encadeiam diversas ferramentas em uma única solicitação.
Criar uma solicitação em segundo plano
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"
Enquete para o resultado
Use responses.retrieve() para verificar o estado até que ele atinja um estado terminal:
from time import sleep
while response.status in {"queued", "in_progress"}:
sleep(2)
response = client.responses.retrieve(response.id)
print(response.output_text)
Modo de fundo com MCP
Por motivos de segurança, a API do Supervisor exige aprovação explícita do usuário antes de executar qualquer chamada de ferramenta MCP em modo de segundo plano. Quando o loop do agente seleciona uma ferramenta MCP, a resposta é concluída com um mcp_approval_request. Você pode revisar o nome da ferramenta, o rótulo do servidor e os argumentos que o modelo pretende passar:
{
"type": "mcp_approval_request",
"id": "<tool-call-id>",
"arguments": "{\"query\": \"what is Databricks\", \"count\": 5}",
"name": "you-search",
"server_label": "<server-label>",
"status": "completed"
}
Para aprovar a chamada da ferramenta e continuar o loop do agente, envie um mcp_approval_response de volta no campo input com o histórico completo da conversa:
{
"type": "mcp_approval_response",
"id": "<tool-call-id>",
"approval_request_id": "<tool-call-id>",
"approve": true
}
As respostas em modo de segundo plano são mantidas no banco de dados por um período máximo de 30 dias.
Ferramentas suportadas
Você define as ferramentas na matriz tools da sua solicitação. Cada entrada especifica um type e um objeto de configuração com a mesma key. Por exemplo, uma ferramenta Genie Space tem um objeto "type": "genie_space" e um objeto "genie_space": {...} . A API suporta os seguintes tipos de ferramentas:
Tipo de ferramenta | Descrição | Escopo |
|---|---|---|
| Consulta um Genie Space para obter respostas a perguntas sobre seus dados. Parâmetros: |
|
| Chama uma funçãoUnity Catalog como uma ferramenta de agente. Parâmetros: |
|
| Conecta-se a um servidor MCP externo através de uma conexão Unity Catalog . Parâmetros: |
|
| Chama um endpoint de um aplicativo Databricks. Parâmetros: |
|
| Chama um endpoint do Assistente de Conhecimento . Parâmetros: |
|
Parâmetros suportados
Cada solicitação à API do Supervisor aceita os seguintes parâmetros.
-
model: um dos seguintes modelos suportados. Altere este campo para trocar de provedor sem modificar o restante do seu código.- 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) - Soneto de Claude-4 (
databricks-claude-sonnet-4) - Claude-Soneto-4.5 (
databricks-claude-sonnet-4-5) - Claude-Soneto-4.6 (
databricks-claude-sonnet-4-6)
- Claude-Haiku-4.5 (
-
GPT-5 (
databricks-gpt-5) -
GPT-5.1 (
databricks-gpt-5-1) -
GPT-5.2 (
databricks-gpt-5-2) -
GPT-5.4 (
databricks-gpt-5-4) -
input: as mensagens de conversa a serem enviadas. -
tools: definições de ferramentas hospedadas (genie_space,uc_function,knowledge_assistant,app,uc_connection). -
instructions: um comando do sistema para orientar o comportamento do supervisor. -
stream: definido comotruepara respostas de transmissão. -
backgroundDefina comotruepara executar a solicitação de forma assíncrona. Retorna um ID de resposta que você consulta comresponses.retrieve(). Consulte o modo em segundo plano. -
trace_destination: objeto opcional com camposcatalog_name,schema_nameetable_prefix. Quando configurada, a API do Supervisor grava um registro de todo o ciclo do agente nas tabelas especificadas Unity Catalog . Passe viaextra_bodyno cliente Python.
A API não suporta parâmetros de inferência como temperature. O servidor gerencia isso internamente.
Limitações
A API do Supervisor possui as seguintes limitações:
- Tempo de execução em segundo plano : As solicitações em segundo plano têm um tempo máximo de execução de 30 minutos.
- Chamada de funções no lado do cliente : Somente ferramentas hospedadas são suportadas. Você não pode passar definições de ferramentas
functionpara o cliente executar e não pode misturar ferramentas hospedadas com ferramentasfunctiondo lado do cliente na mesma solicitação. - transmissão em modo de fundo :
streamebackgroundnão podem ser ambostruena mesma solicitação. - Execução durável : A recuperação automática de falhas ou interrupções com garantias de execução exatamente uma vez para o loop do agente não é suportada.
- Databricks Apps OBO não são suportados : a autorização em nome do usuário não é suportada para a API do Supervisor. Para usar a API do Supervisor em Databricks Apps, utilize a autorização do sistema e conceda permissões para suas ferramentas.