透過 Azure Databricks 編碼代理整合,你可以透過 Unity AI Gateway 中的模型服務,路由來自 Cursor、Gemini CLI 和 Codex CLI 等編碼代理的流量。 此系統提供速率限制、使用追蹤及推論表,所有控制皆在模型服務、使用者或群組層級設定。
Features
- 存取:直接存取各種編碼工具與模型,全部集中於一張發票之下。
- 可觀察性:一個統一的儀表板,追蹤所有程式工具的使用、支出與指標。
- 統一治理:管理員可透過 Unity AI Gateway 在模型服務、使用者或群組層級管理模型權限與速率限制。
Requirements
- 位於Unity AI Gateway 支援區域的 Azure Databricks 工作區。
- 已為您的工作區啟用了 Unity Catalog。 請參閱 為 Unity Catalog 啟用工作區。
設定
最快的入門方式是使用 ucode,這是 Azure Databricks 提供的 CLI,可透過單一指令安裝、驗證身分,並為受支援的程式碼代理設定 Unity AI Gateway。
建議使用 ucode。
ucode (Unity AI Gateway Coding CLI)是針對 Unity AI Gateway 執行編碼代理的單一入口點。 它會處理 OAuth,撰寫每個代理的設定檔,並將流量路由你註冊的任何 LLM 或 MCP 伺服器。 支援代理:
要查看所有支援的編碼代理,請執行 ucode --help。
步驟 1:安裝 ucode
uv tool install git+https://github.com/databricks/ucode
需要 Python 3.12 或更新版本,且需具備 uv。
步驟二:建立編碼代理程式
執行你想要的代理程式。 首次啟動時,ucode 會自動提示你輸入Azure Databricks工作區的 URL,並自動驗證並寫入代理的設定檔。 後續的發射會直接交給代理人。
ucode codex # OpenAI Codex
ucode gemini # Gemini CLI
ucode opencode # OpenCode
ucode copilot # GitHub Copilot CLI
ucode pi # Pi
ucode 將代理人名稱後的旗標傳遞給底層工具,例如:
ucode codex --full-auto
要同時配置多個編碼代理,請執行:
ucode configure
若要向支援 MCP 的代理程式註冊 Azure Databricks MCP 伺服器(Unity Catalog 函式、AI Search、SQL 倉儲,以及探索到的外部連線):
ucode configure mcp
要查看過去 7 天的 Unity AI Gateway 使用摘要:
ucode usage
如需完整的指令參考資料,請執行:
ucode --help
Dashboard
在透過 Unity AI Gateway 追蹤程式代理使用後,你可以在內建儀表板中查看並監控你的指標。
若要開啟儀表板,請在 Unity AI Gateway 頁面的右上角按一下 Govern,然後按一下 Usage Dashboard。 內建的使用情況儀表板包含一個 Coding Agents 分頁,其中提供用於顯示編碼工具使用情況的圖表。
手動設定
如果您偏好自行設定代理,請遵循以下說明:
游標 IDE
要設定游標以使用Unity AI Gateway中的模型服務:
步驟 1:設定基礎 URL 與 API 金鑰
打開游標並導覽到 設定>、游標設定、模型>、>API 金鑰。
啟用 Override OpenAI 基礎網址 並輸入網址:
https://<workspace-url>/ai-gateway/cursor/v1將
<workspace-url>替換成你的 Azure Databricks 工作區網址。將你的 Azure Databricks 個人存取權杖貼到 OpenAI API 金鑰 欄位。
步驟二:新增自訂模型
- 在游標設定中點擊 + 新增自訂模型 。
- 新增你的型號服務名稱(例如
system.ai.claude-opus-4-6),並啟用切換開關。
Note
目前僅支援 Azure Databricks 提供的模型服務。
步驟三:測試整合
- 開啟提問模式
Cmd+L(macOS)或Ctrl+L(Windows/Linux),然後選擇你的型號。 - 傳達訊息。 所有請求現在都經過 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 = "<workspace-url>/ai-gateway/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
將 <workspace-url> 替換成你的 Azure Databricks 工作區網址。
步驟 3:驗證你的工作區
Note
這個動作只需要做一次。 你不需要每次啟動 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://<workspace-url>/ai-gateway/gemini
GEMINI_API_KEY_AUTH_MECHANISM="bearer"
GEMINI_API_KEY=<databricks_pat_token>
將 <workspace-url> 換成你的 Azure Databricks workspace 網址,<databricks_pat_token> 換成你的個人存取權杖。
使用帶有編碼代理的開源模型
Azure Databricks 支援整合開放原始碼(OSS)模型,例如 glm-5-2,與編碼代理程式。
除了 上述要求 外,你的工作空間還必須能存取目標 OSS 模型。
OpenCode
按照 ucode中的說明設定 ,然後選擇 system.ai.glm-5-2 作為你的模型。
手動設定
或者,你也可以依照 OpenCode 文件中描述安裝 OpenCode,然後建立或編輯 ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"model": "databricks-oss/<open source model service name>",
"provider": {
"databricks-oss": {
"npm": "@ai-sdk/openai",
"options": {
"baseURL": "<workspace-url>/ai-gateway/mlflow/v1",
"apiKey": "<databricks_pat_token>"
},
"models": {
"<open source model service name>": {}
}
}
}
}
取代下列項目:
-
<workspace-url>以及你的 Azure Databricks workspace 網址。 -
<databricks_pat_token>用你的個人存取權憑證。 -
<開放原始碼 model service name>搭配目標 OSS 模型服務,例如system.ai.glm-5-2。
接著開始 OpenCode:
opencode
法典
Codex 透過 Codex 支援的 開放回應 API 連接開源模型。
ucode codex --model <open source model service name>
例如,要使用 GLM 5.2 搭配 Codex,執行:
ucode codex --model system.ai.glm-5-2
手動設定
或者,您也可以依照 Codex CLI 的說明安裝 Codex CLI,然後建立或編輯 ~/.codex/config.toml:
model = "<open source model service name>"
model_provider = "Databricks"
[model_providers.Databricks]
name = "Databricks :re[ai-gateway]"
base_url = "<workspace-url>/ai-gateway/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'"]
# Re-run the token command periodically so long sessions don't fail when the
# short-lived Databricks token expires.
timeout_ms = 5000
refresh_interval_ms = 1800000
將 <workspace-url> 取代為你的 Azure Databricks 工作區 URL,並將 <開放原始碼 model service name> 取代為目標 OSS 模型服務,例如 system.ai.glm-5-2。
然後啟動 Codex:
codex
設定 OpenTelemetry 資料蒐集
Azure Databricks 支援將 OpenTelemetry 指標與日誌從編碼代理匯出至 Unity Catalog 管理的 Delta 表格。 所有指標皆為使用 OpenTelemetry 標準指標協定匯出的時間序列資料,日誌則使用 OpenTelemetry 日誌協定匯出。
Requirements
- Azure Databricks 的 OpenTelemetry 預覽版已啟用。 請參閱 管理 Azure Databricks 預覽。
步驟 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 目錄資料表。