initSession method
Future<SessionDto>
initSession(
- CapabilityDto capabilityDto,
- void listen(
- String sessionId,
- AgentMessageDto agentMessageDto
- Map<
String, OpenToolDriver> ? opentoolDriverMap, - List<
ToolDriver> ? customToolDriverList, - void listenChunk(
- String sessionId,
- AgentMessageChunkDto agentMessageChunkDto
Implementation
Future<SessionDto> initSession(
CapabilityDto capabilityDto,
void Function(String sessionId, AgentMessageDto agentMessageDto) listen, {
Map<String, OpenToolDriver>? opentoolDriverMap,
List<ToolDriver>? customToolDriverList,
void Function(String sessionId, AgentMessageChunkDto agentMessageChunkDto)? listenChunk
}) async {
String sessionId = uniqueId();
String systemPrompt = capabilityDto.systemPrompt;
LLMConfig llmConfig = capabilityDto.llmConfig.toModel();
List<ReflectPrompt>? reflectPromptList = capabilityDto.reflectPromptList?.map((reflectPromptDto) => ReflectPrompt(llmConfig: reflectPromptDto.llmConfig.toModel(), prompt: reflectPromptDto.prompt)).toList();
if(opentoolDriverMap != null) opentoolDriverMap.forEach((key, value) { this.opentoolDriverMap[key] = value;});
// if(capabilityDto.clientOpenTool != null && listenClientFunctionCall != null) {
// OpenTool clientOpenTool = await OpenToolLoader().load(capabilityDto.clientOpenTool!.opentool);
//
// clientDriverMap[sessionId] = ClientDriver(listenFunctionCall, timeout: capabilityDto.clientOpenTool?.timeout??60).bind(clientOpenTool) as ClientDriver;
// }
List<ToolDriver> agentToolDriverList = [];
agentToolDriverList.addAll(globalDriverList);
agentToolDriverList.addAll(await _buildToolDriverList(capabilityDto.openSpecList));
agentToolDriverList.addAll(await _buildAgentDriverList(capabilityDto.sessionList, sessionId, listen));
if(customToolDriverList != null) agentToolDriverList.addAll(customToolDriverList);
// if(clientDriverMap[sessionId] != null) agentToolDriverList.add(clientDriverMap[sessionId]!);
if(agentToolDriverList.isEmpty && capabilityDto.clientOpenTool == null) {
SessionAgent textAgent = TextAgent(
sessionId: sessionId,
llmConfig: llmConfig,
agentSession: _buildSession(sessionId, listen, listenChunk: listenChunk),
systemPrompt: systemPrompt,
textReflectPromptList: reflectPromptList??[],
timeoutSeconds: capabilityDto.timeoutSeconds,
taskPipelineStrategy: capabilityDto.taskPipelineStrategy
);
sessionAgents[sessionId] = textAgent;
} else {
ClientOpenTool? clientOpenTool = null;
if(capabilityDto.clientOpenTool != null) clientOpenTool = ClientOpenTool(opentool: capabilityDto.clientOpenTool!.opentool, timeout: capabilityDto.clientOpenTool!.timeout, fetchClientDriver: this.fetchClientDriver);
SessionAgent toolAgent = ToolAgent(
sessionId: sessionId,
llmConfig: llmConfig,
agentSession: _buildSession(sessionId, listen, listenChunk: listenChunk),
toolDriverList: agentToolDriverList,
clientOpenTool: clientOpenTool,
systemPrompt: systemPrompt,
toolReflectPromptList: reflectPromptList??[],
timeoutSeconds: capabilityDto.timeoutSeconds,
taskPipelineStrategy: capabilityDto.taskPipelineStrategy,
toolPipelineStrategy: capabilityDto.toolPipelineStrategy??PipelineStrategyType.PARALLEL
);
sessionAgents[sessionId] = toolAgent;
}
SessionDto sessionDto = SessionDto(sessionId: sessionId);
return sessionDto;
}