Browse Source

优化会议记录总结任务

newdev_shunjiawei
tanlongsheng 11 months ago
parent
commit
febe53365d
  1. 4
      lib/data/services/deapsound_ai_service.dart
  2. 71
      lib/data/services/meeting/summary_task_service.dart

4
lib/data/services/deapsound_ai_service.dart

@ -78,6 +78,10 @@ class DeapsoundAIService implements AiService {
..body = jsonEncode(requestBody); ..body = jsonEncode(requestBody);
final response = await client.send(request); final response = await client.send(request);
if (response.statusCode != 200) {
throw Exception('Unknown error');
}
await for (final chunk in response.stream await for (final chunk in response.stream
.transform(utf8.decoder) .transform(utf8.decoder)
.transform(const LineSplitter())) { .transform(const LineSplitter())) {

71
lib/data/services/meeting/summary_task_service.dart

@ -66,25 +66,62 @@ class SummaryTaskService extends GetxService {
_storage.write("summary_task_list", _taskList); _storage.write("summary_task_list", _taskList);
} }
Future<void> _aiServiceMessage( void _aiServiceMessage(int id, String text, String prompt, String outline) {
int id, String text, String prompt, String outline) async {
final ai = DeapsoundAIService(); final ai = DeapsoundAIService();
try { String summaryText = '';
final results = await Future.wait([ String overviewText = '';
ai.sendMessage(messages: [ var summaryDone = false;
{'role': 'system', 'content': prompt}, var overviewDone = false;
{'role': 'user', 'content': text}, var summarySuccess = false;
]).timeout(const Duration(seconds: 300)), var overviewSuccess = false;
ai.sendMessage(messages: [
{'role': 'system', 'content': outline}, void tryFinish() {
{'role': 'user', 'content': text}, if (summaryDone && overviewDone) {
]).timeout(const Duration(seconds: 300)), if (summarySuccess &&
], eagerError: true); overviewSuccess &&
_aiServiceValue(id, results[0], results[1]); summaryText.isNotEmpty &&
} catch (e) { overviewText.isNotEmpty) {
_isTask = false; _aiServiceValue(id, summaryText, overviewText);
_executeTask(); } else {
_isTask = false;
_executeTask();
}
}
} }
final summaryStream = ai.sendMessageStream(messages: [
{'role': 'system', 'content': prompt},
{'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 120));
final overviewStream = ai.sendMessageStream(messages: [
{'role': 'system', 'content': outline},
{'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 120));
summaryStream.listen((chunk) {
summaryText += chunk;
}, onError: (error) {
summaryDone = true;
summarySuccess = false;
tryFinish();
}, onDone: () {
summaryDone = true;
summarySuccess = true;
tryFinish();
}, cancelOnError: true);
overviewStream.listen((chunk) {
overviewText += chunk;
}, onError: (error) {
overviewDone = true;
overviewSuccess = false;
tryFinish();
}, onDone: () {
overviewDone = true;
overviewSuccess = true;
tryFinish();
}, cancelOnError: true);
} }
Future<void> _aiServiceValue( Future<void> _aiServiceValue(

Loading…
Cancel
Save