PromptService.java
package fr.tiogars.chat.domains.prompt.services;
import fr.tiogars.chat.domains.prompt.models.PromptRequest;
import fr.tiogars.chat.domains.prompt.models.PromptResponse;
import org.springframework.stereotype.Service;
import java.time.Duration;
import java.time.Instant;
/**
* Service for handling AI prompts.
* This service uses the ChatClientAdapter to communicate with AI models.
*/
@Service
public class PromptService {
private final ChatClientAdapter chatClient;
public PromptService(ChatClientAdapter chatClient) {
this.chatClient = chatClient;
}
/**
* Process a prompt request and return the AI response.
*
* @param request the prompt request
* @return the AI response
*/
public PromptResponse processPrompt(PromptRequest request) {
Instant start = Instant.now();
String response;
if (request.systemPrompt() != null && !request.systemPrompt().isBlank()) {
response = chatClient.call(request.systemPrompt(), request.prompt());
} else {
response = chatClient.call(request.prompt());
}
Instant end = Instant.now();
long processingTimeMs = Duration.between(start, end).toMillis();
return new PromptResponse(
response,
request.model() != null ? request.model() : "unknown",
response.length(),
processingTimeMs,
"stop"
);
}
}