
gittech. site
for different kinds of informations and explorations.
Ichigo Bot โ Telegram Chat Bot for Aggregating LLMs and API Providers
๐ Ichigo Bot
A delightful Telegram AI chat bot powered for aggregating models and API providers. ๐
If you're not sure where to start, check out cheahjs/free-llm-api-resources for a wealth of LLM API resources, and visit Telegram Bots for guidance on creating your own bot.
โจ Features
- ๐ก๏ธ Production-ready with super-robust error handling
- ๐ซ Magical streaming chat responses
- ๐ผ๏ธ Supports image in chat for multimodal LLM
- ๐ค Compatible with almost any API providers
- ๐ฎ Mix and match your favorite models and providers
- ๐ Keeps your chats and models safe with user access control
- ๐ Beautiful Telegram Markdown V2 formatting
- ๐ฏ Smart system prompts for better conversations
- ๐ชถ Light as a feather on your server
๐ณ Quick Docker Deployment (beta)
- Create a local data directory. Assume the data directory path is
/path/to/data
:
mkdir -p /path/to/data
Create a configuration file
config.toml
in/path/to/data
. The configuration file's name must beconfig.toml
, not any other name. Please refer toasset/example_config.toml
for an example configuration.Run the Docker container (replace
/path/to/data
with the real data directory path):
sudo docker run -d \
--name ichigod \
-v /path/to/data:/etc/ichigod \
-e ICHIGOD_DATA_DIR=/etc/ichigod \
--restart unless-stopped \
dockerrewired/ichigo-bot:latest
๐ฎ Commands
/chat
- Chat with Ichigo (Can be omitted in private messages)/new
- Start a new conversation/set
- Switch to a different model/list
- Show available models/undo
- Remove last conversation round/stop
- Stop the current response/set_temp
- Set text completion temperature/help
- Get the list of commands
Admin Commands:
/get_config
- View current configuration/set_config
- Update configuration and shutdown/clear
- Clear data/tidy
- Auto delete sessions and chat records whose IDs no longer exist
๐ Quick Start
Prerequisites
- Go 1.21 or later
- Make
- Python 3 with
telegramify-markdown
package installed - A Telegram bot token (obtained via @BotFather)
- OpenAI API key or other compatible API provider credentials
- Tip: User IDs and group chat IDs can be retrieved via @RawDataBot
Build
make build
That's it! Assume the built binary is /project_root/target/ichigod
.
Deploy (Linux with systemd)
- Move the built binary to
/usr/bin
and grant necessary permissions:
# Example commands
sudo chmod a+rx /project_root/target/ichigod
sudo cp -f /project_root/target/ichigod /usr/bin/ichigod
- Create a data directory at
/etc/ichigod
:
# Example commands
sudo mkdir -p /etc/ichigod
Create a configuration file
config.toml
in/etc/ichigod
. The configuration file's name must beconfig.toml
, not any other name. Please refer toasset/example_config.toml
for an example configuration.Create a Python virtual environment with
telegramify-markdown
installed in/etc/ichigod/venv
:
# Example commands
cd /etc/ichigod
python3 -m venv venv
source venv/bin/activate
pip install telegramify-markdown
- Create a systemd service unit at
/etc/systemd/system/ichigod.service
:
# Example service unit
[Unit]
Description=Ichigo Telegram Bot Service
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/ichigod
Restart=always
RestartSec=5
Environment="ICHIGOD_DATA_DIR=/etc/ichigod"
Environment="PATH=/etc/ichigod/venv/bin"
[Install]
WantedBy=multi-user.target
- Enable and start the service:
# Example commands
sudo systemctl daemon-reload
sudo systemctl enable ichigod
sudo systemctl start ichigod
- Check the service log:
# Example commands
sudo journalctl -u ichigod.service | tail -8
# Example outputs
# <redacted> systemd[1]: Started ichigod.service - Ichigo Telegram Bot Service.
# <redacted> ichigod[202711]: <redacted> INFO starting ichigod
# <redacted> ichigod[202711]: <redacted> INFO initializing bot service
# <redacted> ichigod[202711]: <redacted> INFO bot API client initialized username=<redacted> debug_mode=false
๐ ๏ธ Development
Development commands:
make dev # Run in development mode
make debug # Run with debugger
make build # Build for current platform
make build_x64 # Build for Linux x64
โ๏ธ Configuration
The bot looks for config.toml
in these locations:
$ICHIGOD_DATA_DIR
/etc/ichigod/
$HOME/.config/ichigod/
- Current directory