Intégrer avec des agents de codage

Important

Cette fonctionnalité est en version bêta. Les administrateurs de compte peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus de la console de compte. Consultez Gérer les préversions d’Azure Databricks.

Avec l’intégration de l’agent de codage Azure Databricks, vous pouvez router le trafic à partir d’agents de codage tels que Cursor, Gemini CLI et Codex CLI via des services de modèle dans Unity AI Gateway. Cela fournit des tables de limitation de débit, de suivi de l’utilisation et d’inférence, avec tous les contrôles configurés au niveau du service de modèle, de l’utilisateur ou du groupe.

Features

  • Accès : accès direct à différents outils et modèles de codage, tous sous une seule facture.
  • Observabilité : tableau de bord unifié unique pour suivre l’utilisation, les dépenses et les métriques dans tous vos outils de codage.
  • Gouvernance unifiée : les administrateurs peuvent gérer les autorisations de modèle et les limites de débit via Unity AI Gateway au niveau du service de modèle, de l’utilisateur ou du groupe.

Requirements

Paramétrage

Le moyen le plus rapide de commencer consiste à utiliser ucode, une interface CLI de Azure Databricks qui installe, authentifie et configure les agents de codage pris en charge avec Unity AI Gateway dans une commande.

ucode (Unity AI Gateway Coding CLI) est le point d’entrée unique pour l’exécution d’agents de codage sur Unity AI Gateway. Il gère OAuth, écrit le fichier de configuration de chaque agent et route le trafic via n’importe quel serveur LLM ou MCP que vous avez inscrit. Agents pris en charge :

Étape 1 : Installer ucode

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

Nécessite Python 3.12 ou version ultérieure et uv.

Étape 2 : Ouvrir un agent de codage

Exécutez l'agent de votre choix. Lors du premier lancement, ucode demande l’URL de votre espace de travail Azure Databricks, s’authentifie et écrit automatiquement le fichier de configuration de l’agent. Les lancements suivants sont dirigés directement vers l’agent.

ucode codex      # OpenAI Codex
ucode gemini     # Gemini CLI
ucode opencode   # OpenCode
ucode copilot    # GitHub Copilot CLI
ucode pi         # Pi

ucode transmet des indicateurs après le nom de l’agent à l’outil sous-jacent, par exemple :

ucode codex --full-auto

Pour configurer plusieurs agents de codage en même temps, exécutez :

ucode configure

Pour enregistrer les serveurs MCP Azure Databricks (fonctions Unity Catalog, AI Search, entrepôts SQL et connexions externes découvertes) auprès d’agents compatibles MCP :

ucode configure mcp

Pour afficher le résumé de l’utilisation de votre passerelle AI Unity pour les 7 derniers jours :

ucode usage

Pour obtenir la référence de commande complète, exécutez :

ucode --help

Dashboard

Une fois que l’utilisation de l’agent de codage est suivie via Unity AI Gateway, vous pouvez afficher et surveiller vos métriques dans le tableau de bord intégré.

Pour ouvrir le tableau de bord, cliquez sur Gouverner en haut à droite de la page Unity AI Gateway, puis cliquez sur Tableau de bord d’utilisation. Le tableau de bord d’utilisation intégré inclut un onglet Agents de codage avec des graphiques pour l’utilisation de l’outil de codage.

Tableau de bord de l’agent de codage

Installation manuelle

Si vous préférez configurer des agents vous-même, suivez les instructions pour :

IDE Cursor

Pour configurer Cursor afin d’utiliser des services de modèle dans Unity AI Gateway :

Étape 1 : Configurer l’URL de base et la clé API

  1. Ouvrez le curseur et accédez aux Paramètres>Paramètres du curseur>Modèles>Clés API.

  2. Activez Remplacer l’URL de base OpenAI et entrez l’URL :

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

    Remplacez <workspace-url> par l’URL de votre espace de travail Azure Databricks.

  3. Collez votre jeton d’accès personnel Azure Databricks dans le champ Clé API OpenAI.

Étape 2 : Ajouter des modèles personnalisés

  1. Cliquez sur + Ajouter un modèle personnalisé dans les paramètres du curseur.
  2. Ajoutez le nom de votre service de modèle (par exemple, system.ai.databricks-claude-opus-4-6) et activez le bouton.

Remarque

Actuellement, seuls les services de modèle fournis par Azure Databricks sont pris en charge.

