Partager via


Connecter des outils d’agent IA à des services externes

Essentiel

Cette fonctionnalité est en préversion publique.

Découvrez comment connecter des outils d’agent IA à des applications externes telles que Slack, Google Calendar ou n’importe quel service avec une API à l’aide de requêtes HTTP. Les agents peuvent utiliser des outils connectés en externe pour automatiser les tâches, envoyer des messages et récupérer des données à partir de plateformes tierces.

Pour en savoir plus sur les outils d’assistant, consultez les outils d’assistant IA.

Exigences

Pour connecter des outils d’agent à des services externes, vous devez répondre aux exigences suivantes :

  • Configurez l’authentification auprès du service externe à l’aide de l’une des méthodes suivantes :
    • Jeton du porteur : obtenez un jeton du porteur pour l’authentification simple basée sur un jeton.
    • OAuth 2.0 Machine à machine : créez une application et configurez-la pour activer l’authentification machine à machine.
    • OAuth 2.0 Partagé entre utilisateur et machine : procédez à l'authentification via l'interaction utilisateur pour partager l'accès entre l'identité du service et la machine.
  • Votre espace de travail doit avoir la fonctionnalité Unity Catalog activée.
  • Vous devez disposer d’une connectivité réseau à partir d’une ressource de calcul Databricks vers le service externe. Consultez Recommandations de mise en réseau pour Lakehouse Federation.
  • Vous devez utiliser une instance de calcul avec le mode d’accès mono-utilisateur sur Databricks Runtime 15.4 et versions supérieures.
  • Vous devez disposer d’un entrepôt SQL pro ou serverless. Consultez Types d’entrepôts SQL.

Méthodes d’authentification pour les services externes

jeton du porteur : Jeton du porteur est un mécanisme d’authentification simple basé sur des jetons où un jeton est émis à un client et utilisé pour accéder aux ressources sans nécessiter d’informations d’identification supplémentaires. Le jeton est inclus dans l’en-tête de demande et accorde l’accès tant qu’il est valide.

Authentification OAuth Machine à Machine : L’authentification OAuth Machine-à-Machine (M2M) est utilisée lorsque deux systèmes ou applications doivent communiquer sans intervention directe de l’utilisateur. Les jetons sont émis à un client d’ordinateur inscrit, qui utilise ses propres informations d’identification pour s’authentifier. Cela est idéal pour les tâches de communication, de microservices et d’automatisation de serveur à serveur, où aucun contexte utilisateur n’est nécessaire.

OAuth utilisateur-vers-machine partagé : l’authentification utilisateur-vers-machine OAuth partagée permet à un seul utilisateur de s’authentifier et de partager le même ensemble d’identifiants sur plusieurs clients ou utilisateurs. Tous les utilisateurs partagent le même jeton d’accès. Cette approche convient aux appareils ou environnements partagés où une identité utilisateur cohérente est suffisante, mais elle réduit la responsabilité et le suivi individuels.

Créer une connexion au service externe

Tout d’abord, créez une connexion de catalogue Unity au service externe qui spécifie un chemin d’accès et des informations d’identification pour accéder au service.

Les avantages de l’utilisation d’une connexion de catalogue Unity sont les suivants :

  • Gestion sécurisée des informations d’identification : les secrets et jetons sont stockés et gérés de manière sécurisée dans Unity Catalog, ce qui garantit qu’ils ne sont jamais exposés aux utilisateurs.
  • contrôle d’accès granulaire : Catalogue Unity permet de contrôler précisément qui peut utiliser ou gérer les connexions avec les privilèges USE_CONNECTION et MANAGE_CONNECTION.
  • application des jetons spécifiques à l’hôte : les jetons sont limités aux host_name spécifiés lors de la création de la connexion, ce qui garantit qu’ils ne peuvent pas être utilisés avec des hôtes non autorisés.

Autorisations requises : administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION.

