Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
83df48e
stash
zavocc Sep 9, 2025
68ff29d
Refactoring day 1:
zavocc Sep 10, 2025
85b8689
Refactoring day 2:
zavocc Sep 11, 2025
22dfd89
Refactory Day 2.1
zavocc Sep 11, 2025
3b71227
WIP: reasoning_type in model props from simple/advanced to openai/ope…
zavocc Sep 11, 2025
c44aaac
remove print statement since it wont be neecessary
zavocc Sep 11, 2025
a15d8ae
simplify error messages in generative_chat.py
zavocc Sep 11, 2025
564d965
Refactor Day 3:
zavocc Sep 12, 2025
1b6abae
stuff
zavocc Sep 12, 2025
6aff61e
Refactoring day 4
zavocc Sep 13, 2025
7b2cbfd
Remove enum import
zavocc Sep 13, 2025
9e95406
Add thread_name for models that may require different chat threads us…
zavocc Sep 13, 2025
a89fc58
Deprecate SHARED_CHAT_HISTORY due to low usage
zavocc Sep 13, 2025
8d0239b
stuff
zavocc Sep 13, 2025
e67dc0a
Refactor day 4
zavocc Sep 14, 2025
a433135
change core.history to core.database
zavocc Sep 14, 2025
b48e8b5
Add Google models
zavocc Sep 14, 2025
083fe3c
Google: when files are expired, remove all files from chat thread parts
zavocc Sep 18, 2025
d0ed2cb
Add enable_system_instructions prop and sample models
zavocc Sep 18, 2025
c40a3aa
Rewrite how tools handled, and also potentially support MCP
zavocc Sep 18, 2025
37d6cc7
Remove MCP references as we don't have plans to use it for now
zavocc Sep 19, 2025
1f0263a
Update all tools to use latest format
zavocc Sep 19, 2025
c64c5d7
New task provider: fal - image
zavocc Sep 19, 2025
814fdfa
Significant Restructuring and add new Audio Modality task (WIP)
zavocc Sep 20, 2025
e270698
updates
zavocc Sep 21, 2025
3bbfa69
Use audio media models from fal.ai
zavocc Sep 22, 2025
d4ebb21
Remove GitHub tools in Internet Search
zavocc Sep 22, 2025
099b221
Update models list
zavocc Sep 23, 2025
561ba12
Make sure additional_params is passed to Google completions
zavocc Sep 23, 2025
f6af74b
First phase of adding task type == text
zavocc Sep 23, 2025
9ffcd82
Updates to commands and structure
zavocc Sep 23, 2025
1531fb5
Update from utils.py to chat_utils.py
zavocc Sep 23, 2025
0dca956
Add disabled key in ModelProps
zavocc Sep 23, 2025
f8a1d98
Structural and summarize command updates
zavocc Sep 23, 2025
5d91451
Remove /ask command and focus on direct mention as part of interaction
zavocc Sep 23, 2025
1712a4c
Rename from GeminiAITools to AISummaries
zavocc Sep 23, 2025
e0fae9a
Add cooldown to on_message ai
zavocc Sep 24, 2025
dc6ad1e
Update dependencies list
zavocc Sep 24, 2025
fa40084
Push
zavocc Sep 25, 2025
6df3fe7
Change from fal-ai to fal-client
zavocc Sep 25, 2025
26b5e93
New URL Browse tool powered by Jina AI
zavocc Sep 25, 2025
2e56c6e
Tools: deprecate the use of method_send
zavocc Sep 25, 2025
475eab6
Remove showHighlights to Web Search tool
zavocc Sep 25, 2025
eaf66d4
Updated polls and summarize command to better support other models li…
zavocc Sep 26, 2025
87377f7
Update imagegen tool to use flexible kwargs
zavocc Sep 26, 2025
2121537
Separate avatar remix and get to its own cog and use Nano Banana
zavocc Sep 26, 2025
ae6791b
Update remix prompts
zavocc Sep 26, 2025
0850000
Explicitly set Thinking budget to zero for non reasoning models
zavocc Sep 26, 2025
c8357b4
Updated message actions to support multiple default models
zavocc Sep 26, 2025
c0943f1
Prepare for deployment stage phase 1 of betatest
zavocc Sep 26, 2025
106b6a8
UpdatebDockerfile
zavocc Sep 26, 2025
204d44d
UpdatebDockerfile
zavocc Sep 26, 2025
1b500f4
Ensure apt-get is non interactive
zavocc Sep 26, 2025
57b17cd
I'd probably stop with the bias
zavocc Sep 26, 2025
710e893
Update text_models.yaml
zavocc Sep 26, 2025
2166e4a
Fix reasoning parser in OpenAI SDK provider
zavocc Sep 27, 2025
acf57e6
Add LiteLLM SDK
zavocc Sep 27, 2025
73e0911
Add DeepSeek models from Azure, with reasoning type being ignored by …
zavocc Sep 27, 2025
2dc59fe
comment
zavocc Sep 27, 2025
fb4e9bd
Update models including reasoning models to use additional_params ins…
zavocc Sep 28, 2025
a83c1c0
Fix "/avatar show" command for Google models
zavocc Sep 28, 2025
64cd15d
Few more stuff
zavocc Sep 28, 2025
5b8149f
Add dedicated error message for cooldowns
zavocc Sep 28, 2025
02e5e56
stuff
zavocc Sep 28, 2025
7e65def
Update code execution schema*
zavocc Sep 28, 2025
69d47c2
Update code execution tool to have code output displayed
zavocc Sep 29, 2025
2c5ff25
Update documentation and admin cleanups
zavocc Sep 29, 2025
28a3cf0
Update code execution
zavocc Sep 29, 2025
165a043
Fix avatar show commands
zavocc Sep 29, 2025
7a6e27e
Web Search: when no title, replace it with no title
zavocc Sep 29, 2025
37bcc30
Use autocomplete for getting chat models instead of generators
zavocc Sep 30, 2025
98c2789
Update documentation
zavocc Oct 3, 2025
0f2b29f
whoops, forgot to add self
zavocc Oct 3, 2025
a43f47c
Update tools documentation that it doesn't support MCP tools
zavocc Oct 3, 2025
f2c08b0
muhh
zavocc Oct 3, 2025
405f7ae
Update system prompt
zavocc Oct 3, 2025
8dc9f02
Update text completion methods and use autocomplete instead of genera…
zavocc Oct 3, 2025
a25dbe2
Update config documentation
zavocc Oct 3, 2025
cbcd692
Google: Do not wipe file attachments for ClientError if the error is …
zavocc Oct 3, 2025
b006c1a
Update README
zavocc Oct 3, 2025
6300c91
Update workflows file
zavocc Oct 3, 2025
e8d1a00
Actions: only run decepticon PR builds when it's the same repository
zavocc Oct 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ on:
image_tag:
description: 'Docker image tag'
required: true
default: 'sugilite'
default: 'autobot'
type: string

