getAIMessages method
获取AI消息的上下文 仅对数字人单聊
Implementation
List<NIMAIModelCallMessage?>? getAIMessages() {
int size = min(_messageList.length, aiMessageSize);
List<NIMAIModelCallMessage?>? aiMessages;
if (isAIUser() && _messageList.isNotEmpty) {
aiMessages = <NIMAIModelCallMessage?>[];
//第一条消息不能是数字人消息
// 标记是否已经设置过第一条消息
bool firstSet = false;
for (int index = 0; index < size; index++) {
final message = _messageList[index];
bool isFromAI = AIUserManager.instance.isAIUser(
message.nimMessage.senderId,
);
//1 如果第一条是数字人消息,则不再添加
//2 如果消息已经撤回,则不再添加
//3 如果消息没有服务器ID,说明不是发出去的消息,则不再添加
//4 如果没有消息内容,则不再添加
if ((!firstSet && !isFromAI) ||
message.isRevoke ||
message.nimMessage.messageServerId?.isNotEmpty != true ||
ChatMessageHelper.getAIContentMsg(message.nimMessage)?.isNotEmpty !=
true) {
continue;
}
firstSet = true;
aiMessages.add(
NIMAIModelCallMessage(
type: 0,
msg: ChatMessageHelper.getAIContentMsg(message.nimMessage),
role: isFromAI
? NIMAIModelRoleType.assistant
: NIMAIModelRoleType.user,
),
);
}
}
return aiMessages;
}