|
|
|
@ -403,13 +403,18 @@ class ChatController extends GetxController { |
|
|
|
messages: messageHistory, |
|
|
|
systemPrompt: agent.systemPrompt, |
|
|
|
); |
|
|
|
|
|
|
|
Logger.info( |
|
|
|
'liwei----------- 发送用户提问 ${text}', |
|
|
|
); |
|
|
|
// 订阅响应流 |
|
|
|
_aiResponseSubscription = responseStream.listen( |
|
|
|
(chunk) { |
|
|
|
if (_shouldCancelAiResponse) return; |
|
|
|
Logger.info('chat ${chunk}'); |
|
|
|
if (chunk is Map) { |
|
|
|
Logger.info( |
|
|
|
'liwei-----------收到卡片消息 ${chunk}', |
|
|
|
); |
|
|
|
_updateIntermediateMessage(meta: chunk); |
|
|
|
if (chunk['card_spotify'] != null) { |
|
|
|
play(chunk['card_spotify']); |
|
|
|
@ -428,6 +433,9 @@ class ChatController extends GetxController { |
|
|
|
} |
|
|
|
}, |
|
|
|
onDone: () { |
|
|
|
Logger.info( |
|
|
|
'liwei-----------结束当前问题 ${text}', |
|
|
|
); |
|
|
|
if (_shouldCancelAiResponse) return; |
|
|
|
|
|
|
|
// 完成响应,将isIntermediate设为false |
|
|
|
@ -457,9 +465,13 @@ class ChatController extends GetxController { |
|
|
|
final List<Map<String, String>> messageHistory = []; |
|
|
|
|
|
|
|
// 只取最近的10条消息作为上下文 |
|
|
|
final recentMessages = messages.where((m) => m.role == "user").toList(); |
|
|
|
final recentMessages = messages.where((m) => !m.isIntermediate).toList(); |
|
|
|
final startIndex = |
|
|
|
recentMessages.length > 10 ? recentMessages.length - 10 : 0; |
|
|
|
messageHistory.add({ |
|
|
|
'role': 'user', |
|
|
|
'content': '我当前所在城市是$_city,我的经纬度是$_latLng', |
|
|
|
}); |
|
|
|
|
|
|
|
for (int i = startIndex; i < recentMessages.length; i++) { |
|
|
|
final m = recentMessages[i]; |
|
|
|
@ -467,12 +479,6 @@ class ChatController extends GetxController { |
|
|
|
'role': m.role, |
|
|
|
'content': m.content, |
|
|
|
}); |
|
|
|
if (i == recentMessages.length - 2) { |
|
|
|
messageHistory.add({ |
|
|
|
'role': 'user', |
|
|
|
'content': '当需要获取我的位置时,我当前在$_city,我的经纬度是$_latLng', |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return messageHistory; |
|
|
|
|