Conectar agentes a serviços externos
Visualização
Esse recurso está em Public Preview.
Conecte seus agentesAI a aplicativos externos como Slack, Google Agenda ou qualquer serviço com uma API. O Databricks oferece diversas abordagens, dependendo se o serviço externo possui um servidor MCP, se você precisa de autenticação por usuário ou se prefere chamar APIs diretamente do código do agente. Todas as abordagens dependem de uma conexão HTTP Unity Catalog para gerenciar credenciais com segurança e controlar o acesso a serviços externos.
Abordagem | Caso de uso recomendado |
|---|---|
Utilize esta abordagem para serviços que publicam um servidor MCP. Ele oferece descoberta automática de ferramentas e funciona com SDKs padrão. | |
Utilize essa abordagem para integrações com o Google Drive ou SharePoint. Databricks gerencia as credenciais OAuth , portanto, não é necessário registrar o aplicativo. | |
Utilize essa abordagem para fazer chamadas diretas à API REST a partir do código do agente, usando o SDK do cliente do serviço externo. | |
Use esta abordagem para definições de ferramentas baseadas em SQL que envolvem a função |
Requisitos
- Uma conexão HTTP do Unity Catalog para sua aplicação externa. As conexões do Unity Catalog fornecem gerenciamento de credenciais seguro e controlado, além de habilitarem múltiplos métodos de autenticação, incluindo autenticação OAuth 2.0 de usuário para máquina e de máquina para máquina.
Servidores MCP externos
Se o serviço externo tiver um servidor MCP disponível, a Databricks recomenda a conexão por meio de servidores MCP externos. Os servidores MCP oferecem descoberta automática de ferramentas, integração simplificada e autenticação por usuário. Consulte a seção "Usar servidores MCP externos" para obter informações sobre métodos de instalação, uso programático e detalhes de autenticação.
Adicione um servidor MCP externo ao seu agente.
Depois de registrar o servidor MCP externo como uma conexão Unity Catalog , conecte seu agente a ele usando o URL de gerenciamento do MCP: https://<workspace-hostname>/api/2.0/mcp/external/{connection_name}. Substitua <connection-name> pelo nome da sua conexão Unity Catalog .
- OpenAI Agents SDK (Apps)
- LangGraph (Apps)
- Model Serving
from agents import Agent, Runner
from databricks.sdk import WorkspaceClient
from databricks_openai.agents import McpServer
workspace_client = WorkspaceClient()
host = workspace_client.config.host
async with McpServer(
url=f"{host}/api/2.0/mcp/external/<connection-name>",
name="external-service",
workspace_client=workspace_client,
) as external_server:
agent = Agent(
name="Connected agent",
instructions="You are a helpful assistant with access to external services.",
model="databricks-claude-sonnet-4-5",
mcp_servers=[external_server],
)
result = await Runner.run(agent, "Send a Slack message to the team about the deployment")
print(result.final_output)
Conceda ao aplicativo acesso à conexão Unity Catalog em databricks.yml:
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_langchain import ChatDatabricks, DatabricksMCPServer, DatabricksMultiServerMCPClient
from langgraph.prebuilt import create_react_agent
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMultiServerMCPClient([
DatabricksMCPServer(
name="external-service",
url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
),
])
async with mcp_client:
tools = await mcp_client.get_tools()
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=tools,
)
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Send a Slack message to the team about the deployment"}]}
)
print(result["messages"][-1].content)
Conceda ao aplicativo acesso à conexão Unity Catalog em databricks.yml:
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMCPClient(
server_url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
)
tools = mcp_client.list_tools()
mlflow.pyfunc.log_model(
"agent",
python_model=my_agent,
resources=mcp_client.get_databricks_resources(),
)
Para implantar o agente, consulte implantado um agente para aplicações generativas AI (servindo modelo). Para obter detalhes sobre agentes de registro com recursos MCP, consulte Usar Databricks para gerenciar servidores MCP.
OAuth
Databricks oferece gerenciamento de fluxos OAuth para provedores de ferramentas API selecionados. Você não precisa registrar seu próprio aplicativo OAuth nem gerenciar credenciais. Databricks recomenda o gerenciamento OAuth para desenvolvimento e testes. Se os casos de uso em produção exigirem a geração de credenciais OAuth personalizadas, consulte a documentação dos provedores para obter mais informações.
As seguintes integrações utilizam credenciais OAuth Databricks-gerenciar armazenadas com segurança no backend.
Provedor | Notas de configuração | Escopos suportados | Descrição |
|---|---|---|---|
API do Google Drive | Nenhuma |
| Acesso somente leitura aos arquivos do Google Drive. |
API do SharePoint | Nenhuma |
| Acesso somente leitura aos sites do SharePoint. |
Para configurar o gerenciamento OAuth, crie uma conexão HTTP com o tipo de autenticação OAuth Usuário para Máquina por Usuário" e selecione seu provedor no menu suspenso "ProvedorOAuth . Para obter instruções detalhadas sobre os passos, consulte Instalar um servidor MCP externo.
Cada usuário é solicitado a autorizar o acesso junto ao provedor no primeiro uso.
Caso necessário, adicione à lista de permissões os seguintes URIs de redirecionamento usados pelo gerenciamento OAuth:
Nuvem | URI de redirecionamento |
|---|---|
AWS |
|
Azure |
|
GCP |
|
endpoint proxy de conexões UC
Utilize o endpoint proxy de conexões do Unity Catalog com o SDK de cliente do serviço externo para chamar APIs REST diretamente do código do agente. Aponte o URL base do SDK para o endpoint do proxy e use seus tokens Databricks como key da API . O Databricks autentica a solicitação e injeta automaticamente as credenciais do serviço externo a partir da conexão do Unity Catalog. Seu código nunca manipula diretamente os tokens do serviço externo.
Permissões necessárias: USE CONNECTION no objeto de conexão.
- OpenAI
- Slack
- Generic HTTP
Use DatabricksOpenAI para encaminhar chamadas para OpenAI externo através do proxy de conexões Unity Catalog . Primeiro, crie uma conexão HTTP com Unity Catalog usando sua key API OpenAI armazenada como um segredoDatabricks:
CREATE CONNECTION openai_connection TYPE HTTP
OPTIONS (
host 'https://api.openai.com',
base_path '/v1',
bearer_token secret ('<secret-scope>', '<secret-key>')
);
Em seguida, instale o pacote databricks-openai e use o URL do proxy e o cliente workspace no código do seu agente:
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)
Configure o SDK do Slack para rotear as conexões através do proxy Unity Catalog . Crie uma conexão HTTP Unity Catalog com o host https://slack.com e o caminho base /api e, em seguida, use a URL do proxy como a URL base 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"])
Para serviços sem um SDK dedicado, use a biblioteca requests com a URL do proxy diretamente:
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"},
)
Ferramentas de função UC com conexões HTTP
A Databricks recomenda o uso de servidores MCP ou do proxy de conexões UC para novas integrações. As ferramentas de função UC com http_request continuam a ser suportadas, mas já não são a abordagem recomendada.
Você pode criar uma função Unity Catalog que encapsula http_request() para chamar um serviço externo. Essa abordagem é útil para definições de ferramentas baseadas em SQL. Consulte Criar ferramentas de agente AI usando funções Unity Catalog para obter detalhes sobre como criar ferramentas de função UC.
O exemplo a seguir cria uma ferramenta de função Unity Catalog que publica uma mensagem no 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
Consulte CREATE FUNCTION (SQL e Python).
O acesso SQL com http_request está bloqueado para o tipo de conexão Usuário para máquina por usuário. Utilize o SDK Python Databricks em seu lugar.
Exemplo de notebook
Conectar um agente ao Slack
Consulte Conectar um agente do AI ao Slack.
Ferramentas de conexão externa
O seguinte Notebook demonstra a criação de ferramentas do agente AI que se conectam ao Slack, OpenAI e Azure AI search.
Ferramenta de agente de mensagens do Slack
Microsoft gráfico API ferramenta de agente
Ferramenta de agente do Azure AI Search
Limitações
- As conexões MCP externas não suportam conectividade privada com o recurso em sua VPC usando o serviço privado Connect. Se seus agentes AI precisarem se conectar ao recurso em sua VPC, entre em contato com sua equipe de suporte.