From b78f0c0ed533c0060e71f64872fd7697606cd377 Mon Sep 17 00:00:00 2001 From: Matithieu Date: Sun, 21 Dec 2025 17:06:59 +0100 Subject: [PATCH] feat: IA --- build.gradle | 2 ++ .../example/spring/app/llm/LLMController.java | 24 +++++++++++++++++++ src/main/resources/application.properties | 5 ++++ 3 files changed, 31 insertions(+) create mode 100644 src/main/java/com/example/spring/app/llm/LLMController.java diff --git a/build.gradle b/build.gradle index ddbf52e..30fd497 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server' implementation 'org.springframework.boot:spring-boot-starter-web' + implementation platform("org.springframework.ai:spring-ai-bom:1.0.0") + implementation 'org.springframework.ai:spring-ai-starter-model-openai' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' implementation 'org.springframework.boot:spring-boot-starter-validation' diff --git a/src/main/java/com/example/spring/app/llm/LLMController.java b/src/main/java/com/example/spring/app/llm/LLMController.java new file mode 100644 index 0000000..939cbd1 --- /dev/null +++ b/src/main/java/com/example/spring/app/llm/LLMController.java @@ -0,0 +1,24 @@ +package com.example.spring.app.llm; + +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.web.bind.annotation.*; + +@CrossOrigin +@RestController +@RequestMapping("/v1") +public class LLMController { + + private final ChatClient chatClient; + + public LLMController(ChatClient.Builder chatClientBuilder) { + this.chatClient = chatClientBuilder.build(); + } + + @GetMapping("/ai") + String generation(String userInput) { + return this.chatClient.prompt() + .user(userInput) + .call() + .content(); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6681ea2..4ba25ff 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -34,3 +34,8 @@ resilience4j.ratelimiter.instances.scrapService.timeout-duration=30s # Spring spring.profiles.active=${SPRING_PROFILES_ACTIVE} + +# Spring AI +spring.ai.openai.api-key=ollama +spring.ai.openai.base-url=http://localhost:11434/ +spring.ai.openai.chat.options.model=mistral:7b \ No newline at end of file