diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index da731d7..10b9c7e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,6 +11,7 @@ * features: `'feature/**'` * releases: `'releases/**'` * bugs: `'bug/**'` + * docs: `'docs/**'` ## Run the Bot * Refer to all sections below before running the bot. diff --git a/README.md b/README.md index 5c1e754..1f22ae9 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,6 @@ Code Coverage -## Guides -* [User Slash Commands](./docs/commands-guide.md) - ## About/Goals Ollama is an AI model management tool that allows users to install and use custom large language models locally. The project aims to: @@ -34,6 +31,11 @@ The project aims to: * [ ] Documentation on creating your own LLM * [ ] Documentation on web scrapping and cleaning +## Documentation +These are guides to the feature set included and the events triggered in this app. +* [User Slash Commands](./docs/commands-guide.md) +* [Client Events](./docs/events-guide.md) + ## Environment Setup * Clone this repo using `git clone https://github.com/kevinthedang/discord-ollama.git` or just use [GitHub Desktop](https://desktop.github.com/) to clone the repo. * You will need a `.env` file in the root of the project directory with the bot's token. There is a `.env.sample` is provided for you as a reference for what environment variables. @@ -44,6 +46,7 @@ The project aims to: * [Docker Setup for Servers and Local Machines](./docs/setup-docker.md) * Nvidia is recommended for now, but support for other GPUs should be development. * Local use is not recommended. + ## Resources * [NodeJS](https://nodejs.org/en) * This project runs on `lts\hydrogen`. diff --git a/docs/commands-guide.md b/docs/commands-guide.md index bf8e051..1381ad2 100644 --- a/docs/commands-guide.md +++ b/docs/commands-guide.md @@ -1,105 +1,105 @@ ## Commands Guide -This is a guide to all of the slash commands for the bot. +This is a guide to all of the slash commands for the app. * Action Commands are commands that do not affect a user's `preference file`. * Guild Commands can also be considered action commands. > [!NOTE] -> Administrator commands are only usable by actually administrators on the Discord server. +> Administrator commands are only usable by actual administrators on the Discord server. ### Guild Commands (Administrator) -1. Disable (or Toggle Chat) Command -This command will `enable` or `disable` whether or not the bot will respond to users. For example, we set the `enabled` field to `true` to allow the bot to respond to users. +1. Disable (or Toggle Chat) + This command will `enable` or `disable` whether or not the app will respond to users. -``` -/toggle-chat enabled true -``` + ``` + /toggle-chat enabled true + ``` -2. Shutoff Command -This command will shutoff the bot and no users will be able to respond to the bot anymore. The bot must be manually restarted upon being shutoff. +2. Shutoff + This command will shutoff the app so no users can converse with it. + The app must be manually restarted upon being shutoff. -Below we shutoff the bot by putting `true` in the `are-your-sure` field. + Below shuts off the app by putting `true` in the `are-your-sure` field. -``` -/shutoff are-you-sure true -``` + ``` + /shutoff are-you-sure true + ``` ### Action Commands -1. Clear Channel (Message) History Command -This command will clear the history of the current channel for the user that calls it. For example, just running the command in any channel will clear the message history. +1. Clear Channel (Message) History + This command will clear the history of the current channel for the user that calls it. + Running the command in any channel will clear the message history. -``` -/clear-user-channel-history -``` + ``` + /clear-user-channel-history + ``` -2. Pull Model Command -This command will pull a model that exists on the [Ollama Model Library](https://ollama.com/library). If it does not exist there, it will throw a hissy fit. +2. Pull Model + This command will pull a model that exists on the [Ollama Model Library](https://ollama.com/library). If it does not exist there, it will throw a hissy fit. -Below we try to pull the `codellama` model. + Below trys to pull the `codellama` model. -``` -/pull-model model-to-pull codellama -``` + ``` + /pull-model model-to-pull codellama + ``` -3. Thread Create Command -This command creates a public thread to talk with the bot if you do not want to talk in a `GuildText` channel. +3. Thread Create + This command creates a public thread to talk with the app instead of using a `GuildText` channel. -You can just run the command below: + ``` + /thread + ``` -``` -/thread -``` +4. (Private) Thread Create + This command creates a private thread to talk with the bot privately. + Invite others to the channel and they will be able to talk to the app as well. -4. Private Thread Create Command -This command creates a private thread to talk with the bot privately. You can invite others to the channel and they will be able to talk to the bot there. - -You can just run the command below: - -``` -/private-thread -``` + ``` + /private-thread + ``` ### User Preference Commands -1. Capacity Command -This command changes how much context it will keep within your conversations with the discord bot. This is applied for all of your existing chats whenever you interact with the bot. For example, below I am setting my message history capacity to at most 5 messages at once. +1. Capacity + This command changes how much context it will keep in conversations with the app. + This is applied for all of existing chats when interacting with the app. -``` -/modify-capacity context-capacity 5 -``` + Below sets the message history capacity to at most 5 messages at once. -2. Message Stream Command -This command will toggle whether or not the bot will "stream" a response kind of how ChatGPT and many UI's do it. + ``` + /modify-capacity context-capacity 5 + ``` -> [!NOTE] -> This is a very slow progress on Discord because they do not allow what I call "spamming" changes within 5 seconds. +2. Message Stream + This command will toggle whether or not the app will "stream" a response. + (think of how ChatGPT and other interfaces do this) -Below, we can set `stream` to true to make the bot respond not all at once. + Below sets the `stream` to true to make the app respond in increments. -``` -/message-stream stream true -``` + ``` + /message-stream stream true + ``` + > [!NOTE] + > This is a very slow progress on Discord because "spamming" changes within 5 seconds is not allowed. -3. Message Style Command -This command allows user to select their preferred way the bot to respond. +3. Message Style + This command allows a user to select whether to embed the app's response. -Below enables the embed style. + ``` + /message-style embed true + ``` -``` -/message-style embed true -``` + This allows the app to respond as a user would normally respond. -This way allows the bot to respond as you would normally see a user respond. + ``` + /message-style embed false + ``` -``` -/message-style embed false -``` +4. Switch Model + This command will switch the user-preferred model so long as it exists in within the local ollama service or from the [Ollama Model Library](https://ollama.com/library). + If it cannot be found locally, it will attempt to find it in the model library. -4. Switch Model Command -This command will switch the user preferred model so long as it exists in within their local ollama service or from the [Ollama Model Library](https://ollama.com/library). If it cannot be found locally, it will attempt to find it in the model library. - -Below we are trying to switch to a specific model size. - -``` -/switch-model model-to-use llama3.2:1.3b -``` + Below we are trying to switch to a specific model size. + ``` + /switch-model model-to-use llama3.2:1.3b + ``` diff --git a/docs/events-guide.md b/docs/events-guide.md new file mode 100644 index 0000000..2e5bc00 --- /dev/null +++ b/docs/events-guide.md @@ -0,0 +1,27 @@ +## Events Guide +This is a guide to all of the client events for the app. + +> [!NOTE] Each of these is logged to the console for a developer to track. + +1. ClientReady + This event signifies that the Discord app is online. + Here the app's activity is set and its commands are registered. + +2. InteractionCreate + This event signifies that a user interacted from Discord in some way. + Here commands are selected from a knowledge bank and executed if found. + + > [!NOTE] Possible interactions include commands, buttons, menus, etc. + +3. MessageCreate + This event signifies that a message was sent. + Here user questions and comments for the LLM are processed. + 1. check message is from a user and mentions the app + 2. check for interaction preferences + 3. add the message to a queue + 4. check the response for success + 5. send a response back to the user. + +4. ThreadDelete + This event signifies that a Discord Thread was deleted. + Here any preferences set for interaction within the thread are cleared away. \ No newline at end of file