與編碼代理整合

這很重要

這項功能位於 測試版 (Beta) 中。 帳號管理員可從帳號主控台 預覽頁面控制 此功能的存取權限。 請參見 管理Azure Databricks預覽

透過 Azure Databricks 編碼代理程式整合,您可以管理像 Cursor、Gemini CLI 和 Codex CLI 等編碼代理程式的存取與使用情況。 它建立在 Unity AI Gateway 之上,提供速率限制、使用追蹤及推論表,適用於你的程式工具。

Features

  • 存取:直接存取各種編碼工具與模型,全部集中於一張發票之下。
  • 可觀察性:一個統一的儀表板,追蹤所有程式工具的使用、支出與指標。
  • 統一治理:管理員可透過 Unity AI Gateway 直接管理模型權限與速率限制。

需求

支援的代理程式

支援以下編碼代理程式,以及 AI Gateway UI 中列出的其他整合功能:

設定

Cursor

要將游標配置為使用 Unity AI Gateway 端點:

步驟 1:設定基礎 URL 與 API 金鑰

  1. 打開游標並導覽到 設定>、游標設定、模型>>API 金鑰

  2. 啟用 Override OpenAI 基礎網址 並輸入網址:

    https://<ai-gateway-url>/cursor/v1
    

    用你的 Unity AI Gateway 端點網址取代 <ai-gateway-url>

  3. 將你的Azure Databricks個人存取權杖貼到 OpenAI API Key欄位。

步驟二:新增自訂模型

  1. 在游標設定中點擊 + 新增自訂模型
  2. 新增你的 Unity AI Gateway 端點名稱並啟用切換開關。

備註

目前僅支援 Azure Databricks 建立的基礎模型端點。

步驟三:測試整合

  1. 開啟詢問模式,使用Cmd+L(macOS)或Ctrl+L(Windows/Linux)選擇你的型號。
  2. 傳達訊息。 所有請求現在都經過 Azure Databricks。

Codex CLI

步驟 1:安裝或更新 Codex CLI

安裝或更新至 Codex CLI 版本 0.118 或更新:

npm install -g @openai/codex@latest

步驟 2:建立或更新 Codex 設定檔

請於以下 ~/.codex/config.toml處建立或編輯Codex配置檔:

profile = "default"

[profiles.default]
model_provider = "Databricks"

[model_providers.Databricks]
name = "Databricks :re[ai-gateway]"
base_url = "<ai-gateway-url>/codex/v1"
wire_api = "responses"

[model_providers.Databricks.auth]
command = "sh"
args = ["-c", "databricks auth token --host <workspace-url> --output json | jq -r '.access_token'"]
timeout_ms = 5000
refresh_interval_ms = 1800000

取代下列項目:

  • <ai-gateway-url>替換為你的 Unity AI Gateway 端點 URLbase_url
  • <workspace-url>args 欄位中填入你的 Azure Databricks 工作區網址。

步驟 3:驗證你的工作區

備註

這只需要完成一次。 你不需要每次啟動 Codex 都重新認證。

首先,確保你安裝了 Azure Databricks CLI。 如需指示,請參閱 安裝或更新 Databricks CLI

然後驗證:

databricks auth login --host <workspace-url>

<workspace-url> 替換成你的 Azure Databricks 工作區網址。

步驟四:開始編寫法典

codex

要更改模型,請使用 /model

Gemini CLI

步驟 1:安裝最新版本的 Gemini CLI

npm install -g @google/gemini-cli@nightly

步驟 2:設定環境變數

建立一個檔案 ~/.gemini/.env 並新增以下設定。 更多細節請參閱 Gemini CLI 認證文件

GEMINI_MODEL=databricks-gemini-2-5-flash
GOOGLE_GEMINI_BASE_URL=https://<ai-gateway-url>/gemini
GEMINI_API_KEY_AUTH_MECHANISM="bearer"
GEMINI_API_KEY=<databricks_pat_token>

<ai-gateway-url>替換為你的 Unity AI Gateway 端點網址,並將<databricks_pat_token>替換為你的個人存取權杖。

Dashboard

一旦透過 Unity AI Gateway 追蹤程式碼代理的使用狀況,你就能在預設的儀表板中查看並監控你的系統指標。

要進入儀表板,請從 AI Gateway 頁面選擇 「檢視儀表板 」。 這會建立一個預先設定的儀表板,並附上圖表以供程式工具使用。

檢視儀表板按鈕

編碼代理儀表板

建立 OpenTelemetry 資料收集

Azure Databricks 支援將 OpenTelemetry 的指標與日誌從編碼代理匯出至 Unity Catalog 管理的 Delta 表格。 所有指標皆為使用 OpenTelemetry 標準指標協定匯出的時間序列資料,日誌則使用 OpenTelemetry 日誌協定匯出。

需求

步驟 1:在 Unity 目錄中建立 OpenTelemetry 表格

建立 Unity Catalog 管理的表格,預先配置 OpenTelemetry 的指標和日誌架構。

指標表

