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);
final response = await client.send(request);
if (response.statusCode != 200) {
throw Exception('Unknown error');
}
await for (final chunk in response.stream
.transform(utf8.decoder)
.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);
}
Future<void> _aiServiceMessage(
int id, String text, String prompt, String outline) async {
void _aiServiceMessage(int id, String text, String prompt, String outline) {
final ai = DeapsoundAIService();
try {
final results = await Future.wait([
ai.sendMessage(messages: [
{'role': 'system', 'content': prompt},
{'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 300)),
ai.sendMessage(messages: [
{'role': 'system', 'content': outline},
{'role': 'user', 'content': text},
]).timeout(const Duration(seconds: 300)),
], eagerError: true);
_aiServiceValue(id, results[0], results[1]);
} catch (e) {
_isTask = false;
_executeTask();
String summaryText = '';
String overviewText = '';
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': '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(

Loading…
Cancel
Save