The previous approach (implemented in dd1dd78312) was simple
(send typing notices for as long as the "controller" is running),
but this proved to be overly simplistic and unable to handle edge-cases:
- in multi-user rooms (or rooms with a prefix requirement), the bot
used to send a typing notice while "working", but its work consisted
of ignoring the message. So it then sent a "not typing" notice.
This is wasteful and otherwise problematic - certain clients (like nheko)
do not handle this "race" well.
- certain reactions (anything other than 🗣️ right now) are meant to be
ignored. There's no point in doing the same "typing / not typing"
dance
- there are other instances where the bot may do work, but doesn't (due
to configuration or lack of capabilities)
This new more fine-grained implementation of typing notices aims to:
- only send a typing notice if actual "slow work" will be done
- avoid stopping & restarting typing notices (wasteful) if a chain of work is to
be performed (processing voice messages and doing speech-to-text +
text-generation + ...). Rather, maintaining typing notice sending
throughout
baibot
🤖 baibot is an AI (Large Language Model) bot for Matrix built by etke.cc (managed Matrix servers).
The name is pronounced 'bye'-bot and is a play on AI, referencing the fictional character 🇧🇬 Bai Ganyo.
It's designed as a more private and featureful alternative to matrix-chatgpt-bot. It's influenced by chaz, but does not use the AIChat CLI tool and instead does everything in-process, without forking.
🌟 Features
-
🎨 Encourages provider choice (Anthropic, Groq, LocalAI, OpenAI and ☁️ many more) as well as mixing & matching models:
-
Supports different use purposes (depending on the ☁️ provider & model):
- 💬 text-generation: communicating with you via text
- 🦻 speech-to-text: turning your voice messages into text
- 🗣️ text-to-speech: turning bot or users text messages into voice messages
- 🖌️ image-generation: generating images based on instructions
-
🪄 Supports seamless voice interaction (turning user voice messages into text, answering in text, then turning that text back into voice)
-
🦻 Supports transcribe-only mode (turning user voice messages into text, without doing text-generation)
-
🗣️ Supports text-to-speech-only mode (turning user text messages into voice, without doing text-generation)
-
🔒 Supports encryption for Matrix communication and Account-Data-stored configuration
-
♻️ Supports context-management handling on some models (automatically adjusting the message history length, etc.)
-
🛠️ Allows customizing much of the bot's configuration at runtime (using commands sent via chat)
-
👥 Actively maintained by the team at etke.cc
🖼️ Screenshots
You can find more screenshots on the the 🌟 Features and other 📚 Documentation pages, as well as in the docs/screenshots directory.
🚀 Getting Started
🗲 For a quick experiment, you can refer to the 🧑💻 development documentation which contains information on how to build and run the bot (and its various dependency services) locally.
For a real installation, see the 🚀 Installation documentation which contains information on 🐋 Running in a container and 🖥️️️️️ Running a binary.
📚 Documentation
See the bot's 📚 documentation for more information on how to use and configure the bot.
💻 Development
See the bot's 🧑💻 development documentation for more information on how to develop on the bot.
📜 Changes
This bot evolves over time, sometimes with backward-incompatible changes.
When updating the bot, refer to the changelog to catch up with what's new.
🆘 Support
-
Matrix room: #baibot:etke.cc
-
GitHub issues: etkecc/baibot/issues
