|
|
|
@ -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( |
|
|
|
|