Browse Source

优化会议记录总结任务

newdev_shunjiawei
tanlongsheng 11 months ago
parent
commit
febe53365d
  1. 4
      lib/data/services/deapsound_ai_service.dart
  2. 65
      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())) {

65
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;
var overviewDone = false;
var summarySuccess = false;
var overviewSuccess = false;
void tryFinish() {
if (summaryDone && overviewDone) {
if (summarySuccess &&
overviewSuccess &&
summaryText.isNotEmpty &&
overviewText.isNotEmpty) {
_aiServiceValue(id, summaryText, overviewText);
} else {
_isTask = false;
_executeTask();
}
}
}
final summaryStream = ai.sendMessageStream(messages: [
{'role': 'system', 'content': prompt}, {'role': 'system', 'content': prompt},
{'role': 'user', 'content': text}, {'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 300)), ]).timeout(const Duration(seconds: 120));
ai.sendMessage(messages: [
final overviewStream = ai.sendMessageStream(messages: [
{'role': 'system', 'content': outline}, {'role': 'system', 'content': outline},
{'role': 'user', 'content': text}, {'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 300)), ]).timeout(const Duration(seconds: 120));
], eagerError: true);
_aiServiceValue(id, results[0], results[1]); summaryStream.listen((chunk) {
} catch (e) { summaryText += chunk;
_isTask = false; }, onError: (error) {
_executeTask(); 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