All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.ai.vaadin.view.ChatBaseView Maven / Gradle / Ivy

The newest version!
package fi.evolver.ai.vaadin.view;

import java.io.Serial;
import java.util.List;

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.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.util.ChatUtils;

public abstract class ChatBaseView extends ChatHistoryAwareView {
	@Serial
	private static final long serialVersionUID = 1L;

	private final AiChatComponent aiChatComponent;

	public ChatBaseView(
			ChatApi chatApi,
			ChatRepository chatRepository,
			PromptRepository promptRepository,
			AsyncRunner asyncRunner,
			ChatSummaryPromptFunction chatSummaryPromptFunction) {

		this.aiChatComponent = new AiChatComponent(
				chatApi,
				chatRepository,
				promptRepository,
				getClass(),
				this::createChatPrompt,
				chatSummaryPromptFunction,
				asyncRunner);
	}

	public ChatBaseView(
			ChatApi chatApi,
			ChatRepository chatRepository,
			PromptRepository promptRepository,
			AsyncRunner asyncRunner) {

		this(
				chatApi,
				chatRepository,
				promptRepository,
				asyncRunner,
				ChatUtils::createSummaryPrompt);
	}

	@Override
	public AiChatComponent getChatComponent() {
		return aiChatComponent;
	}

	protected abstract ChatPrompt createChatPrompt(List chatMessages);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy