fi.evolver.ai.vaadin.view.ChatTemplateBaseView Maven / Gradle / Ivy
package fi.evolver.ai.vaadin.view;
import java.io.Serial;
import java.util.List;
import java.util.Map;
import fi.evolver.ai.spring.AsyncRunner;
import fi.evolver.ai.spring.chat.ChatApi;
import fi.evolver.ai.spring.chat.prompt.ChatPrompt;
import fi.evolver.ai.spring.chat.prompt.ChatPromptTemplateParser;
import fi.evolver.ai.spring.chat.prompt.Message;
import fi.evolver.ai.vaadin.ChatRepository;
import fi.evolver.ai.vaadin.PromptRepository;
import fi.evolver.ai.vaadin.component.AiChatComponent;
import fi.evolver.ai.vaadin.component.ChatSummaryPromptFunction;
import fi.evolver.ai.vaadin.component.form.FormDialog;
import fi.evolver.ai.vaadin.component.form.TextAreaForm;
import fi.evolver.ai.vaadin.entity.HasValueGetterSetter;
import fi.evolver.ai.vaadin.util.ChatUtils;
import fi.evolver.ai.vaadin.util.FormUtils;
public abstract class ChatTemplateBaseView extends ChatHistoryAwareView {
@Serial
private static final long serialVersionUID = 1L;
private final AiChatComponent aiChatComponent;
private final FormDialog templateEditFormDialog;
public ChatTemplateBaseView(
ChatApi chatApi,
ChatRepository chatRepository,
PromptRepository promptRepository,
AsyncRunner asyncRunner,
ChatSummaryPromptFunction chatSummaryPromptFunction) {
this.templateEditFormDialog = FormUtils.createTemplateFormDialog(getResourceStore());
this.aiChatComponent = new AiChatComponent(
chatApi,
chatRepository,
promptRepository,
getClass(),
null,
this::createChatPrompt,
chatSummaryPromptFunction,
FormUtils.createPromptEditChatCommandHandler(templateEditFormDialog, adminOnyPromptEdit()),
null,
asyncRunner);
}
public ChatTemplateBaseView(
ChatApi chatApi,
ChatRepository chatRepository,
PromptRepository promptRepository,
AsyncRunner asyncRunner) {
this(
chatApi,
chatRepository,
promptRepository,
asyncRunner,
ChatUtils::createSummaryPrompt);
}
protected Map getTemplateVariables() {
return Map.of();
}
protected boolean adminOnyPromptEdit() {
return true;
}
protected abstract HasValueGetterSetter getResourceStore();
@Override
public AiChatComponent getChatComponent() {
return aiChatComponent;
}
protected FormDialog getTemplateEditFormDialog() {
return templateEditFormDialog;
}
protected ChatPrompt createChatPrompt(List chatMessages) {
return ChatPromptTemplateParser.parse(getResourceStore().getValue(), getTemplateVariables(), chatMessages);
}
}