jobs:
docker:
runs-on: ubuntu-latest
environment: Docker
# Only run if push/workflow_dispatch OR pull_request from same repo (not fork)
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -31,9 +33,6 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

Expand All @@ -43,6 +42,6 @@ jobs:
context: .
push: true
tags: |
${{ github.event_name == 'pull_request' && 'zavocc/jakey:necrofriggian' || '' }}
${{ github.event_name == 'pull_request' && 'zavocc/jakey:decepticon' || '' }}
${{ github.event_name == 'workflow_dispatch' && format('zavocc/jakey:{0}', inputs.image_tag) || '' }}
${{ github.event_name == 'push' && 'zavocc/jakey:autobot' || '' }}
17 changes: 6 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
FROM python:3.12-slim
WORKDIR /jakeybot
ENV PATH="/jakeybot/.local/bin:${PATH}"
ENV DEBIAN_FRONTEND=noninteractive

# Create a user account named "jakey"
RUN useradd -u 6969 --home-dir /jakeybot jakey

# Copy the source code
COPY . .

# Install C compiler
RUN apt-get update
RUN apt-get install g++ --no-install-recommends --yes

# Correct ownership
RUN chown -R 6969:6969 /jakeybot

Expand All @@ -17,15 +22,5 @@ USER jakey
# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Install wavelink and remove pycord/discord.py only leaving pycord, and other dependencies
RUN <<EOL
pip install wavelink
pip uninstall -y discord.py py-cord
pip install -U py-cord
EOL

