longy2k / obsidian-bmo-chatbot

Generate and brainstorm ideas while creating your notes using Large Language Models (LLMs) from Ollama, LM Studio, Anthropic, Google Gemini, Mistral AI, OpenAI, and more for Obsidian.
https://ko-fi.com/longy2k
MIT License
345 stars 43 forks source link

Feature Request - Profiles #56

Closed twalderman closed 6 months ago

twalderman commented 7 months ago

As a User I would like to save all my BMO settings in Profiles, so I can load presets to switch functionality and settings.

1) Given that I save a Profile, it is added to the list of valid profiles, so I can select it later as a preset. 2) Given that I make changes to a profile, I can update the saved Profile, so that I can use those settings later. 3) Given that I have an ollama model profile, when I switch profiles, the ollama specific information is changed 4) Given that a profile has API settings, those settings will be saved in a profile. 5) Given that I change a profile, models will change as well.

longy2k commented 6 months ago

Yeah, I plan on implementing presets/profiles soon!

twalderman commented 6 months ago

Intelligence Profile mgmt

Consider this method for Managing, the loading of presets (assistants) and context (conversations) you have a lot of space in the header that can be redesigned.

longy2k commented 6 months ago

v.1.90

Breaking Changes

If you have <v1.9.0, please perform the following instructions:

  1. Go to Options > Community plugins and click on the folder's icon:

    Screenshot 2024-03-10 at 9 28 38 PM
  2. Close Obsidian completely.

  3. Find the bmo-chatbot folder and delete data.json.

  4. Restart Obsidian.

longy2k commented 6 months ago

When switching profiles/presets, I opted for a /profile command.

Type /p, /prof, /profiles, or /profiles to list profiles from your specified folder.

Type the command with the corresponding value or name (case insensitive) to switch profiles.

For example:

twalderman commented 6 months ago

This is awesome but there is value in having profiles and separate prompts Context should be: Profile Prompt Ref Doc Input

This allows for complete versatility.

longy2k commented 6 months ago

I can see value in quickly swapping profiles, prompts, and reference docs, depending on the context.

My thought process for this update and future updates is to have everything within your profile system prompt.

For example:

You are a helpful assistant.

### Available Prompts
- [[Prompt 1]]
- [[Prompt 2]]
- [[Prompt 3]]

### Available Documents
- [[Document 1]]
- [[Document 2]]
- [[Document 3]]

### Available PDFs & Images
- ...

I have not implemented this feature yet but I would like the chatbot LLMs to automatically read the markdown links and provide more relevant context to the user.

Sorry for removing the prompt option so soon. If this direction does not work as intended, I will fall back to the swappable context switching as mentioned.

EDIT: I can see that having swappable prompts is still essential regardless if the user made the prompts available within the system role prompt. I will add this feature back soon!

twalderman commented 6 months ago

Consider having both. Profile specific prompts and the ability to load independent prompts. More layering is a good thing {system}{prompt01}{prompt02}. My thought would be Profile Prompts would expand a System Prompt for specific purposes. The Core System Prompt would be for 80% and the combined would be for the 20% of use cases where the extension is worth the expense. (Opus is expensive). example, I have a writing assistant for Opus that is 3000 chars, when I want to create personas I load an additional 2048 char prompt and then unload when Im done. The general Prompts are for loading Persona Prompts themselves so I can interview the Character I create for my writing projects. The General Prompt can be loaded for tasks (In my use case) for summarization, Template formatting etc. The Ref Doc serves as a collaborative document that I append to and may still be in context when I want it. You are making great progress in making BMO the most powerful copilot experience for writing within Obsidian. I use "text generator" for simple suggestions and "Smart connections" for research within my entire vault. BMO is essential for my workflow and with my suggestions in this structure, I can do amazing things. Thank you so much for your efforts!