A language model that actually speaks emoji.
Tell it anything and it replies the way a friend would in a chat: with one to three emoji, and nothing else. It doesnโt translate your words into emoji. It answers you.
Real replies from the released model. It samples, so the same message can get a different answer. Ask again to see another one.
Measured on 666 prompts: held-out chat messages plus 140 hand-written ones that try hard to get words out of it.
| Replies that are 1โ3 emoji only | 666 / 666 |
|---|---|
| On the first try, before any resample | 98.9% |
| The same prompts on base Qwen3-1.7B | 0% |
| Different emoji in its training data | 1,915 |
| Reply length, 1 / 2 / 3 emoji | 19 / 57 / 23% |
| Preferred by Claude Opus over its own starting point | 53.0% |
Download emoji-qwen3-1.7b-q8_0.gguf (1.8 GB) from the latest release into the repoโs deploy folder.
cd deploy
ollama create emoji-bot -f Modelfile
ollama run emoji-bot "my flight got cancelled"
pip install -r requirements.txt
python emoji_chat.py
Ollama and llama.cpp return the modelโs raw reply. To get the full behaviour, check it with is_valid_reply and repeat a single emoji with finalize_reply, both in emoji_spec.py. For llama.cpp, deploy/emoji.gbnf restricts decoding to emoji.
Reinforcement learning against a learned reward model collapsed in under 200 steps: the model discovered that ๐ฅน๐ซ scored well on almost anything. The root cause was the judge. Opus prefers ๐ซ, and it also rates three-emoji replies above one-emoji ones, so both habits leaked into anything trained on its scores. Balancing the preference pairs per emoji and per length fixed it. The README has the details.