# Install additional dependencies, comment to disable
RUN pip install gradio_client

# Start the bot
CMD ["python", "main.py"]
CMD ["python", "main.py"]
60 changes: 24 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
- [Required permissions for Discord bot](#required-permissions-for-discord-bot)
- [Installation](#installation)
- [Configuring](#configuring)
- [Music features](#music-features)
- [Get Started](#get-started)
- [Chat](#chat)
- [Chat Variables](#chat-variables)
Expand All @@ -15,26 +14,24 @@


# Jakey Bot
Jakey Bot is a multi-model AI and music bot with personality, designed to give you access to popular AI chatbots from Google Gemini, OpenAI, Anthropic, Mistral, LLaMA, OpenRouter right within Discord!
Jakey Bot is a multi-model AI and music bot with personality, designed to give you access to popular AI chatbots from Google Gemini, OpenAI, Anthropic, MoonShot AI, Z.AI, DeepSeek, OpenRouter right within Discord!

![Jakey Bot Banner](./assets/banner.png)

This bot uses models from Google, OpenAI, Anthropic, Mistral, or use [OpenRouter](https://openrouter.ai) for unified access to some models using LiteLLM! Combined with best Python and Discord APIs to create a helpful AI assistants

## Platform availability
Jakey AI is available as Discord Bot. Other platforms is coming soon!

## Features
- Access to the top AI flagship models right within Discord!
- Access to the top AI flagship models right within Discord! Both open and proprietary weights.
- Summarize text channels and messages
- Multimodality support and summarize file attachments!
- Browse, run python code, edit images right within chat
- Create and conversationally edit images using Gemini 2.0 Flash Image generation
- Remix user's avatar

Other non-AI extras include:
- Mimic other users


# Installation and setup
## Required permissions for Discord bot
- Read message history for channel summaries
Expand All @@ -47,18 +44,26 @@ Other non-AI extras include:
- View Channels
- Add Reactions


For demo version, you can add this bot and see the required permissions and capabilities: https://discord.com/oauth2/authorize?client_id=1051409808877699072&permissions=563330095107136&integration_type=0&scope=bot

Keep in mind that data training policy varies between model, if you need guaranteed data loss prevention, you need to provide your own endpoints and hosting your bot yourselves. The demo version should not be used as daily driver as we rotate models periodically.

## Installation
The best way to get started is through Docker method... You can directly pull the image from my Docker 🐳 Hub repository and simply run the bot below:
```
~ $ docker pull zavocc/jakey:sugilite
~ $ docker run -it --env-file dev.env --rm zavocc/jakey:sugilite
The best way to get started is through Docker method... You can directly pull the image from my Docker 🐳 Hub repository and simply run the bot below to pull the stable image.
```sh
~ $ docker pull zavocc/jakey:1.0
~ $ docker run -it --env-file dev.env --rm zavocc/jakey:1.0
# or by bind mounting dev.env (recommended)
# docker run --mount type=bind,source=dev.env,target=/jakeybot/dev.env --rm zavocc/jakey:1.0
```

If you want to use fresh from `master` commit builds of Jakey Docker image, pull using `zavocc/jakey:autobot` image tag before hitting to stable version as minor revision.

NOTE: You need to provide [the dev.env file](#configuring) as explained below

> [!WARNING]
> Running JakeyBot on Windows using native `python.exe` is currently unsupported due to issues like emoji character encoding issues, and file paths used. As well as dependencies required that may not be fully covered under requirements.txt that requires other dependencies for the Win32 platform. We recommend using WSL2 or the Docker image with preconfigured environment.

<details>
<summary>Manual installation</summary>
But if you prefer manual method without using containers, you need to install Python version atleast 3.10+ with pip and venv is highly preferred and run the commands
Expand All @@ -74,11 +79,6 @@ NOTE: You need to provide [the dev.env file](#configuring) as explained below
Install dependencies as needed
```
pip3 install -r requirements.txt

# This is optional
pip3 install gradio_client
pip3 uninstall py-cord discord.py
pip3 install py-cord
```
</details>

Expand All @@ -89,11 +89,8 @@ You will need to provide Discord bot token from the developers portal.

Please see [CONFIG.md](./docs/CONFIG.md) for more information about configuration.

## Music features
THIS FEATURE IS ON HOLD!

# Get Started
Get started by asking Jakey `/ask prompt:Who are you and how can I get started` or **@Jakey what can you do?**
Get started by asking Jakey **@Jakey what can you do?**

## Chat
Once you added or installed Jakey to your server or yourself, you can mention @Jakey along with your prompt or directly message Jakey in DMs. If you use Gemini model, you can prompt files such as images, audio, video, and visual PDFs too!
Expand All @@ -102,32 +99,23 @@ Once you added or installed Jakey to your server or yourself, you can mention @J
When you enter a prompt to Jakey... you can use chat variables which are substrings to detect which action to perform before sending the request to LLM

- `prompt /chat:ephemeral` - Do not append the last message turn to chat history while having its previous memory
- `prompt /model:model-name` - Set model for the response on demand. (See `/model list` to choose available model names)
- `prompt /chat:info` - Show model used in the conversation.

For claude-specific models, you can also use the `/cache:true` prompt variable to cache your inputs and save costs... Good for attaching PDF files.

## Model used
The default model used for chat experience is Gemini 2.5 Flash Thinking, including other experiences like message summarization. However, you can switch to different chat models as you choice offered by OpenAI, Anthropic, xAI, DeepSeek, and LLaMA and custom models with OpenRouter.

You can also sticky set the model using `/model set` command, or list models using `/model list` command. \
If you decide touse OpenRouter model, you will need to configure `/openrouter` command first by setting the model names through https://openrouter.ai/models

When you set a model, you are switching chat threads to that model associated for that provider... So switching to GPT-4o model would have its own chat thread and files, but you can always switch back to previous provider with it's memory. Note that switching models for OpenRouter would result in chat thread being cleared to ensure consistency

If you decide to use other models please see [Models comparison](https://github.com/zavocc/JakeyBot/wiki/Supported-Models) and [the LLM arena by livebench](https://livebench.ai/) to understand your models use cases.
The default model used is based on [models.yaml](./data/models.yaml) for chat and [text_models.yaml](./data/text_models.yaml) for text based tasks. You can customize default model based on your needs.

# Commands
Jakey provides slash commands such as:
- `/ask` - Ask Jakey quick questions.
- `/avatar remix` - Restyle user's avatar powered by Nano Banana
- `/avatar show` - Show and optionally describe user's avatar
- `/sweep` - Clear the conversation
- `/feature` - Extend Jakey skills by activating chat tools! (Clears conversation when feature are set, only supports Gemini models)
- `/model set` and `/model list` to list available models.
- `/feature` - Extend Jakey skills by activating chat tools!
- `/model set` to list available models.
- `/openrouter` - Access additional models from OpenRouter (`/model set:openrouter` must be set)
- `/summarize` - Summarize the current text channel or thread and gather insights into a single summary thanks to Gemini 2.0 Flash's long context it can understand conversations even from the past decade!
- `/summarize` - Summarize the current text channel or thread and gather insights into a single structured summary.
- `/mimic` - Mimics other users using webhook

Jakey also has message actions or apps which is used to take action on a selected message. Such as explain, rephrase, or suggest messages using Gemini 2.0 Flash.
Jakey also has message actions or apps which is used to take action on a selected message. Such as explain, rephrase, or suggest messages.

![apps](./assets/apps.png)

Expand Down
3 changes: 0 additions & 3 deletions aimodels/_template_/__init__.py

This file was deleted.

53 changes: 0 additions & 53 deletions aimodels/_template_/infer.py

This file was deleted.

38 changes: 0 additions & 38 deletions aimodels/azure_foundry/base.py

This file was deleted.

6 changes: 0 additions & 6 deletions aimodels/azure_foundry/config.py

This file was deleted.

3 changes: 0 additions & 3 deletions aimodels/azure_foundry/deepseek/__init__.py

This file was deleted.

Loading