Déc

Dans cet article, nous allons explorer comment utiliser des modèles de langage (LLM) localement sur nos ordinateurs avec Spring Boot et Ollama.

Qu’est-ce que Ollama ?

Ollama est un projet open source qui permet d’exécuter des LLM localement sur nos ordinateurs, sans nécessiter de grandes ressources.

Téléchargement d’Ollama

Pour télécharger Ollama, rendez-vous sur le site officiel. Une fois le téléchargement terminé, vous pouvez l’utiliser en ouvrant un terminal et en pullant le modèle qui vous intéresse.

ollama pull llama3.2:1b

Ensuite, vous pouvez discuter directement avec le modèle via le terminal. Cependant, l’objectif de cet article est de vous montrer comment l’utiliser avec Spring Boot.

Note : Dans Spring Boot, vous pouvez également accéder à Ollama en utilisant des testcontainers.

Utilisation d’Ollama dans Spring Boot

Pour utiliser Ollama dans Spring Boot, nous allons nous appuyer sur le projet Spring AI. Ce projet permet d’intégrer facilement l’IA générative dans les applications Spring. Spring AI prend en charge plusieurs modèles et projets, dont Ollama.

Vous avez la possibilité de créer un projet Spring Boot via Spring Initializr ou d’utiliser ce lien qui inclut les dépendances requises pour cet article.

Dépendances

Pour utiliser Ollama dans Spring Boot, cette dépendance est obligatoire.

  <dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
  </dependency>

Auto-configuration

Spring AI propose une auto-configuration de Spring Boot pour intégrer Ollama, dès que la dépendance Ollama est incluse dans le projet.

Propriétés de base

Le préfixe de propriété spring.ai.ollama est utilisé pour configurer la connexion à Ollama. Il existe plusieurs propriétés que l’on peut spécifier :

  • spring.ai.ollama.base-url URL de base où le serveur Ollama s’exécute par défaut c’est : localhost:11434
  • spring.ai.ollama.init.pull-model-strategy : spécifie s’il faut faire le pull des modèles au démarrage, par défaut c’est never
  • spring.ai.ollama.chat.options.model : le nom du modèle qu’on veut utiliser, par défaut c’est mistral.

Utilisation de llama3.2:1b

Pour cette démo, nous allons utiliser le modèle llama3.2:1b. Vous pouvez consulter les modèles disponibles sur le site d’Ollama. Ajoutez la ligne suivante dans le fichier application.properties :

spring.ai.ollama.chat.options.model=llama3.2:1b

Ou bien dans le builder de chatClient :

      chatClient = builder
                .defaultOptions(ChatOptionsBuilder.builder()
                        .withModel("llama3.2:1b").build())
                .build();

Une fois le modèle configuré, il est possible d’y accéder directement en utilisant le ChatClient.

@SpringBootTest
class OllamaDemoApplicationTests {

    @Autowired
    private ChatClient.Builder builder;

    @Test
    void ollamaChatClientTest() {
        ChatClient chatClient = builder.build();
        
        String content = chatClient.prompt()
                .user("Tell me a joke about Software Engineers")
                .call()
                .content();
        System.out.println("The content is : " + content);
    }

}

Création des modèles personnalisés

L’un des avantages des modèles open source est la possibilité de les personnaliser à notre guise. Ollama rend cette personnalisation encore plus accessible.

Par exemple, pour adapter notre modèle llama3.2:1b, il suffit de créer un fichier Modelfile (semblable à un Dockerfile) sans aucune extension avec les instructions nécessaires.

Modelfile

FROM llama3.2:1b
# définit la température à 1 [ élevée =>  modèle créatif, basse =>  modèle cohérent]
PARAMETER temperature 0.9

# définit la taille du context window à 4096, cela contrôle le nombre de tokens  que le LLM peut utiliser comme
# contexte pour générer le token suivant
PARAMETER num_ctx 4096

# définit un message système personnalisé pour spécifier le comportement de l'assistant
SYSTEM You are a funny french speaking assistant, you should always respond to any question in French.

Pour démarrer la création du modèle, exécutez simplement la commande ci-dessous.

ollama create french-llama-3-2 -f src/main/resources/Modelfile

Selon les modifications apportées au modèle, cette opération peut prendre beaucoup de temps. Une fois terminée, on peut alors utiliser le nouveau modèle directement dans notre application Spring Boot en spécifiant le nom dans le fichier properties.

spring.ai.ollama.chat.options.model=french-llama-3-2

Et normalement, en exécutant notre test, on aura une réponse en français.

    @Test
    void ollamaCustomModelTest() {
        ChatClient chatClient = builder
                .defaultOptions(ChatOptionsBuilder.builder()
                        .withModel("french-llama-3-2")
                        .build())
                .build();

        String content = chatClient.prompt()
                .user("Tell me a joke about Software Engineers")
                .call()
                .content();
        System.out.println("The content is : " + content);
    }

Conclusion

Dans cet article, nous avons exploré l’utilisation des LLM localement avec Ollama. Nous avons également démontré la facilité d’intégration d’Ollama dans une application Spring Boot. De plus, nous avons créé notre propre modèle personnalisé à partir de llama3.2:1b. Le code associé est disponible dans ce repo GitHub. Pour suivre mes prochains articles, vous pouvez me rejoindre sur LinkedIn.

Repo GitHub : https://github.com/IBJunior/ollama-demo

Ibrahim Ali ABDOUL RAHMAN

Related Posts

Leave A Comment