CREATE TABLE <catalog>.<schema>.<table_prefix>_otel_metrics (
  name STRING,
  description STRING,
  unit STRING,
  metric_type STRING,
  gauge STRUCT<
    start_time_unix_nano: LONG,
    time_unix_nano: LONG,
    value: DOUBLE,
    exemplars: ARRAY<STRUCT<
      time_unix_nano: LONG,
      value: DOUBLE,
      span_id: STRING,
      trace_id: STRING,
      filtered_attributes: MAP<STRING, STRING>
    >>,
    attributes: MAP<STRING, STRING>,
    flags: INT
  >,
  sum STRUCT<
    start_time_unix_nano: LONG,
    time_unix_nano: LONG,
    value: DOUBLE,
    exemplars: ARRAY<STRUCT<
      time_unix_nano: LONG,
      value: DOUBLE,
      span_id: STRING,
      trace_id: STRING,
      filtered_attributes: MAP<STRING, STRING>
    >>,
    attributes: MAP<STRING, STRING>,
    flags: INT,
    aggregation_temporality: STRING,
    is_monotonic: BOOLEAN
  >,
  histogram STRUCT<
    start_time_unix_nano: LONG,
    time_unix_nano: LONG,
    count: LONG,
    sum: DOUBLE,
    bucket_counts: ARRAY<LONG>,
    explicit_bounds: ARRAY<DOUBLE>,
    exemplars: ARRAY<STRUCT<
      time_unix_nano: LONG,
      value: DOUBLE,
      span_id: STRING,
      trace_id: STRING,
      filtered_attributes: MAP<STRING, STRING>
    >>,
    attributes: MAP<STRING, STRING>,
    flags: INT,
    min: DOUBLE,
    max: DOUBLE,
    aggregation_temporality: STRING
  >,
  exponential_histogram STRUCT<
    attributes: MAP<STRING, STRING>,
    start_time_unix_nano: LONG,
    time_unix_nano: LONG,
    count: LONG,
    sum: DOUBLE,
    scale: INT,
    zero_count: LONG,
    positive_bucket: STRUCT<
      offset: INT,
      bucket_counts: ARRAY<LONG>
    >,
    negative_bucket: STRUCT<
      offset: INT,
      bucket_counts: ARRAY<LONG>
    >,
    flags: INT,
    exemplars: ARRAY<STRUCT<
      time_unix_nano: LONG,
      value: DOUBLE,
      span_id: STRING,
      trace_id: STRING,
      filtered_attributes: MAP<STRING, STRING>
    >>,
    min: DOUBLE,
    max: DOUBLE,
    zero_threshold: DOUBLE,
    aggregation_temporality: STRING
  >,
  summary STRUCT<
    start_time_unix_nano: LONG,
    time_unix_nano: LONG,
    count: LONG,
    sum: DOUBLE,
    quantile_values: ARRAY<STRUCT<
      quantile: DOUBLE,
      value: DOUBLE
    >>,
    attributes: MAP<STRING, STRING>,
    flags: INT
  >,
  metadata MAP<STRING, STRING>,
  resource STRUCT<
    attributes: MAP<STRING, STRING>,
    dropped_attributes_count: INT
  >,
  resource_schema_url STRING,
  instrumentation_scope STRUCT<
    name: STRING,
    version: STRING,
    attributes: MAP<STRING, STRING>,
    dropped_attributes_count: INT
  >,
  metric_schema_url STRING
) USING DELTA
TBLPROPERTIES (
  'otel.schemaVersion' = 'v1'
)

日誌表格

CREATE TABLE <catalog>.<schema>.<table_prefix>_otel_logs (
  event_name STRING,
  trace_id STRING,
  span_id STRING,
  time_unix_nano LONG,
  observed_time_unix_nano LONG,
  severity_number STRING,
  severity_text STRING,
  body STRING,
  attributes MAP<STRING, STRING>,
  dropped_attributes_count INT,
  flags INT,
  resource STRUCT<
    attributes: MAP<STRING, STRING>,
    dropped_attributes_count: INT
  >,
  resource_schema_url STRING,
  instrumentation_scope STRUCT<
    name: STRING,
    version: STRING,
    attributes: MAP<STRING, STRING>,
    dropped_attributes_count: INT
  >,
  log_schema_url STRING
) USING DELTA
TBLPROPERTIES (
  'otel.schemaVersion' = 'v1'
)

步驟 2:更新你的代碼代理中的環境變數

在任何啟用 OpenTelemetry 指標支援的編碼代理程式中,請設定以下環境變數。

{
  "OTEL_METRICS_EXPORTER": "otlp",
  "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/protobuf",
  "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": "https://<workspace-url>/api/2.0/otel/v1/metrics",
  "OTEL_EXPORTER_OTLP_METRICS_HEADERS": "content-type=application/x-protobuf,Authorization=Bearer <databricks_pat_token>,X-Databricks-UC-Table-Name=<catalog>.<schema>.<table_prefix>_otel_metrics",
  "OTEL_METRIC_EXPORT_INTERVAL": "10000",
  "OTEL_LOGS_EXPORTER": "otlp",
  "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/protobuf",
  "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "https://<workspace-url>/api/2.0/otel/v1/logs",
  "OTEL_EXPORTER_OTLP_LOGS_HEADERS": "content-type=application/x-protobuf,Authorization=Bearer <databricks_pat_token>,X-Databricks-UC-Table-Name=<catalog>.<schema>.<table_prefix>_otel_logs",
  "OTEL_LOGS_EXPORT_INTERVAL": "5000"
}

步驟三:執行你的編碼代理程式。

你的資料應該會在 5 分鐘內傳送到 Unity 目錄資料表。

後續步驟