A chatbot that fakes feelings, frozen in 2019
CakeChat let you dial emotions into RNN responses—before its own authors told everyone to use Transformers instead.

What it does CakeChat is a Keras/TensorFlow backend for generative chatbots that can condition replies on categorical labels like emotion or persona ID. It uses a Hierarchical Recurrent Encoder-Decoder (HRED) with GRU cells, trained on ~50M Twitter dialogs labeled for five emotions: neutral, joy, anger, sadness, fear. You can run it via Docker, serve it over HTTP, or wire it into a Telegram bot.
The interesting bit The authors themselves put a deprecation notice at the very top: Transformer-based models work better, go use DialoGPT instead. That honesty is almost refreshing. The emotional conditioning is the actual hook—you can force “joy” or “anger” into the decoder, which was a genuine research direction before large-scale instruction tuning made it look quaint.
Key highlights
- HRED architecture handles 3 utterances of dialog context (speaker_1, speaker_2, speaker_1)
- Decoder conditioning on arbitrary categorical variables—emotions, personas, whatever you label
- Four generation modes: sampling, beamsearch, plus reranked variants using log-likelihood or MMI criteria
- CuDNNGRU for ~25% inference speedup
- Pre-trained model available via
python tools/fetch.py, though training from scratch needs ~50MB+ data and days of GPU time
Caveats
- Explicitly unmaintained; pinned to Python 3.5.2, TensorFlow 1.12.2, Keras 2.2.4
- Training dataset cannot be redistributed due to Twitter’s privacy policy
- The authors recommend against using this in production
Verdict Worth a look if you’re studying the emotional-dialog literature or need a concrete HRED implementation to dissect. Everyone else should follow the authors’ own advice and head to a modern Transformer-based alternative.