Wywoływanie API REST bezpośrednio z kodu agenta

Użyj punktu końcowego proxy połączeń Unity Catalog wraz z własnym klientem SDK usługi zewnętrznej, aby bezpośrednio z kodu agenta korzystać z interfejsów API REST. Wskaż podstawowy adres URL zestawu SDK na punkt końcowy serwera proxy i użyj swojego tokenu Azure Databricks jako klucza API. Azure Databricks uwierzytelnia żądanie i automatycznie wprowadza dane uwierzytelniające zewnętrznej usługi z połączenia Unity Catalog. Kod nie obsługuje tokenów usługi zewnętrznej bezpośrednio.

Requirements

  • Połączenie HTTP w Unity Catalog dla usługi zewnętrznej. Punkt końcowy proxy wykorzystuje to połączenie do uwierzytelniania i wstrzykiwania poświadczeń usługi.
  • USE CONNECTION na obiekcie połączenia.

OpenAI

Użyj DatabricksOpenAI do przekierowywania wywołań do zewnętrznego OpenAI za pośrednictwem proxy połączeń Unity Catalog. Najpierw utwórz połączenie HTTP Unity Catalog przy użyciu klucza interfejsu API OpenAI przechowywanego jako sekret Databricks:\

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

Następnie zainstaluj databricks-openai pakiet i użyj adresu URL serwera proxy i klienta obszaru roboczego w kodzie agenta:

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)

Slack

Skonfiguruj SDK Slack, aby kierować przez serwer proxy połączeń w katalogu Unity. Utwórz połączenie HTTP katalogu Unity z hostem https://slack.com i podstawową ścieżką /api, a następnie użyj adresu URL serwera proxy jako bazowego adresu URL 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"])

Standardowe HTTP

W przypadku usług bez dedykowanego zestawu SDK użyj requests biblioteki bezpośrednio z adresem URL serwera proxy:

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"},
)

Aby uzyskać szczegółowe informacje na temat punktu końcowego serwera proxy, obsługiwanych metod uwierzytelniania i konfiguracji połączenia, zobacz Przekazywanie żądań za pośrednictwem serwera proxy połączenia HTTP.

Umieść http_request() w funkcji Unity Catalog

Note

Azure Databricks zaleca pokazane powyżej proxy połączeń lub usługi MCP do łączenia agentów z usługami zewnętrznymi. Narzędzia funkcji Unity Catalog, które opakowują element http_request, pozostają obsługiwane, ale nie są już zalecanym podejściem.

Możesz także utworzyć funkcję Unity Catalog, która opakowuje http_request(), aby wywołać za jej pomocą usługi zewnętrzne, co jest przydatne w definicjach narzędzi opartych na języku SQL. Funkcja używa tego samego połączenia HTTP usługi Unity Catalog co podejście proxy, do którego odwołuje się nazwa w parametrze conn.

Poniższy przykład tworzy funkcję katalogu Unity, która publikuje komunikat w usłudze 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

Zobacz CREATE FUNCTION (SQL, Python, Scala i Java).

Note

Dostęp SQL z http_request jest blokowany dla typów połączeń User-to-Machine Per User i Dynamic Client Registration. Zamiast tego użyj zestawu SDK Python Azure Databricks.