← all repositories
lukalabs/cakechat

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.

1.7k stars Python Chat AssistantsLanguage Models
cakechat
Velocity · 7d
+0.6
★ / day
Trend
steady
star history

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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.