Pular para o conteúdo principal

Chamar APIs REST diretamente do código do agente

Use o Endpoint proxy de conexões do Unity Catalog com o SDK de cliente próprio do serviço externo para chamar APIs REST diretamente do código do agente. Aponte a URL base do SDK para o Endpoint proxy e use seu token Databricks como a chave da API. O Databricks autentica a solicitação e injeta automaticamente as credenciais do serviço externo da conexão do Unity Catalog. Seu código não lida diretamente com os tokens do serviço externo.

Requisitos

  • Uma conexão HTTP do Unity Catalog para o serviço externo. O endpoint de proxy usa essa conexão para autenticar e injetar as credenciais do serviço.
  • USE CONNECTION no objeto de conexão.

OpenAI

Use DatabricksOpenAI para rotear chamadas para o OpenAI externo por meio do proxy de conexões do Unity Catalog. Primeiro, crie uma conexão HTTP do Unity Catalog usando sua chave de API do OpenAI armazenada como um segredo do Databricks:

SQL
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 a URL de proxy e o cliente do workspace no código do seu agente:

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

Configure o SDK do Slack para rotear através do proxy de conexões do Unity Catalog. Crie uma conexão HTTP do Unity Catalog com host https://slack.com e caminho base /api; em seguida, use a URL de proxy como a URL base do 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 genérico

Para serviços sem um SDK dedicado, use a biblioteca requests diretamente com a URL de 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;},
)

Para obter detalhes sobre o endpoint de proxy, métodos de autenticação compatíveis e configuração de conexão, consulte Encaminhar solicitações por meio do proxy de conexão HTTP.

Envolva http_request() em uma função do Unity Catalog

nota

O Databricks recomenda as conexões proxy mostradas acima ou Serviços de MCP para conectar agentes a serviços externos. As ferramentas de função do Unity Catalog que envolvem http_request continuam com suporte, mas não são mais a abordagem recomendada.

Você também pode criar uma função do Unity Catalog que envolve http_request() para chamar serviços externos, o que é útil para definições de ferramentas baseadas em SQL. A função usa a mesma conexão HTTP do Unity Catalog que a abordagem de proxy, referenciada pelo nome no parâmetro conn.

O exemplo a seguir cria uma ferramenta de função do Unity Catalog que publica uma mensagem no Slack:

SQL
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, Python, Scala e Java).

nota

O acesso a SQL com http_request está bloqueado para os tipos de conexão User-to-Machine Per User e Dynamic Client Registration. Em vez disso, use o Databricks SDK para Python.