|
|
|
@ -24,6 +24,8 @@ class _AIBottomSheetState extends State<AIBottomSheet> { |
|
|
|
|
|
|
|
final TextEditingController _texController = TextEditingController(); |
|
|
|
|
|
|
|
String _allText = ''; |
|
|
|
|
|
|
|
List _dataList = []; |
|
|
|
|
|
|
|
final List _cruxList = [ |
|
|
|
@ -34,6 +36,21 @@ class _AIBottomSheetState extends State<AIBottomSheet> { |
|
|
|
|
|
|
|
bool _isLoading = false; |
|
|
|
|
|
|
|
@override |
|
|
|
void initState() { |
|
|
|
super.initState(); |
|
|
|
_getAllText(); |
|
|
|
} |
|
|
|
|
|
|
|
void _getAllText() { |
|
|
|
for (var element in _controller.textList) { |
|
|
|
if (element['speaker'].isNotEmpty) { |
|
|
|
_allText += '${element['speaker']}:'; |
|
|
|
} |
|
|
|
_allText += '${element['content']}\n'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@override |
|
|
|
void dispose() { |
|
|
|
_texController.dispose(); |
|
|
|
@ -279,9 +296,12 @@ class _AIBottomSheetState extends State<AIBottomSheet> { |
|
|
|
'assistant': '', |
|
|
|
}); |
|
|
|
}); |
|
|
|
_scrollController.jumpTo(0); |
|
|
|
if (_dataList.length > 1) { |
|
|
|
_scrollController.jumpTo(0); |
|
|
|
} |
|
|
|
final responseStream = _deapsoundAI.sendMessageStream( |
|
|
|
messages: [ |
|
|
|
..._getUserMessage(), |
|
|
|
{'role': 'user', 'content': value}, |
|
|
|
], |
|
|
|
); |
|
|
|
@ -298,4 +318,17 @@ class _AIBottomSheetState extends State<AIBottomSheet> { |
|
|
|
}, |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
List _getUserMessage() { |
|
|
|
List<Map<String, String>> messages = [ |
|
|
|
{ |
|
|
|
'role': 'system', |
|
|
|
'content': '你只能根据这段对话记录回答问题,禁止引入外部知识。对话内容:$_allText', |
|
|
|
}, |
|
|
|
]; |
|
|
|
for (int i = _dataList.length - 1; i >= 0; i--) { |
|
|
|
messages.add({'role': 'user', 'content': _dataList[i]['user']}); |
|
|
|
} |
|
|
|
return messages; |
|
|
|
} |
|
|
|
} |
|
|
|
|