/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
*/
package magic.agent
import magic.core.*
import magic.tool.SimpleToolManager
import magic.core.model.ChatModel
import std.collection.{HashMap, map, collectArray, ArrayList}
/**
* This class is used to define customized agents via APIs instead of @agent.
*/
open public class BaseAgent <: AbsAgent {
protected var _name: String = ""
protected var _description: String = ""
protected var _temperature: Option<Float64> = None
protected var _systemPrompt: String = ""
protected var _toolManager: ToolManager = SimpleToolManager()
protected var _model: ChatModel
protected var _executor: Option<AgentExecutor> = None
protected var _retriever: Option<Retriever> = None
protected var _memory: Option<Memory> = None
protected var _interceptor: Option<Interceptor> = None
public init(
model!: ChatModel,
name!: String = "Base Agent",
description!: String = "",
temperature!: Option<Float64> = None,
systemPrompt!: String = "",
toolManager!: ToolManager = SimpleToolManager(),
executor!: Option<AgentExecutor> = None,
retriever!: Option<Retriever> = None,
memory!: Option<Memory> = None,
interceptor!: Option<Interceptor> = None
) {
this._name = name
this._description = description
this._temperature = temperature
this._systemPrompt = systemPrompt
this._toolManager = toolManager
this._model = model
this._executor = executor
this._retriever = retriever
this._memory = memory
this._interceptor = interceptor
}
override public prop name: String { get() { _name } }
override public prop description: String { get() { _description } }
override public mut prop temperature: Option<Float64> {
get() { _temperature }
set(v) { _temperature = v }
}
override public mut prop systemPrompt: String {
get() { _systemPrompt }
set(v) { _systemPrompt = v }
}
override public prop toolManager: ToolManager { get() { _toolManager } }
override public mut prop model: ChatModel {
get() { _model }
set(m) { _model = m }
}
override public mut prop executor: AgentExecutor {
get() { _executor.getOrThrow() }
set(e) { _executor = e }
}
override public mut prop retriever: Option<Retriever> {
get() { _retriever }
set(v) { _retriever = v }
}
override public mut prop memory: Option<Memory> {
get() { _memory }
set(m) { _memory = m }
}
override public mut prop interceptor: Option<Interceptor> {
get() { _interceptor }
set(v) { _interceptor = v }
}
}