diff --git a/lib/modules/meeting/views/ai_bottom_sheet.dart b/lib/modules/meeting/views/ai_bottom_sheet.dart index 760274ed6..3b847c465 100644 --- a/lib/modules/meeting/views/ai_bottom_sheet.dart +++ b/lib/modules/meeting/views/ai_bottom_sheet.dart @@ -24,6 +24,8 @@ class _AIBottomSheetState extends State { final TextEditingController _texController = TextEditingController(); + String _allText = ''; + List _dataList = []; final List _cruxList = [ @@ -34,6 +36,21 @@ class _AIBottomSheetState extends State { 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 { '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 { }, ); } + + List _getUserMessage() { + List> messages = [ + { + 'role': 'system', + 'content': '你只能根据这段对话记录回答问题,禁止引入外部知识。对话内容:$_allText', + }, + ]; + for (int i = _dataList.length - 1; i >= 0; i--) { + messages.add({'role': 'user', 'content': _dataList[i]['user']}); + } + return messages; + } }