package com.vincent.rsf.server.ai.service;
|
|
import com.vincent.rsf.server.ai.model.AiPromptContext;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
public class AiPromptContextService {
|
|
private final List<AiPromptContextProvider> providers;
|
|
public AiPromptContextService(List<AiPromptContextProvider> providers) {
|
this.providers = providers == null ? new ArrayList<>() : providers;
|
}
|
|
public String buildSystemPrompt(String basePrompt, AiPromptContext context) {
|
List<String> promptParts = new ArrayList<>();
|
if (basePrompt != null && !basePrompt.trim().isEmpty()) {
|
promptParts.add(basePrompt.trim());
|
}
|
for (AiPromptContextProvider provider : providers) {
|
if (!provider.supports(context)) {
|
continue;
|
}
|
String providerPrompt = provider.buildContext(context);
|
if (providerPrompt != null && !providerPrompt.trim().isEmpty()) {
|
promptParts.add(providerPrompt.trim());
|
}
|
}
|
if (promptParts.isEmpty()) {
|
return null;
|
}
|
return String.join("\n\n", promptParts);
|
}
|
}
|