diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/core/CoreModel.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/core/CoreModel.java index 2d1c2039..0b2b0fb8 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/core/CoreModel.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/core/CoreModel.java @@ -3,12 +3,10 @@ package work.slhaf.partner.module.modules.core; import com.alibaba.fastjson2.JSONObject; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; -import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentRunningModule; +import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule; import work.slhaf.partner.api.agent.factory.module.abstracts.ActivateModel; -import work.slhaf.partner.api.agent.factory.module.annotation.CoreModule; import work.slhaf.partner.api.agent.factory.module.annotation.Init; import work.slhaf.partner.api.chat.ChatClient; import work.slhaf.partner.api.chat.constant.ChatConstant; @@ -29,10 +27,8 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson; @EqualsAndHashCode(callSuper = true) @Data -@Slf4j -@CoreModule -public class CoreModel extends AbstractAgentRunningModule implements ActivateModel { - +public class CoreModel extends AbstractAgentModule.Running implements ActivateModel { + @InjectCapability private CognationCapability cognationCapability; private List appendedMessages = new ArrayList<>(); @@ -252,4 +248,9 @@ public class CoreModel extends AbstractAgentRunningModule { + @JvmField + val log: Logger = LoggerFactory.getLogger(javaClass.simpleName) - fun execute(context: T) + abstract class Running : AbstractAgentModule() { - fun order(): Int + abstract fun execute(context: T) + + abstract fun order(): Int } - interface Sub { - fun execute(input: I): O + abstract class Sub : AbstractAgentModule() { + abstract fun execute(input: I): O } - interface Standalone + abstract class Standalone // TODO 后续于此处扩展生命周期内容 } interface ActivateModel { + val model: Model + get() = modelMap.computeIfAbsent(modelKey()) { + buildModel() + } + companion object { val modelMap: MutableMap = mutableMapOf() private val configManager: AgentConfigManager = AgentConfigManager.INSTANCE } - fun getModel(): Model { - fun buildModel(): Model { - val modelConfig = configManager.loadModelConfig(modelKey()) - val chatClient = ChatClient(modelConfig.baseUrl, modelConfig.apikey, modelConfig.model) - val model = Model(chatClient) - - val baseMessages = if (withBasicPrompt()) { - loadSpecificPromptAndBasicPrompt(modelKey()) - } else { - configManager.loadModelPrompt(modelKey()) - } - model.baseMessages.addAll(baseMessages) - return model - } - - val model = modelMap.computeIfAbsent(modelKey()) { - buildModel() - } - return model - } - @Init(order = -1) fun modelSettings() { - val model = getModel() - modelMap[modelKey()] = model + modelMap[modelKey()] = buildModel() + } + + fun buildModel(): Model { + val modelConfig = configManager.loadModelConfig(modelKey()) + val chatClient = ChatClient(modelConfig.baseUrl, modelConfig.apikey, modelConfig.model) + val model = Model(chatClient) + + val baseMessages = if (withBasicPrompt()) { + loadSpecificPromptAndBasicPrompt(modelKey()) + } else { + configManager.loadModelPrompt(modelKey()) + } + model.baseMessages.addAll(baseMessages) + return model } private fun loadSpecificPromptAndBasicPrompt(modelKey: String): MutableList { @@ -74,7 +77,6 @@ interface ActivateModel { } fun chat(): ChatResponse { - val model = this.getModel() val temp = ArrayList() temp.addAll(model.baseMessages) temp.addAll(model.chatMessages) @@ -82,14 +84,12 @@ interface ActivateModel { } fun singleChat(input: String): ChatResponse { - val model = this.getModel() val temp = ArrayList(model.baseMessages) temp.add(Message(ChatConstant.Character.USER, input)) return model.chatClient.runChat(temp) } fun updateChatClientSettings() { - val model = this.getModel() model.chatClient.temperature = 0.4 model.chatClient.top_p = 0.8 }