refactor: 重构升级为有状态 Agent
- 完善 hook 对接机制 - 提供更加明确的调用方式
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
package com.easyagents.agent.runtime;
|
||||
|
||||
import com.easyagents.agent.runtime.knowledge.AgentKnowledgeRetriever;
|
||||
import com.easyagents.agent.runtime.persistence.conversation.AgentConversationRecorder;
|
||||
import com.easyagents.agent.runtime.persistence.conversation.noop.NoopAgentConversationRecorder;
|
||||
import com.easyagents.agent.runtime.persistence.session.AgentSessionStore;
|
||||
import com.easyagents.agent.runtime.persistence.session.noop.NoopAgentSessionStore;
|
||||
import com.easyagents.agent.runtime.tool.AgentToolInvoker;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 智能体初始化创建请求参数
|
||||
*/
|
||||
public class AgentInitRequest {
|
||||
|
||||
/**
|
||||
* 会话ID,用于从会话存储中加载和保存当前智能体的上下文状态。
|
||||
*/
|
||||
private String sessionId;
|
||||
|
||||
/**
|
||||
* 智能体定义,包含模型、系统提示词、工具、知识库、记忆策略等静态配置。
|
||||
*/
|
||||
private AgentDefinition agentDefinition;
|
||||
|
||||
/**
|
||||
* 会话状态存储实现,可以实现此接口以管理 session
|
||||
*/
|
||||
private AgentSessionStore sessionStore = NoopAgentSessionStore.INSTANCE;
|
||||
|
||||
/**
|
||||
* 运行时上下文,传递租户、用户、链路等调用环境信息。
|
||||
*/
|
||||
private AgentRuntimeContext runtimeContext = new AgentRuntimeContext();
|
||||
|
||||
/**
|
||||
* 工具集合。
|
||||
*/
|
||||
private Map<String, AgentToolInvoker> toolInvokers = new LinkedHashMap<>();
|
||||
|
||||
/**
|
||||
* 知识库集合,实现AgentKnowledgeRetriever接口以进行知识检索动作。
|
||||
*/
|
||||
private Map<String, AgentKnowledgeRetriever> knowledgeRetrievers = new LinkedHashMap<>();
|
||||
|
||||
/**
|
||||
* 对话事件记录器,用于记录运行时事件流。
|
||||
*/
|
||||
private AgentConversationRecorder conversationRecorder = NoopAgentConversationRecorder.INSTANCE;
|
||||
|
||||
/**
|
||||
* 初始化元数据,用于传递业务侧扩展信息。
|
||||
*/
|
||||
private Map<String, Object> metadata = new LinkedHashMap<>();
|
||||
|
||||
/**
|
||||
* 获取会话ID。
|
||||
*
|
||||
* @return 会话ID
|
||||
*/
|
||||
public String getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置会话ID。
|
||||
*
|
||||
* @param sessionId 会话ID
|
||||
*/
|
||||
public void setSessionId(String sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取智能体定义。
|
||||
*
|
||||
* @return 智能体定义
|
||||
*/
|
||||
public AgentDefinition getAgentDefinition() {
|
||||
return agentDefinition;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置智能体定义。
|
||||
*
|
||||
* @param agentDefinition 智能体定义
|
||||
*/
|
||||
public void setAgentDefinition(AgentDefinition agentDefinition) {
|
||||
this.agentDefinition = agentDefinition;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会话存储。
|
||||
*
|
||||
* @return 会话存储
|
||||
*/
|
||||
public AgentSessionStore getSessionStore() {
|
||||
return sessionStore;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置会话存储。
|
||||
*
|
||||
* @param sessionStore 会话存储
|
||||
*/
|
||||
public void setSessionStore(AgentSessionStore sessionStore) {
|
||||
this.sessionStore = sessionStore == null ? NoopAgentSessionStore.INSTANCE : sessionStore;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运行时上下文。
|
||||
*
|
||||
* @return 运行时上下文
|
||||
*/
|
||||
public AgentRuntimeContext getRuntimeContext() {
|
||||
return runtimeContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置运行时上下文。
|
||||
*
|
||||
* @param runtimeContext 运行时上下文
|
||||
*/
|
||||
public void setRuntimeContext(AgentRuntimeContext runtimeContext) {
|
||||
this.runtimeContext = runtimeContext == null ? new AgentRuntimeContext() : runtimeContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工具调用器。
|
||||
*
|
||||
* @return 工具调用器
|
||||
*/
|
||||
public Map<String, AgentToolInvoker> getToolInvokers() {
|
||||
return toolInvokers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置工具调用器。
|
||||
*
|
||||
* @param toolInvokers 工具调用器
|
||||
*/
|
||||
public void setToolInvokers(Map<String, AgentToolInvoker> toolInvokers) {
|
||||
this.toolInvokers = toolInvokers == null ? new LinkedHashMap<>() : toolInvokers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库检索器。
|
||||
*
|
||||
* @return 知识库检索器
|
||||
*/
|
||||
public Map<String, AgentKnowledgeRetriever> getKnowledgeRetrievers() {
|
||||
return knowledgeRetrievers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置知识库检索器。
|
||||
*
|
||||
* @param knowledgeRetrievers 知识库检索器
|
||||
*/
|
||||
public void setKnowledgeRetrievers(Map<String, AgentKnowledgeRetriever> knowledgeRetrievers) {
|
||||
this.knowledgeRetrievers = knowledgeRetrievers == null ? new LinkedHashMap<>() : knowledgeRetrievers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会话记录器。
|
||||
*
|
||||
* @return 会话记录器
|
||||
*/
|
||||
public AgentConversationRecorder getConversationRecorder() {
|
||||
return conversationRecorder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置会话记录器。
|
||||
*
|
||||
* @param conversationRecorder 会话记录器
|
||||
*/
|
||||
public void setConversationRecorder(AgentConversationRecorder conversationRecorder) {
|
||||
this.conversationRecorder = conversationRecorder == null
|
||||
? NoopAgentConversationRecorder.INSTANCE
|
||||
: conversationRecorder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取元数据。
|
||||
*
|
||||
* @return 元数据
|
||||
*/
|
||||
public Map<String, Object> getMetadata() {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置元数据。
|
||||
*
|
||||
* @param metadata 元数据
|
||||
*/
|
||||
public void setMetadata(Map<String, Object> metadata) {
|
||||
this.metadata = metadata == null ? new LinkedHashMap<>() : metadata;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user