diff --git a/Dockerfile b/Dockerfile.chatbot similarity index 100% rename from Dockerfile rename to Dockerfile.chatbot diff --git a/Dockerfile.ollama b/Dockerfile.ollama new file mode 100644 index 0000000..0fcd46d --- /dev/null +++ b/Dockerfile.ollama @@ -0,0 +1,7 @@ +FROM ollama/ollama + +COPY start.sh /start.sh +RUN chmod +x /start.sh + +# Standardbefehl zum Starten des Servers +CMD ["/start.sh"] \ No newline at end of file diff --git a/README.md b/README.md index e8e2b42..f0e8d65 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,75 @@ -# ollamarama-matrix -Ollamarama is an AI chatbot for the [Matrix](https://matrix.org/) chat protocol using Ollama. It can roleplay as almost anything you can think of. You can set any default personality you would like. It can be changed at any time, and each user has their own separate chat history with their chosen personality setting. Users can interact with each others chat histories for collaboration if they would like, but otherwise, conversations are separated, per channel, per user. +# ollamarama-matrix-chatbot -This is based on my earlier project, [infinigpt-matrix](https://github.com/h1ddenpr0cess20/infinigpt-matrix), which uses OpenAI and costs money to use. (Now updated with OpenAI/Ollama model switching) +### Zuerst das Wichtigste: -IRC version available at [ollamarama-irc](https://github.com/h1ddenpr0cess20/ollamarama-irc) +Dies ist ein Fork von [Dustin Whyte](https://github.com/h1ddenpr0cess20/ollamarama-matrix), welchen ich anschließend in Docker inpelementiert habe. + + +Ollamarama ist ein KI-Chatbot für das [Matrix](https://matrix.org/) Chatprotokoll mit Ollama. Er kann fast alles spielen, was Du dir vorstellen kannst. Du kannst jede Standardpersönlichkeit einstellen, die du möchtest. Sie kann jederzeit geändert werden, und jeder Benutzer hat seinen eigenen Chatverlauf mit der von ihm gewählten Persönlichkeitseinstellung. Die Benutzer können mit den Chatverläufen der anderen interagieren, um zusammenzuarbeiten, wenn sie das möchten, aber ansonsten sind die Unterhaltungen getrennt, pro Kanal und pro Benutzer. +Dieser Chatbot kommt zusammen mit dem Ollama Docker, zu finden [hier](https://hub.docker.com/r/ollama/ollama). -Terminal-based version at [ollamarama](https://github.com/h1ddenpr0cess20/ollamarama) ## Setup -Install and familiarize yourself with [Ollama](https://ollama.ai/), make sure you can run local LLMs, etc. +Installiere dir zuerst Docker. Dies kannst du [hier](https://github.com/h1ddenpr0cess20/ollamarama-matrix) machen. -You can install and update it with this command: -``` -curl https://ollama.ai/install.sh | sh +Anschließend clonst du mein Projekt: + +```bash +git clone https://git.techniverse.net/scriptos/ollamarama-matrix ``` +Anschließend ins Verzeichnis wechseln und die Konfigurationsdatei für den Matrix-Chatbot konfigurieren: -Once it's all set up, you'll need to [download the models](https://ollama.ai/library) you want to use. You can play with the available ones and see what works best for you. Add those to the config.json file. If you want to use the ones I've included, just run ollama pull _modelname_ for each. - - -You'll also need to install matrix-nio -``` -pip3 install matrix-nio +```bash +cd ollamarama-matrix && nano data/chatbot/config.json) ``` -Set up a [Matrix account](https://app.element.io/) for your bot. You'll need the server, username and password. +In der `config.json` werden die Zugangsdaten für den Chatbot gepflegt. Dieser muss im Vorfeld auf dem Matrix Server erstellt werden. Dies kann [hier](https://app.element.io/) gemacht werden. +Weiterhin können in dieser Konfigurationsdatei weitere Modelle gepflegt werden, welche vom Chatbot anschließend verwendet werden könnten. -Add those to the config.json file. +In der Datei `start.sh` können weitere Modelle gepflegt werden, welche dann nach dem Starten vom Ollama Docker Container runtergeladen werden. -``` -python3 ollamarama.py -``` - -## Use +Weitere Modelle können [hier](https://ollama.ai/library) geladen werden. -**.ai _message_** or **botname: _message_** +# Verwendung - Basic usage. +**.ai _nachricht_** oder **botname: _nachricht_** - -**.x _user_ _message_** + Grundlegende Verwendung. - This allows you to talk to another user's chat history. +**.x _benutzer_ _nachricht_** - _user_ is the display name of the user whose history you want to use + Erlaubt es dir, auf die Chat-Historie eines anderen Benutzers zuzugreifen. - -**.persona _personality_** + _benutzer_ ist der Anzeigename des Benutzers, dessen Historie du verwenden möchtest. - Changes the personality. It can be a character, personality type, object, idea, whatever. Use your imagination. +**.persona _persönlichkeit_** + Ändert die Persönlichkeit. Es kann eine Figur, ein Persönlichkeitstyp, ein Objekt, eine Idee, was auch immer sein. Nutze deine Fantasie. -**.custom _prompt_** +**.custom _eingabeaufforderung_** - Allows use of a custom system prompt instead of the roleplaying prompt + Erlaubt die Verwendung einer benutzerdefinierten Systemaufforderung anstelle der Rollenspielaufforderung. **.reset** - Clear history and reset to preset personality + Verlauf löschen und auf voreingestellte Persönlichkeit zurücksetzen. - **.stock** - Clear history and use without a system prompt + Verlauf löschen und ohne Systemaufforderung verwenden. +**Nur für Admins** -**Admin only commands** +**.model _modell_** + Lasse den Modellnamen weg, um das aktuelle Modell und verfügbare Modelle anzuzeigen. -**.model _model_** - - Omit model name to show current model and available models - - Include model name to change model - + Gib den Modellnamen ein, um das Modell zu wechseln. **.clear** - Reset bot for everyone - + Setzt den Bot für alle zurück. diff --git a/bin/ollamarama.py b/bin/ollamarama.py index 9f85fc0..2332ef5 100644 --- a/bin/ollamarama.py +++ b/bin/ollamarama.py @@ -215,4 +215,4 @@ class ollamarama: if __name__ == "__main__": ollamarama = ollamarama() - asyncio.run(ollamarama.main()) + asyncio.run(ollamarama.main()) \ No newline at end of file diff --git a/bin/requirements.txt b/bin/requirements.txt index c9b83b0..2d7b956 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -1,6 +1,3 @@ matrix-nio requests -markdown -asyncio -datetime -json \ No newline at end of file +markdown \ No newline at end of file diff --git a/data/config.json b/data/chatbot/config.json similarity index 96% rename from data/config.json rename to data/chatbot/config.json index aa900b0..47d5764 100644 --- a/data/config.json +++ b/data/chatbot/config.json @@ -19,7 +19,7 @@ }, "ollama": { - "api_base": "http://localhost:11434", + "api_base": "http://ollama:11434", "options": { "temperature": 0.8, diff --git a/docker-compose.yaml b/docker-compose.yaml index 2040a66..784bfa3 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,16 +1,35 @@ services: - matrix-chatbot: - container_name: matrix-chatbot - hostname: matrix-chatbot + ollama: + image: ollama/ollama build: context: . - dockerfile: Dockerfile + dockerfile: Dockerfile.ollama + hostname: ollama + container_name: ollama + networks: + dockernet: + ipv4_address: 172.16.0.51 + ports: + - "11434:11434" + volumes: + - ./data/ollama/history:/root/.ollama + restart: unless-stopped + + matrix-chatbot: + image: matrix-chatbot:latest + build: + context: . + dockerfile: Dockerfile.chatbot + container_name: matrix-chatbot + hostname: matrix-chatbot networks: dockernet: ipv4_address: 172.16.0.50 + depends_on: + - ollama volumes: - - ./data/config.json:/app/config.json:ro + - ./data/chatbot/config.json:/app/config.json:ro restart: unless-stopped networks: diff --git a/help.txt b/help.txt deleted file mode 100644 index d18b753..0000000 --- a/help.txt +++ /dev/null @@ -1,33 +0,0 @@ - -**.ai _message_** or **botname: _message_** - Basic usage. - -**.x _user_ _message_** - This allows you to talk to another user's chat history. - _user_ is the display name of the user whose history you want to use - -**.persona _personality_** - Changes the personality. It can be a character, personality type, object, idea, whatever. Use your imagination. - -**.custom _prompt_** - Allows use of a custom system prompt instead of the roleplaying prompt - -**.reset** - Clear history and reset to preset personality - -**.stock** - Clear history and use without a system prompt - - -**Available at** https://github.com/h1ddenpr0cess20/ollamarama-matrix -~~~ - -**Admin only commands** - -**.model _model_** - Omit model name to show current model and available models - Include model name to change model - -**.clear** - Reset bot for everyone - \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..ab2339b --- /dev/null +++ b/start.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +# Server starten +ollama serve& + +# Modelle installieren +ollama pull llama3.1:8b-instruct-q5_K_M +ollama pull llama3.2 + +wait \ No newline at end of file