QOwnNotes icon indicating copy to clipboard operation
QOwnNotes copied to clipboard

[FEATURE] Add "AI" support

Open pbek opened this issue 1 year ago • 18 comments

I want to try to integrate support for the OpenAI Autocomplete API to see where that leads us. I mainly plan to expose that to the scripting engine, so users can come up with new ideas of what to do with it. 😊

pbek avatar May 10 '24 06:05 pbek

Currently, you can create API Keys at https://console.groq.com/keys for free to play around.

pbek avatar May 10 '24 06:05 pbek

Many thanks for this interesting development, Patrizio. Unfortunately, the AI toolbar doesn't function properly in my portable installation (24.5.4, with previously customised toolbars and layout). Only one button can be enabled manually (first row, far right):

image

On a clean portable install, this is how it looks with two drop-down lists (AI toolbar moved down to improve screenshot):

image

Is there anything I can do to make it work in my existing installation? In the AI toolbar settings, AI backend selector and AI model selector (which provide the drop-down lists) are not listed, and I couldn't find those in any of the toolbar items in the left column.

alexanderino avatar May 20 '24 01:05 alexanderino

Update: the issue has been fixed by editing QOwnNotes.ini. I removed some lines (struck out below) and re-numbered (highlighted in bold) the subsequent lines:

~~5\name=aiToolbar~~ ~~5\title=AI toolbar~~ ~~5\items=@Invalid()~~ 6\name=windowToolbar 6\title=window toolbar 6\items=actionWorkspaceComboBox, actionStore_as_new_workspace, actionRemove_current_workspace, actionRename_current_workspace, actionSwitch_to_previous_workspace, actionUnlock_panels, , actionToggle_distraction_free_mode, action_Increase_note_text_size, action_Decrease_note_text_size, action_Reset_note_text_size 7\name=quitToolbar 7\title=quit toolbar 7\items=action_Export_note_as_PDF_markdown, actionExport_preview_HTML, customAction_pandocExport, action_Settings, action_Quit

New code:

5\name=windowToolbar
5\title=window toolbar
5\items=actionWorkspaceComboBox, actionStore_as_new_workspace, actionRemove_current_workspace, actionRename_current_workspace, actionSwitch_to_previous_workspace, actionUnlock_panels, , actionToggle_distraction_free_mode, action_Increase_note_text_size, action_Decrease_note_text_size, action_Reset_note_text_size
6\name=quitToolbar
6\title=quit toolbar
6\items=action_Export_note_as_PDF_markdown, actionExport_preview_HTML, customAction_pandocExport, action_Settings, action_Quit

alexanderino avatar May 20 '24 04:05 alexanderino

If the toolbar gets too long it's just cut off, you can either move toolbar items to somewhere else or turn off toolbars you don't need.

pbek avatar May 20 '24 05:05 pbek

It's not the length. I could move the AI toolbar item to the start, and it would still show only one button (after adding it manually — until then, there was no button on the AI toolbar).

Anyway, editing it out of the INI file fixed the issue.

alexanderino avatar May 20 '24 05:05 alexanderino

Only one button? Did you try to move the enable button from the main menu to a toolbar manually? There is an AI toolbar with the button and two selectors, that just can be turned on...

pbek avatar May 20 '24 05:05 pbek

There is an AI toolbar with the button and two selectors, that just can be turned on...

I turned it on after upgrading to 24.5.4, and only a blank toolbar (no icons) appeared.

Only one button? Did you try to move the enable button from the main menu to a toolbar manually?

Yes, and that's how I managed to show the 'database' button. The two dropdown list items are nowhere to be found.

alexanderino avatar May 20 '24 05:05 alexanderino

I turned it on after upgrading to 24.5.4, and only a blank toolbar (no icons) appeared.

Really!? What OS and what Qt version do you have?

Yes, and that's how I managed to show the 'database' button. The two dropdown list items are nowhere to be found.

Yes, there is no drop-down in the main menu. Those are added in source code, like e.g. the workspace selector. 🤔

pbek avatar May 20 '24 05:05 pbek

Really!? What OS and what Qt version do you have?

Windows 11, Qt 5.15.2 (official 24.5.2 build). Also occurs with Windows 10.

alexanderino avatar May 20 '24 05:05 alexanderino

I just tried it on a Windows 8 VM. Updated from a year-old release of QOwnNotes. The AI Toolbar was intact for me, just cut off because there was no space to show it in full... I made a little room and the backend and model selector were present.

pbek avatar May 20 '24 09:05 pbek

Is the toolbar layout/buttons customised?

alexanderino avatar May 20 '24 09:05 alexanderino

The AI toolbar? No.

pbek avatar May 20 '24 09:05 pbek

I customised other toolbars' buttons before the AI toolbar was introduced. Those changes are stored in the QOwnNotes.ini file. Maybe this is what resulted in my issue. After all, a clean portable install of 24.5.4 has no problems with the AI toolbar.

alexanderino avatar May 20 '24 09:05 alexanderino

Hm, maybe... And you are really sure the toolbar was not just cut off? Your first screenshot doesn't really show that. 🤔

pbek avatar May 20 '24 09:05 pbek

Definitely not cut off. Both rows are fully presented. I've highlighted the AI toolbar, showing the blank space where the drop-down lists should have been:

image

alexanderino avatar May 20 '24 09:05 alexanderino

If there is not enough room, the whole widget will not be shown. I can't say if there was enough room on your screenshot.

pbek avatar May 20 '24 10:05 pbek

I have a backup of the INI file before I modified it. Here are screenshots of the entire program using it:

Upon start-up, the AI Toolbar is hiding here:

image

AI toolbar moved up to the top row and expanded. No buttons are visible:

image

No button listed in the AI toolbar settings:

image

Enable AI support added from the Edit toolbar item list:

image

This is the result — one button:

image

alexanderino avatar May 20 '24 10:05 alexanderino

Interesting, good to know. Thank you!

pbek avatar May 20 '24 17:05 pbek

24.5.8

  • You can now also select an AI model to use in the Edit main menu, instead of only in the AI toolbar (for #3026)

24.5.7

24.5.5

  • Try to fix build on very old build systems again (for #3026)
  • The scripting command script.inputDialogGetItem will now return an empty string, if Cancel was clicked or Escape was pressed

24.5.4

  • Try to fix build on very old build systems (for #3026)

24.5.3

  • QOwnNotes now has AI support, currently for Groq (because you can get free API keys) and OpenAI (for #3026)
    • There is a new AI toolbar where can turn the service on, and you can select the AI backend and model
    • As a first step, there is a new script AI Autocompletion in the script repository that uses the selected AI model to autocomplete the current block in the note text edit
    • You can now add a OpenAI API key in the new AI settings
    • Use the new script.aiComplete(prompt) scripting command to your own imagination (see below)
  • There now is a new scripting command script.aiComplete(prompt) to use a completion prompt on the currently selected AI model (for #3026)
  • There now is a new scripting command script.noteTextEditCurrentBlock() to get the text of the current block (for #3026)

24.5.2

  • The first part of the upcoming AI support is already visible

pbek avatar May 24 '24 05:05 pbek

Also, see the blog post AI support was added to QOwnNotes.

pbek avatar May 24 '24 06:05 pbek