| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package es.uv.saic.llm;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import lombok.SneakyThrows;
- import org.springframework.ai.chat.client.ChatClient;
- import org.springframework.ai.openai.OpenAiChatOptions;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.stereotype.Component;
- import org.springframework.util.StringUtils;
- import static es.uv.saic.service.SystemPrompt.SCORE_AND_COMMENT_ANALYSIS_PROMPT;
- @Component
- public class LocalLlmProxy implements AiProxy {
- private final ChatClient localChatClient;
- private final ObjectMapper objectMapper = new ObjectMapper();
- public LocalLlmProxy(
- @Qualifier("localChatClient") ChatClient localChatClient
- ) {
- this.localChatClient = localChatClient;
- }
- @SneakyThrows
- public String calculateScoreAndProduceComments(String asCsv) {
- return calculateScoreAndProduceComments(asCsv, null);
- }
- @SneakyThrows
- public String calculateScoreAndProduceComments(String asCsv, String model) {
- ChatClient.ChatClientRequestSpec prompt = localChatClient.prompt();
- if (StringUtils.hasText(model)) {
- prompt = prompt.options(OpenAiChatOptions.builder().model(model).build());
- }
- return prompt
- .system(SCORE_AND_COMMENT_ANALYSIS_PROMPT)
- .user("Aquí tienes las tablas: " + objectMapper.writeValueAsString(asCsv))
- .call()
- .content();
- }
- }
|