Dopo aver visto come integrare Spring AI con OpenAI, è arrivato il momento di provare Ollama, il motore LLM che permette di installare modelli di AI in locale. Se non lo avete già fatto, vi suggeriamo di seguire il nostro tutorial su come installare Ollama.
In questo articolo creeremo un chatbot conversazionale partendo dal progetto Spring Boot che abbiamo già configurato nei capitoli precedenti della guida ed usando il modello llama3.
Tutorial pratico
La procedura per integrare Spring AI con Ollama è abbastanza simile a quella di OpenAI. Come prima cosa bisogna impostare la dipendenza maven dall’apposito modulo di Spring AI:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
Successivamente bisogna definire un RestController ed esporre un endpoint che prenda in input (query string) il messaggio da processare mediante il modello LLM.
package com.example.aidemo.controller;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OllamaAiRestController {
private final ChatModel chatModel;
@Autowired
public OllamaAiRestController(OllamaChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/ollama/chat")
public String generate(@RequestParam(value = "message") String message) {
ChatResponse response = chatModel.call(
new Prompt(
message,
OllamaOptions.create()
.withModel("llama3")
.withTemperature(0.4f)
));
return response.getResult().getOutput().getContent();
}
}
Il codice è abbastanza semplice ma lo commentiamo ugualmente:
- Come prima cosa notiamo che abbiamo definito il client per l’integrazione con Ollama instanziando mediante dependency-injection un
OllamaChatModel
. - Successivamente, a riga 24 abbiamo invocato il metodo “call” passando in input un oggetto di tipo Prompt che a sua volta contiene il messaggio e una serie di opzioni.
- Tra le opzioni abbiamo valorizzato il nome del modello da usare (“llama3”) e la temperatura che indica quanto l’output del modello debba essere “creativo” (1=massima creatività; 0=precisione).
Se avete un hardware poco performante, il modello llama3 potrebbe risultare troppo complesso per essere eseguito in locale. Vi suggerisco in questi casi di provare un modello più leggero come “phi3”. Fortunatamente Ollama è molto versatile e permette di eseguire in locale diversi modelli più o meno complessi.
Una volta compreso il codice dell’esempio, possiamo testarlo avviando il nostro progetto Spring AI ed invocando l’endpoint che abbiamo definito:
http://localhost:8080/ai/ollama/chat?message=can you tell me a story?
Dopo qualche secondo l’applicazione risponderà con una bella storia da leggere!
L’integrazione di Spring AI con Ollama rappresenta un passo avanti significativo nel panorama dell’AI conversazionale. Offrendo una soluzione completa e facile da usare, questa integrazione consente a chiunque di creare chatbot intelligenti, personalizzati e scalabili che possono rivoluzionare il modo in cui i software interagiscono con l’uomo. Rispetto ad altre soluzioni in cloud, Ollama offre una soluzione gratuita e che può essere installata anche sul vostro PC di casa.