Étape 3 : Tester l’intégration

  1. Ouvrez le mode Ask avec Cmd+L (macOS) ou Ctrl+L (Windows/Linux) et sélectionnez votre modèle.
  2. Envoyez un message. Toutes les demandes sont désormais acheminées via Azure Databricks.

Codex CLI

Étape 1 : Installer ou mettre à jour l’interface CLI de Codex

Installez ou mettez à jour l’interface CLI de Codex version 0.118 ou ultérieure :

npm install -g @openai/codex@latest

Étape 2 : Créer ou mettre à jour le fichier config du Codex

Créez ou modifiez le fichier de configuration du Codex à l’adresse ~/.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

Remplacez <workspace-url> par l’URL de votre espace de travail Azure Databricks.

Étape 3 : S’authentifier auprès de votre espace de travail

Remarque

Cela doit être effectué une seule fois. Vous n’avez pas besoin de vous authentifier à nouveau chaque fois que vous démarrez Le Codex.

Tout d’abord, vérifiez que l’interface CLI Azure Databricks est installée. Pour obtenir des instructions, consultez Installer ou mettre à jour l’interface CLI Databricks .

Authentifiez ensuite :

databricks auth login --host <workspace-url>

Remplacez <workspace-url> par l’URL de votre espace de travail Azure Databricks.

Étape 4 : Démarrer le Codex

codex

Pour modifier le modèle, utilisez /model.

Gemini CLI

Étape 1 : Installer la dernière version de Gemini CLI

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

Étape 2 : Configurer des variables d’environnement

Créez un fichier ~/.gemini/.env et ajoutez la configuration suivante. Pour plus d’informations, consultez les documents d’authentification 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>

Remplacez <workspace-url> par l’URL de votre espace de travail Azure Databricks et <databricks_pat_token> par votre jeton d’accès personnel.

Utilisez des modèles open source avec des agents de codage

Azure Databricks prend en charge l’intégration de modèles open source (OSS), tels que glm-5-2, avec des agents de codage.

En plus des exigences ci-dessus, votre espace de travail doit également avoir accès au modèle OSS cible.

OpenCode

Configurez ucode comme décrit dans Use ucode (recommandé), puis sélectionnez system.ai.glm-5-2 comme modèle.

Réglage manuel

Sinon, vous pouvez installer OpenCode comme décrit dans la documentation OpenCode, puis créer ou modifier ~/.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>": {}
      }
    }
  }
}

Remplacez le code suivant :

  • <workspace-url> avec l’URL de votre espace de travail Azure Databricks.
  • <databricks_pat_token> avec votre jeton d’accès personnel.
  • <open source model service name> avec le service OSS du modèle cible, par exemple system.ai.glm-5-2.

Ensuite, lance OpenCode :

opencode

Codex

Codex se connecte aux modèles Open Source via l’API Open Responses prise en charge par Codex.

Configurez ucode comme décrit dans Use ucode (recommandé), puis exécutez :

ucode codex --model <open source model service name>

Par exemple, pour utiliser GLM 5.2 avec Codex, exécutez :

ucode codex --model system.ai.glm-5-2
Réglage manuel

Sinon, vous pouvez installer la ligne de commande du Codex comme décrit dans la CLI du Codex, puis créer ou modifier ~/.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

Remplacez <workspace-url> par l’URL de votre espace de travail Azure Databricks et <open source model service name> par le service de modèle OSS cible, system.ai.glm-5-2par exemple.

Puis commencez Codex :

codex

Configurer la collecte de données OpenTelemetry

Azure Databricks prend en charge l’exportation des métriques et journaux OpenTelemetry des agents de programmation vers des tables Delta gérées par Unity Catalog. Toutes les métriques sont des données de série chronologique exportées à l’aide du protocole de métriques standard OpenTelemetry, et les journaux sont exportés à l’aide du protocole de journaux OpenTelemetry.

Requirements

Étape 1 : Créer des tables OpenTelemetry dans le catalogue Unity

Créez des tables managées Unity Catalogue préconfigurées avec les métriques et les schémas de journaux OpenTelemetry.

Table des métriques

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'
)

Table des journaux

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'
)

Étape 2 : Mettre à jour les vars env dans votre agent de codage

Dans n’importe quel agent de codage avec la prise en charge des métriques OpenTelemetry activée, configurez les variables d’environnement suivantes.

{
  "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"
}

Étape 3 : Exécuter votre agent de codage.

Vos données doivent se propager aux tables du catalogue Unity dans les 5 minutes.

Étapes suivantes