sendMessage method
Implementation
Future<Message> sendMessage(Message message, {List<Context> context = const []}) async {
AiClientResponse response = await client.query(
system: description,
history: _history,
message: message,
contexts: context,
tools: tools,
delay: client.delay,
);
addIntoHistory(
message.type == MessageType.toolResult
? message
: Message(
type: message.type,
content: buildPrompt(prompt: message.content, contexts: context),
),
);
final Message responseMessage;
if (response is ToolResponse) {
addIntoHistory(Message.toolCall(response.rawMessage!));
final toolCalls = (jsonDecode(response.rawMessage!) as List);
final toolCallMessages = await client.makeToolCalls(tools: tools, toolCalls: toolCalls);
final lastMessage = toolCallMessages.removeLast();
_history.addAll(toolCallMessages);
responseMessage = await sendMessage(lastMessage);
} else {
responseMessage = Message.assistant(response.message!);
addIntoHistory(responseMessage);
}
return responseMessage;
}