Créez une connexion à l’aide de l’une des méthodes suivantes :

  • Utilisez l’interface utilisateur de l’Explorateur de catalogues.
  • Exécutez la commande CREATE CONNECTION SQL dans un notebook Azure Databricks ou l'éditeur de requêtes SQL de Databricks.
  • Utilisez l’API REST Databricks ou l’interface CLI Databricks pour créer une connexion. Consultez POST /api/2.1/unity-catalog/connections et les commandes du Unity Catalog .

Explorateur de catalogues

Utilisez l’interface utilisateur de l’Explorateur de catalogues pour créer une connexion.

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Icône CatalogueCatalogue.

  2. En haut du volet Catalogue, cliquez sur l’icône Ajouter ou icône Plus Ajouter, puis sélectionnez Ajouter une connexion dans le menu.

    Sinon, dans la page Accès rapide, cliquez sur le bouton Données externes >, accédez à l’onglet Connexions, puis cliquez sur Créer une connexion.

  3. Cliquez sur Créer la connexion.

  4. Entrez un nom de connexion convivial.

  5. Sélectionnez HTTP comme Type de connexion.

  6. Sélectionnez un type d’authentification dans les options suivantes :

    • Jeton du porteur
    • Machine à machine OAuth
    • Partage utilisateur vers machine OAuth
  7. Dans la page Authentification, entrez les propriétés de connexion suivantes pour la connexion HTTP.

    Pour un jeton du porteur :

    • Hôte : par exemple, https://databricks.com
    • Port : par exemple, 443
    • Jeton du porteur : par exemple, bearer-token
    • chemin d’accès de base: par exemple, /api/

    Pour le jeton OAuth Machine to Machine :

    • ID client: identificateur unique de l’application que vous avez créée.
    • clé secrète du client: secret ou mot de passe généré pour l’application que vous avez créée.
    • Étendue OAuth : étendue à accorder pendant l’autorisation de l’utilisateur. Le paramètre d’étendue est exprimé sous la forme d’une liste de chaînes délimitées par un espace et respectant la casse. Par exemple : channels:read channels:history chat:write
    • Point de terminaison du jeton : utilisé par le client pour obtenir un jeton d’accès en présentant son octroi d’autorisation ou jeton d’actualisation. Généralement au format https://authorization-server.com/oauth/token

    Pour le jeton d’authentification utilisateur à machine partagée via OAuth :

    • ID client: identificateur unique de l’application que vous avez créée.
    • Clé secrète client: Mot de passe ou clé secrète généré pour l’application que vous avez créée.
    • périmètre OAuth: périmètre à attribuer lors de l’autorisation de l’utilisateur. Le paramètre d’étendue est exprimé sous la forme d’une liste de chaînes délimitées par un espace et respectant la casse. Par exemple : channels:read channels:history chat:write
    • Point de terminaison d’autorisation : pour s’authentifier auprès du propriétaire de ressource via la redirection de l’agent utilisateur, généralement au format https://authorization-server.com/oauth/authorize
    • Point de terminaison du jeton : utilisé par le client pour obtenir un jeton d’accès en présentant son octroi d’autorisation ou jeton d’actualisation. Généralement au format https://authorization-server.com/oauth/token

    Remarque

    Pour l’authentification utilisateur à machine partagée via OAuth, vous êtes invité à vous connecter avec HTTP en utilisant vos informations d’identification OAuth.

  8. Cliquez sur Créer la connexion.

SQL

Utilisez la commande CREATE CONNECTION SQL pour créer une connexion.

Remarque

Vous ne pouvez pas utiliser la commande SQL pour créer une connexion qui utilise l’authentification machine à utilisateur partagée via OAuth. Au lieu de cela, consultez les instructions de l’interface utilisateur de l’Explorateur de catalogues.

Pour créer une nouvelle connexion à l'aide d'un jeton Bearer , exécutez la commande suivante dans un notebook ou dans l'éditeur de requête Databricks SQL :

CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
  host '<hostname>',
  port '<port>',
  base_path '<base-path>',
  bearer_token '<bearer-token>'
);

Databricks recommande d’utiliser secrets au lieu de chaînes en texte clair pour des valeurs sensibles telles que les informations d’identification. Par exemple :

CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
  host '<hostname>',
  port '<port>',
  base_path '<base-path>',
  bearer_token secret ('<secret-scope>','<secret-key-password>')
)

Pour créer une connexion à l’aide de l’authentification machine à machine via OAuth, exécutez la commande suivante dans un notebook ou dans l’Éditeur de requête SQL Databricks :

CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
  host '<hostname>',
  port '<port>',
  base_path '<base-path>',
  client_id '<client-id>'
  client_secret '<client-secret>'
  oauth_scope '<oauth-scope1> <oauth-scope-2>'
  token_endpoint '<token-endpoint>'
)

Envoyer une requête HTTP au système externe

Maintenant que vous disposez d’une connexion, découvrez comment envoyer des requêtes HTTP au service à l’aide de la fonction SQL intégrée http_request.

Autorisations requises :USE CONNECTION sur l’objet de connexion.

Exécutez la commande SQL suivante dans un notebook ou l’éditeur Databricks SQL. Remplacez les valeurs d’espace réservé :

SELECT http_request(
  conn => <connection-name>,
  method => <http-method>,
  path => <path>,
  json => to_json(named_struct(
    'text', text
  )),
  headers => map(
    'Accept', "application/vnd.github+json"
  )
);
  • connection-name: l’objet de connexion qui spécifie l’hôte, le port, le base_path et les informations d’identification d’accès.
  • http-method: méthode de requête HTTP utilisée pour effectuer l’appel. Par exemple : GET, POST, PUT, DELETE
  • path : chemin d’accès à concaténer après base_path pour appeler la ressource du service.
  • json: corps JSON à envoyer avec la requête.
  • headers: Une carte pour spécifier les en-têtes de requête.

Créer un outil de fonction Unity Catalog

Après avoir validé que la connexion fonctionne correctement, créez une fonction de catalogue Unity qui utilise la connexion. L’exemple suivant crée un outil de fonction Catalogue Unity qu’un agent peut utiliser pour publier un message sur Slack :

CREATE OR REPLACE FUNCTION main.default.slack_post_message(
  text STRING COMMENT 'message content'
)
RETURNS STRING
COMMENT 'Sends a Slack message by passing in the message and returns the response received from the external service'
RETURN (http_request(
  conn => 'test_sql_slack',
  method => 'POST',
  path => '/api/chat.postMessage',
  json => to_json(named_struct(
    'channel', "C032G2DAH3",
    'text', text
  ))
)).text

Créer un outil dans le code de l’agent

Pour envoyer des requêtes HTTP à des services externes avec Python, utilisez la fonction http_request à partir de la bibliothèque databricks-sdk. Cette fonction envoie une requête HTTP à un service externe à l’aide d’une connexion de catalogue Unity pour l’authentification.

Autorisations requises :USE CONNECTION sur l’objet de connexion.

L’exemple suivant effectue une requête HTTP externe à partir du code de l’agent.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ExternalFunctionRequestHttpMethod

WorkspaceClient().serving_endpoints.http_request(
  conn="connection_name",
  method=ExternalFunctionRequestHttpMethod.POST,
  path="/api/v1/resource",
  json={"key": "value"},
  headers={"extra_header_key": "extra_header_value"},
)
  • conn: objet de connexion qui spécifie l’hôte, le port, le base_path et les informations d’identification d’accès.
  • method: méthode de requête HTTP utilisée pour effectuer l’appel. Par exemple : GET, POST, PUT, DELETE
  • path : chemin d’accès à concaténer après base_path pour appeler la ressource du service.
  • json: corps JSON à envoyer avec la requête.
  • headers : mappage pour spécifier les en-têtes de requête.

Exemples de notebooks

Les notebooks suivants montrent comment créer des outils d’assistant IA qui se connectent à Slack, OpenAI et à Recherche Azure AI.

Outil d’agent de messagerie Slack

Obtenir le notebook

Outil d'agent IA OpenAI

Obtenir le notebook

Outil d’assistant Recherche Azure AI

Obtenir le notebook