Интеграция с агентами программирования

Интеграция агента программирования Azure Databricks позволяет маршрутизировать трафик от агентов программирования, таких как Cursor, Gemini CLI и Codex CLI через службы моделей в шлюзе ИИ Unity. Это обеспечивает ограничение скорости, отслеживание использования и таблицы вывода со всеми элементами управления, настроенными на уровне модели, пользователя или группы.

Features

  • Доступ: прямой доступ к различным средствам и моделям программирования, все по одному счету.
  • Наблюдаемость. Единая унифицированная панель мониторинга для отслеживания использования, расходов и метрик во всех средствах программирования.
  • Единое управление: администраторы могут управлять разрешениями модели и ограничениями скорости с помощью шлюза ИИ Unity на уровне модели, пользователя или группы.

Requirements

Setup

Самый быстрый способ начать работу с ucode, интерфейс командной строки из Azure Databricks, который устанавливает, проверяет подлинность и настраивает поддерживаемые агенты кодирования с помощью шлюза ИИ Unity в одной команде.

ucode (CLI для программирования Unity AI Gateway) — это единая точка входа для запуска агентов программирования через Unity AI Gateway. Он обрабатывает OAuth, записывает файл конфигурации каждого агента и направляет трафик через любой зарегистрированный сервер LLM или MCP. Поддерживаемые агенты:

Шаг 1. Установка ucode

uv tool install git+https://github.com/databricks/ucode

Требуется Python 3.12 или более поздней версии и uv.

Шаг 2. Открытие агента программирования

Запустите нужный агент. При первом запуске ucode запрашивает URL-адрес рабочей области Azure Databricks, выполняет проверку подлинности и записывает файл конфигурации агента автоматически. Последующие запуски сразу направляются агенту.

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 (функции Unity Catalog, AI Search, хранилища SQL и обнаруженные внешние подключения) для агентов с поддержкой MCP:

ucode configure mcp

Чтобы просмотреть сводку по использованию шлюза искусственного интеллекта Unity за последние 7 дней:

ucode usage

Для полной ссылки на команду выполните следующую команду:

ucode --help

Dashboard

После отслеживания использования агента программирования с помощью шлюза искусственного интеллекта Unity можно просматривать и отслеживать метрики на встроенной панели мониторинга.

Чтобы открыть панель мониторинга, щелкните "Управление" в правом верхнем углу страницы шлюза ИИ Unity, а затем нажмите кнопку "Панель мониторинга использования". Встроенная панель мониторинга использования включает вкладку "Агенты кодирования " с графами для использования средства кодирования.

Панель мониторинга агента программирования

Настройка вручную

Если вы предпочитаете самостоятельно настраивать агенты, следуйте инструкциям.

Интегрированная среда разработки курсора

Чтобы настроить Cursor для использования служб моделей в шлюзе ИИ Unity, выполните следующие действия.

Шаг 1. Настройка базового URL-адреса и ключа API

  1. Откройте курсор и перейдите к Параметры>Параметры курсора>Модели>Ключи API.

  2. Включите переопределение базового URL-адреса OpenAI и введите URL-адрес:

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

    Замените <workspace-url> URL-адресом рабочей области Azure Databricks.

  3. Вставьте личный токен доступа Azure Databricks в поле Ключ API OpenAI.

Шаг 2. Добавление пользовательских моделей

  1. Нажмите кнопку +Добавить настраиваемую модель в параметрах курсора.
  2. Добавьте имя службы вашей модели (например, system.ai.databricks-claude-opus-4-6) и включите переключатель.

Замечание

В настоящее время поддерживаются только службы модели, предоставляемые Azure Databricks.

Шаг 3. Тестирование интеграции

  1. Откройте режим ask с помощью Cmd+L (macOS) или Ctrl+L (Windows/Linux) и выберите модель.
  2. Отправьте сообщение. Все запросы теперь направляются через Azure Databricks.

Codex CLI

Шаг 1. Установка или обновление Codex CLI

Установите или обновите интерфейс командной строки Codex версии 0.118 или более поздней:

npm install -g @openai/codex@latest

Шаг 2. Создание или обновление файла конфигурации Codex

Создайте или измените файл конфигурации Codex по адресу ~/.codex/config.toml:

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> URL-адресом рабочей области Azure Databricks.

Шаг 3. Проверка подлинности в рабочей области

Замечание

Это необходимо сделать только один раз. При каждом запуске Codex не требуется повторно выполнять проверку подлинности.

Сначала убедитесь, что установлен Azure Databricks CLI. Инструкции см. в статье об установке или обновлении интерфейса командной строки Databricks .

Затем выполните проверку подлинности:

databricks auth login --host <workspace-url>

Замените <workspace-url> URL-адресом рабочей области Azure Databricks.

Шаг 4. Запуск codex

codex

Чтобы изменить модель, используйте /model.

Интерфейс командной строки Gemini

Шаг 1. Установка последней версии интерфейса командной строки Gemini

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

Шаг 2. Настройка переменных среды

Создайте файл ~/.gemini/.env и добавьте следующую конфигурацию. Дополнительные сведения см. в документации по проверке подлинности Cli Gemini .

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> URL-адресом рабочей области Azure Databricks и <databricks_pat_token> личным маркером доступа.

Используйте модели с открытым исходным кодом с агентами кодирования

Azure Databricks поддерживает интеграцию моделей с открытым исходным кодом (OSS), таких как glm-5-2, с агентами для программирования.

В дополнение к вышеуказанным требованиям , ваше рабочее пространство также должно иметь доступ к целевой модели OSS.

OpenCode

Настройте ucode, как описано в Используйте 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> с URL-адресом рабочей области Azure Databricks.
  • <databricks_pat_token> с вашим личным токеном доступа.
  • <открытый код model service name> с целевым сервисом модели OSS, например system.ai.glm-5-2.

Затем начните OpenCode:

opencode

Кодекс

Codex подключается к моделям с открытым исходным кодом через API Open Responses , который поддерживает Codex.

Настройте ucode так, как описано в статье «Использовать ucode (рекомендовано), затем запустить:

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> на URL вашего рабочего пространства Azure Databricks и <открытый код model service name> на целевой сервис модели OSS, напримерsystem.ai.glm-5-2.

Затем запустите Codex:

codex

Настройка сбора данных OpenTelemetry

Azure Databricks поддерживает экспорт метрик и журналов OpenTelemetry из агентов кодирования в управляемые таблицы Delta каталога Unity. Все метрики являются данными временных рядов, экспортируемыми с помощью протокола стандартных метрик OpenTelemetry, а журналы экспортируются с помощью протокола журналов OpenTelemetry.

Requirements

Шаг 1. Создание таблиц OpenTelemetry в каталоге Unity

Создание управляемых таблиц каталога Unity, предварительно настроенных с помощью метрик и схем журналов 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"
}

Шаг 3. Запуск агента программирования.

Ваши данные должны синхронизироваться с таблицами каталога Unity и это займет не более 5 минут.

Дальнейшие действия