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 les aperçus Manage Azure Databricks.

Avec l’intégration de l’agent de codage Azure Databricks, vous pouvez gérer l’accès et l’utilisation des agents de codage tels que Cursor, Gemini CLI et Codex CLI. Basé sur Unity AI Gateway, il fournit des tables de limitation de débit, de suivi de l’utilisation et d’inférence pour vos outils de codage.

Fonctionnalités

  • 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 directement via Unity AI Gateway.

Spécifications

Agents pris en charge

Les agents de codage suivants sont pris en charge et d’autres intégrations répertoriées dans l’interface utilisateur de la passerelle AI :

Configuration

Cursor

Pour configurer Cursor pour utiliser les points de terminaison 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 la 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 point de terminaison Unity AI Gateway et activez le commutateur.

Note

Actuellement, seuls les points de terminaison de modèle de base créés 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

Note

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.

Tableau de bord

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 un tableau de bord intégré.

Pour accéder au tableau de bord, sélectionnez Afficher le tableau de bord dans la page passerelle IA. Cela crée un tableau de bord préconfiguré avec des graphiques pour l’utilisation de l’outil de codage.

Bouton Afficher le tableau de bord

Tableau de bord de l’agent de codage

Configurer la collecte de données OpenTelemetry

Azure Databricks prend en charge l’exportation des métriques et des journaux OpenTelemetry des agents de codage vers des tables Delta gérées par le catalogue Unity. 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 d’activité sont exportés à l’aide du protocole des journaux OpenTelemetry.

Spécifications

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

Créez des tables géré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 Journaux d’activité

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.

Prochaines étapes