DEV Community

Adnene HAMDOUNI
Adnene HAMDOUNI

Posted on

Spring AI : Intégrez l'Intelligence Artificielle dans vos applications Java en quelques minutes

Spring AI : Intégrez l'Intelligence Artificielle dans vos applications Java en quelques minutes


📌 Métadonnées

  • Titre : Spring AI : Intégrez l'Intelligence Artificielle dans vos applications Java en quelques minutes
  • Sujet : Spring Boot / AI / Java
  • Cible : Développeurs Java, Architectes Logiciels
  • Temps de lecture estimé : 8 minutes
  • Tags : #SpringBoot #SpringAI #Java #LLM #GenerativeAI

🎯 Introduction

Pendant longtemps, le monde de l'IA générative a semblé être le domaine exclusif de Python. Entre LangChain, PyTorch et la simplicité des notebooks Jupyter, les développeurs Java se sentaient souvent comme des citoyens de seconde zone, contraints d'appeler des API REST brutes ou de jongler avec des bibliothèques peu matures.

C'est ici qu'intervient Spring AI.

Ce nouveau projet de l'écosystème Spring ne se contente pas d'ajouter un client HTTP pour OpenAI. Il apporte une véritable couche d'abstraction, similaire à ce que Spring Data a fait pour les bases de données. L'idée est simple : vous écrivez votre logique métier une seule fois, et vous pouvez changer de modèle d'IA (GPT-4, Claude, Mistral ou même un modèle local via Ollama) sans modifier une seule ligne de code métier.

À la fin de cet article, vous saurez comment configurer votre premier projet Spring AI et créer un service de chat intelligent capable de retourner des données structurées.


🛠️ Corps de l'Article

1. Concept Fondamental : L'Abstraction du Modèle

Le cœur de Spring AI réside dans l'interface ChatModel. Plutôt que de vous lier à un SDK spécifique, Spring AI définit un contrat standard pour l'interaction avec les LLM.

Pourquoi est-ce crucial ?
Dans un environnement entreprise, la dépendance à un seul fournisseur d'IA est un risque. Un jour, vous pourriez préférer Azure OpenAI pour la conformité, ou un modèle Llama 3 hébergé localement pour la confidentialité des données. Grâce à l'injection de dépendances de Spring, le passage d'un modèle à un autre se résume à un changement de dépendance dans votre pom.xml et une clé API dans vos propriétés.

2. Mise en Œuvre Technique (Le "Comment")

Pré-requis

  • JDK 17 ou supérieur.
  • Spring Boot 3.x.
  • Une clé API OpenAI (ou Ollama installé localement).

Étape 1 : Configuration du projet

Ajoutez le starter correspondant à votre fournisseur dans votre fichier pom.xml :

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
Enter fullscreen mode Exit fullscreen mode

Ensuite, configurez votre clé API dans le fichier application.yml :

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4o
          temperature: 0.7
Enter fullscreen mode Exit fullscreen mode

Étape 2 : Création du service de Chat avec ChatClient

L'API fluide ChatClient est la manière moderne d'interagir avec l'IA. Voici comment implémenter un contrôleur simple :

@RestController
@RequestMapping("/ai")
class AiController {
    private final ChatClient chatClient;

    // Le Builder est auto-configuré par Spring Boot
    public AiController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return this.chatClient.prompt()
            .user(message)
            .call()
            .content();
    }
}
Enter fullscreen mode Exit fullscreen mode

Étape 3 : Maîtriser les PromptTemplates et la Sortie Structurée

Pour rendre vos applications réellement utiles, vous ne pouvez pas vous contenter de messages libres. Vous avez besoin de structures.

Les PromptTemplates permettent d'injecter des variables dynamiques :

String response = chatClient.prompt()
    .user(u -> u
        .text("Explique-moi le concept de {concept} en deux phrases pour un débutant.")
        .param("concept", "Injection de dépendances"))
    .call()
    .content();
Enter fullscreen mode Exit fullscreen mode

La Sortie Structurée est la fonctionnalité "tueuse" pour les devs Java. Vous pouvez mapper la réponse de l'IA directement dans un record Java :

record Movie(String title, String director, int year) {}

@GetMapping("/movie-info")
public Movie getMovieInfo(@RequestParam String movieName) {
    return chatClient.prompt()
        .user("Donne moi des infos sur le film " + movieName)
        .call()
        .entity(Movie.class); // Mapping automatique JSON -> Java Record
}
Enter fullscreen mode Exit fullscreen mode

Astuce de pro : Utilisez les Advisors (comme MessageChatMemoryAdvisor) pour ajouter nativement un historique de conversation sans avoir à gérer manuellement une liste de messages à chaque appel.

3. Analyse & Comparaison : Spring AI vs LangChain4j

Si vous explorez l'IA en Java, vous croiserez forcément LangChain4j.

Critère Spring AI LangChain4j
Intégration Native et profonde avec Spring Boot Bibliothèques autonomes (utilisables partout)
Courbe d'apprentissage Très faible pour les devs Spring Modérée (approche plus proche de LangChain Python)
Écosystème Bénéficie de tout l'écosystème Spring Très complet sur les intégrations tierces
Philosophie Abstraction et simplicité Flexibilité et richesse fonctionnelle

Verdict : Si votre stack est déjà Spring Boot, Spring AI est le choix logique pour sa simplicité et son alignement avec vos patterns de développement.


🏁 Conclusion & Ouverture

L'IA n'est plus une "option" ou un gadget pour les data scientists ; c'est désormais un premier citoyen dans l'écosystème Java. Avec Spring AI, la barrière technique s'effondre pour laisser place à l'innovation métier.

Mais un LLM seul a une limite : il ne connaît pas vos données privées. C'est là qu'intervient le RAG (Retrieval Augmented Generation). Dans le prochain article, nous verrons comment donner une "mémoire" à votre application Spring Boot en connectant un Vector Store.

À vous de jouer ! Installez Ollama en local, configurez Spring AI et essayez de créer votre premier agent structuré. Partagez vos retours en commentaires !


📚 Sources & Ressources

Top comments (0)