Commit 983f670d authored by Irene Denazi's avatar Irene Denazi
Browse files

Issue #3: Addition of Initial Prompt

parent 7e86aa42
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ services:
      SPRING_AI_OLLAMA_BASE_URL: http://ollama:11434
      SPRING_AI_OLLAMA_CHAT_MODEL:  gpt-oss:20b
      SPRING_AI_OLLAMA_CHAT_TEMPERATURE: 0.7
      SPRING_AI_CHAT_SYSTEM_PROMPT: "You are an OpenSlice AI assistant"
      
      # MCP Client Configuration
      SPRING_AI_MCP_CLIENT_TYPE: SYNC
+16 −4
Original line number Diff line number Diff line
package org.etsi.osl.mcp.backend;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ChatController {
    private static final Logger log = LoggerFactory.getLogger(ChatController.class);
    private final ChatClient chatClient;
    private final String systemPrompt;
    

    public ChatController(ChatClient.Builder chatClientBuilder,
                           ToolCallbackProvider tools) {
                           ToolCallbackProvider tools,
                           @Value("${spring.ai.chat.system-prompt}") String systemPrompt) {
        // Validate that system prompt is not empty
        if (systemPrompt == null || systemPrompt.trim().isEmpty()) {
            throw new IllegalArgumentException("System prompt cannot be null or empty. Please configure SPRING_AI_CHAT_SYSTEM_PROMPT with a valid value.");
        }
        
        this.systemPrompt = systemPrompt;
        this.chatClient = chatClientBuilder
                .defaultAdvisors(new SimpleLoggerAdvisor())
                .defaultToolCallbacks(tools)
                .defaultSystem(systemPrompt)
                .build();
        log.info("ChatController initialized with system prompt: {}", systemPrompt);
    }

    @PostMapping("/ask")
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ spring:
        options:
          model: ${SPRING_AI_OLLAMA_CHAT_MODEL:gpt-oss:20b}
          temperature: ${SPRING_AI_OLLAMA_CHAT_TEMPERATURE:0.7}
    chat:
      system-prompt: ${SPRING_AI_CHAT_SYSTEM_PROMPT:You are an OpenSlice AI assistant.}
    mcp:
      client:
        type: ${SPRING_AI_MCP_CLIENT_TYPE:SYNC}  # or ASYNC