Revert "feat: support regenerating ai results #2012 (#2528)" (#2642)

This reverts commit 1f1a97b21b.
This commit is contained in:
Alex Wallen 2023-05-28 11:56:38 -10:00 committed by GitHub
parent 5a7339b092
commit 32650b7941
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 127 deletions

View File

@ -360,7 +360,6 @@
"autoGeneratorGenerate": "Generate",
"autoGeneratorHintText": "Ask OpenAI ...",
"autoGeneratorCantGetOpenAIKey": "Can't get OpenAI key",
"autoGeneratorRewrite": "Rewrite",
"smartEdit": "AI Assistants",
"openAI": "OpenAI",
"smartEditFixSpelling": "Fix spelling",

View File

@ -1,4 +1,5 @@
import 'dart:convert';
import 'package:appflowy/plugins/document/presentation/plugins/openai/service/openai_client.dart';
import 'package:appflowy/plugins/document/presentation/plugins/openai/util/learn_more_action.dart';
import 'package:appflowy/plugins/document/presentation/plugins/openai/widgets/discard_dialog.dart';
@ -20,8 +21,6 @@ import '../util/editor_extension.dart';
const String kAutoCompletionInputType = 'auto_completion_input';
const String kAutoCompletionInputString = 'auto_completion_input_string';
const String kAutoCompletionGenerationCount =
'auto_completion_generation_count';
const String kAutoCompletionInputStartSelection =
'auto_completion_input_start_selection';
@ -125,8 +124,7 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
}
Widget _buildAutoGeneratorPanel(BuildContext context) {
if (text.isEmpty &&
widget.node.attributes[kAutoCompletionGenerationCount] < 1) {
if (text.isEmpty) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
@ -206,15 +204,6 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
);
}
Future<void> _updateGenerationCount() async {
final transaction = widget.editorState.transaction;
transaction.updateNode(widget.node, {
kAutoCompletionGenerationCount:
widget.node.attributes[kAutoCompletionGenerationCount] + 1
});
await widget.editorState.apply(transaction);
}
Widget _buildFooterWidget(BuildContext context) {
return Row(
children: [
@ -223,11 +212,6 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
onPressed: () => _onExit(),
),
const Space(10, 0),
SecondaryTextButton(
LocaleKeys.document_plugins_autoGeneratorRewrite.tr(),
onPressed: () => _onRewrite(),
),
const Space(10, 0),
SecondaryTextButton(
LocaleKeys.button_discard.tr(),
onPressed: () => _onDiscard(),
@ -288,7 +272,6 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
await _showError(error.message);
},
);
await _updateGenerationCount();
}, (error) async {
loading.stop();
await _showError(
@ -297,88 +280,6 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
});
}
Future<void> _onRewrite() async {
String previousOutput = _getPreviousOutput()!;
final loading = Loading(context);
loading.start();
// clear previous response
final selection =
widget.node.attributes[kAutoCompletionInputStartSelection];
if (selection != null) {
final start = Selection.fromJson(json.decode(selection)).start.path;
final end = widget.node.previous?.path;
if (end != null) {
final transaction = widget.editorState.transaction;
transaction.deleteNodesAtPath(
start,
end.last - start.last + 1,
);
await widget.editorState.apply(transaction);
}
}
// generate new response
final result = await UserBackendService.getCurrentUserProfile();
result.fold((userProfile) async {
final openAIRepository = HttpOpenAIRepository(
client: http.Client(),
apiKey: userProfile.openaiKey,
);
await openAIRepository.getStreamedCompletions(
prompt: _rewritePrompt(previousOutput),
onStart: () async {
loading.stop();
await _makeSurePreviousNodeIsEmptyTextNode();
},
onProcess: (response) async {
if (response.choices.isNotEmpty) {
final text = response.choices.first.text;
await widget.editorState.autoInsertText(
text,
inputType: TextRobotInputType.word,
delay: Duration.zero,
);
}
},
onEnd: () async {},
onError: (error) async {
loading.stop();
await _showError(error.message);
},
);
await _updateGenerationCount();
}, (error) async {
loading.stop();
await _showError(
LocaleKeys.document_plugins_autoGeneratorCantGetOpenAIKey.tr(),
);
});
}
String? _getPreviousOutput() {
final selection =
widget.node.attributes[kAutoCompletionInputStartSelection];
if (selection != null) {
final start = Selection.fromJson(json.decode(selection)).start.path;
final end = widget.node.previous?.path;
if (end != null) {
String lastOutput = "";
for (var i = start.last; i < end.last - start.last + 2; i++) {
TextNode? textNode =
widget.editorState.document.nodeAtPath([i]) as TextNode?;
lastOutput = "$lastOutput ${textNode!.toPlainText()}";
}
return lastOutput.trim();
}
}
return null;
}
String _rewritePrompt(String previousOutput) {
String prompt =
'I am not satisfied with your previous response($previousOutput) to the query ($text) please write another one';
return prompt;
}
Future<void> _onDiscard() async {
final selection =
widget.node.attributes[kAutoCompletionInputStartSelection];
@ -392,7 +293,6 @@ class _AutoCompletionInputState extends State<_AutoCompletionInput> {
end.last - start.last + 1,
);
await widget.editorState.apply(transaction);
await _makeSurePreviousNodeIsEmptyTextNode();
}
}
_onExit();

View File

@ -14,7 +14,6 @@ SelectionMenuItem autoGeneratorMenuItem = SelectionMenuItem.node(
type: kAutoCompletionInputType,
attributes: {
kAutoCompletionInputString: '',
kAutoCompletionGenerationCount: 0,
},
);
return node;

View File

@ -211,15 +211,15 @@ class _SmartEditInputState extends State<_SmartEditInput> {
}
Widget _buildResultWidget(BuildContext context) {
final loadingWidget = Padding(
final loading = Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: SizedBox.fromSize(
size: const Size.square(14),
child: const CircularProgressIndicator(),
),
);
if (result.isEmpty || loading) {
return loadingWidget;
if (result.isEmpty) {
return loading;
}
return Flexible(
child: Text(
@ -231,18 +231,6 @@ class _SmartEditInputState extends State<_SmartEditInput> {
Widget _buildInputFooterWidget(BuildContext context) {
return Row(
children: [
FlowyRichTextButton(
TextSpan(
children: [
TextSpan(
text: LocaleKeys.document_plugins_autoGeneratorRewrite.tr(),
style: Theme.of(context).textTheme.bodyMedium,
),
],
),
onPressed: () => _requestCompletions(rewrite: true),
),
const Space(10, 0),
FlowyRichTextButton(
TextSpan(
children: [
@ -284,7 +272,7 @@ class _SmartEditInputState extends State<_SmartEditInput> {
),
onPressed: () async => await _onExit(),
),
const Spacer(flex: 1),
const Spacer(flex: 2),
Expanded(
child: FlowyText.regular(
overflow: TextOverflow.ellipsis,
@ -371,13 +359,7 @@ class _SmartEditInputState extends State<_SmartEditInput> {
);
}
Future<void> _requestCompletions({bool rewrite = false}) async {
if (rewrite) {
setState(() {
loading = true;
result = "";
});
}
Future<void> _requestCompletions() async {
final openAIRepository = await getIt.getAsync<OpenAIRepository>();
var lines = input.split('\n\n');