From 3d67d7e3a840c7dce5878f701981ddb334de9a90 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sat, 20 Jan 2024 22:29:53 +0100 Subject: [PATCH] Implemented chatgpt matrix bot --- roles/docker-matrix-compose/README.md | 8 +++- roles/docker-matrix-compose/tasks/main.yml | 7 ++++ .../templates/docker-compose.yml.j2 | 41 +++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/roles/docker-matrix-compose/README.md b/roles/docker-matrix-compose/README.md index a5238e46..854905a4 100644 --- a/roles/docker-matrix-compose/README.md +++ b/roles/docker-matrix-compose/README.md @@ -45,7 +45,7 @@ docker compose down -v ## Bridges -### General +### Mautrix Contact one of the following bots for more information: - @signalbot:yourdomain.tld @@ -53,9 +53,13 @@ Contact one of the following bots for more information: - @whatsappbot:yourdomain.tld - @slackbot:yourdomain.tld -### Slack +#### Slack For login with Token checkout [this guide](https://docs.mau.fi/bridges/go/slack/authentication.html). +### ChatGPT +- Create API Token: https://platform.openai.com/api-keys +- Set ``matrix_chatgpt_bridge_access_token`` + ## Debug: - https://federationtester.matrix.org/ diff --git a/roles/docker-matrix-compose/tasks/main.yml b/roles/docker-matrix-compose/tasks/main.yml index 608dcf75..7643a3c3 100644 --- a/roles/docker-matrix-compose/tasks/main.yml +++ b/roles/docker-matrix-compose/tasks/main.yml @@ -126,4 +126,11 @@ cmd: docker compose exec -it synapse register_new_matrix_user -u {{matrix_admin_name}} -p {{matrix_admin_password}} -a -c /data/homeserver.yaml http://localhost:8008 chdir: "{{ docker_compose_instance_directory }}" ignore_errors: true + when: mode_setup | bool + +- name: create chatgpt bot + command: + cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{matrix_chatgpt_bridge_user_password}} -a -c /data/homeserver.yaml http://localhost:8008 + chdir: "{{ docker_compose_instance_directory }}" + ignore_errors: true when: mode_setup | bool \ No newline at end of file diff --git a/roles/docker-matrix-compose/templates/docker-compose.yml.j2 b/roles/docker-matrix-compose/templates/docker-compose.yml.j2 index 5ddee783..6798eb8c 100644 --- a/roles/docker-matrix-compose/templates/docker-compose.yml.j2 +++ b/roles/docker-matrix-compose/templates/docker-compose.yml.j2 @@ -64,7 +64,48 @@ services: {% include 'templates/docker/container/networks.yml.j2' %} {% endfor %} + matrix-chatgpt-bot: + restart: {{docker_restart_policy}} + container_name: matrix-chatgpt + image: ghcr.io/matrixgpt/matrix-chatgpt-bot:latest + volumes: + - chatgpt_data:/storage + environment: + OPENAI_API_KEY: '{{matrix_chatgpt_bridge_openai_api_key}}' + # Uncomment the next two lines if you are using Azure OpenAI API + # OPENAI_AZURE: 'false' + # CHATGPT_REVERSE_PROXY: 'your-completion-endpoint-here' + CHATGPT_CONTEXT: 'thread' + CHATGPT_API_MODEL: 'gpt-3.5-turbo' + # Uncomment and edit the next line if needed + # CHATGPT_PROMPT_PREFIX: 'Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.' + # CHATGPT_IGNORE_MEDIA: 'false' + CHATGPT_REVERSE_PROXY: 'https://api.openai.com/v1/chat/completions' + # Uncomment and edit the next line if needed + # CHATGPT_TEMPERATURE: '0.8' + # Uncomment and edit the next line if needed + # CHATGPT_MAX_CONTEXT_TOKENS: '4097' + # CHATGPT_MAX_PROMPT_TOKENS: '3097' + KEYV_BACKEND: 'file' + KEYV_URL: '' + KEYV_BOT_ENCRYPTION: 'false' + KEYV_BOT_STORAGE: 'true' + MATRIX_HOMESERVER_URL: 'http://synapse' + MATRIX_BOT_USERNAME: '@chatgptbot:{{matrix_server_name}}' + MATRIX_ACCESS_TOKEN: '{{ matrix_chatgpt_bridge_access_token | default('') }}' + MATRIX_BOT_PASSWORD: '{{matrix_chatgpt_bridge_user_password}}' + MATRIX_DEFAULT_PREFIX: '!chatgpt' + MATRIX_DEFAULT_PREFIX_REPLY: 'false' + #MATRIX_BLACKLIST: '' + MATRIX_WHITELIST: ':{{matrix_server_name}}' + MATRIX_AUTOJOIN: 'true' + MATRIX_ENCRYPTION: 'true' + MATRIX_THREADS: 'true' + MATRIX_PREFIX_DM: 'false' + MATRIX_RICH_TEXT: 'true' + {% include 'templates/docker/compose/volumes.yml.j2' %} synapse_data: + chatgpt_data: {% include 'templates/docker/compose/networks.yml.j2' %} \ No newline at end of file