Développement

GitHub Copilot SDK pour Java : intégrer des agents IA côté serveur

6 min de lecture

Réseau abstrait représentant un agent IA Java côté serveur relié à des outils et à plusieurs fournisseurs de modèles.

Un SDK Java pour sortir l’IA du poste de développement

Le GitHub Copilot SDK pour Java propose une approche programmatique de l’intégration d’agents IA dans des applications serveur. Publié sous la forme de l’artefact Maven com.github:copilot-sdk-java, en version 1.0.7-preview.1, il permet au code Java de créer des sessions Copilot, d’enregistrer des outils, d’envoyer des requêtes et de recevoir des réponses structurées.

La bibliothèque vise notamment les environnements Jakarta EE et Spring. Elle ne se limite donc pas à une extension d’IDE : une application serveur peut orchestrer une session d’agent, lui donner accès à des fonctions précises et exploiter son résultat dans un flux applicatif classique.

L’article de présentation, daté du 10 août 2026, présente ce SDK comme la première manière véritablement indépendante d’un framework pour piloter de l’IA depuis Java. Cette formulation relève de la présentation du SDK ; le point important, en pratique, est que l’API ne dépend pas d’un framework applicatif particulier.

Deux modes d’accès aux modèles

Le SDK peut être utilisé avec Copilot, mais aussi avec des fournisseurs de modèles appelés directement. La liste fournie inclut OpenAI, Azure, Anthropic et les points de terminaison compatibles avec les API OpenAI. La configuration passe par un objet ProviderConfig, auquel l’application transmet notamment une URL de base ainsi qu’une clé d’API ou un jeton bearer.

Cette possibilité sépare deux questions souvent confondues : l’utilisation de l’API du SDK et l’abonnement Copilot. Selon la documentation présentée, un abonnement Copilot n’est pas nécessaire lorsque l’application utilise directement un fournisseur de modèles. En revanche, le parcours basé sur Copilot CLI s’appuie sur les prérequis Copilot indiqués pour l’exemple.

Pour une équipe Java, cette distinction peut faciliter les choix d’architecture. Le code d’orchestration — sessions, outils, événements et réponses — peut rester organisé autour du SDK, tandis que le fournisseur et les paramètres d’accès sont définis dans la configuration de l’application.

Prérequis et intégration Maven

Les prérequis listés comprennent un JDK 17 ou 25, Maven 3.9 ou une version ultérieure, un compte GitHub disposant d’un abonnement Copilot actif et Copilot CLI en version 1.0.71 ou ultérieure installé localement. Le JDK 25 est recommandé dans cette configuration, notamment pour bénéficier des threads virtuels et d’autres fonctionnalités modernes de la plateforme.

L’exemple fourni s’appuie sur Open Liberty 26.0.0.5 et Jakarta EE 11. Son interface utilise PrimeFaces 15.0.16, tandis que la persistance de démonstration repose sur H2 en mémoire. Le projet inclut le SDK en version 1.0.7-preview.1.

Ces éléments décrivent un exemple précis, et non une obligation générale pour tous les déploiements. Ils montrent toutefois le positionnement du SDK : l’intégration peut s’insérer dans une application Jakarta EE exécutée sur un serveur Java, sans imposer une architecture de démonstration séparée du code métier.

Des outils Java exposés à l’agent

L’un des aspects les plus importants concerne la définition des outils que l’agent peut appeler. Le SDK propose une API basée sur les annotations @CopilotTool et @CopilotToolParam. À partir de ces déclarations, il prend en charge la génération du JSON Schema, l’analyse des arguments et le dispatch vers les méthodes correspondantes.

Cette automatisation évite de construire manuellement toute la description d’un outil et la logique de conversion des paramètres. Une méthode Java peut ainsi représenter une capacité métier que l’agent est autorisé à utiliser, tandis que le SDK gère la partie nécessaire à l’appel structuré.

Cette API d’annotations est toutefois présentée comme expérimentale. Pour l’activer, la compilation Maven doit recevoir le drapeau -Acopilot.experimental.allowed=true. Il faut donc traiter cette fonctionnalité avec davantage de prudence qu’une API stabilisée, en particulier dans un projet où la compatibilité à long terme est prioritaire.

Le SDK propose aussi une forme plus locale avec ToolDefinition.from(...) et des lambdas. Cette option convient lorsqu’un outil est défini directement à l’endroit où il est utilisé, sans créer une méthode dédiée annotée.

Sessions, permissions et boucle d’appels

La session constitue l’unité d’exécution de l’agent. L’appel session.sendAndWait(...) prend en charge la boucle d’appels d’outils jusqu’à la réponse finale du modèle. Autrement dit, le modèle peut raisonner, appeler un ou plusieurs outils, recevoir leurs résultats, puis poursuivre le traitement avant de produire sa réponse finale.

Le SDK expose également session.on(...) pour observer les événements de la session. Des événements sont émis pour les appels d’outils, leurs résultats et les messages de l’assistant. Cette instrumentation peut servir à suivre l’avancement d’une requête, alimenter des journaux techniques ou construire une expérience utilisateur qui reflète les étapes du traitement.

La configuration peut limiter explicitement les capacités accessibles. Un ToolSet permet à chaque session de préciser les outils personnalisés et intégrés disponibles. Ce découpage est essentiel côté serveur : toutes les sessions n’ont pas nécessairement besoin des mêmes droits ni du même périmètre fonctionnel.

L’exemple configure PermissionHandler.APPROVE_ALL. Cette valeur est indiquée comme adaptée aux démonstrations et au développement, mais elle ne doit pas être assimilée à une stratégie de contrôle suffisante pour un environnement de production. Dans une application réelle, les permissions doivent être alignées sur les opérations effectivement autorisées.

Exécution sans IDE et traitements concurrents

Le mode CopilotClientMode.EMPTY configure un client sans intégration à un IDE et le fait communiquer directement avec Copilot CLI. Ce mode correspond à un usage serveur ou automatisé, dans lequel l’application n’a pas à s’appuyer sur une session de développement interactive.

L’exemple met par ailleurs en avant des agents utilisant les threads virtuels et la soumission simultanée de plusieurs demandes. Chaque demande est traitée indépendamment, dans sa propre session Copilot. Pour une application qui reçoit plusieurs interrogations, ce modèle permet de séparer les contextes de conversation et le cycle d’exécution de chaque requête.

Le SDK ne transforme pas pour autant une opération d’agent en tâche sans contraintes. Les développeurs doivent toujours contrôler les outils exposés, les permissions, les erreurs et les ressources disponibles. Son apport est de réunir ces mécanismes dans une API Java adaptée à l’exécution côté serveur : la session orchestre, les outils connectent le modèle au code métier et les événements rendent le déroulement observable.

À retenir

  • Le SDK est disponible comme artefact Maven <code>com.github:copilot-sdk-java</code> en version <code>1.0.7-preview.1</code>.
  • Il cible les applications Java côté serveur, notamment Jakarta EE et Spring, et peut fonctionner avec Copilot ou des fournisseurs directs comme OpenAI, Azure et Anthropic.
  • Les annotations <code>@CopilotTool</code> et <code>@CopilotToolParam</code> automatisent la génération du schéma, l’analyse des arguments et l’appel des méthodes, mais cette API reste expérimentale.
  • Les sessions peuvent limiter leurs outils, recevoir des événements et exécuter plusieurs demandes indépendantes avec des threads virtuels.
  • <code>PermissionHandler.APPROVE_ALL</code> est réservé aux démonstrations et au développement selon la documentation présentée.

Sources