An AI-powered experiment in story telling that throws you into a Game Of Thrones-esque world filled with political intrigue, backstabbing, and violence, as a family fights to the death to be next in line for the throne.
This was written before GPT tool calls and JSON support even existed, so I first taught GPT a custom DSL, and then I wrote a parser for that DSL. This ended up saving a lot of context tokens compared to JSON, and it also allowed GPT to extend the DSL in some cool and creative ways on its own!
You know that feeling of playing your favorite RPG, saving the village from a dragon, having it fall down dead in front of everyone, and then watching as the NPCs don't react at all? TinyTown.ai shows how small locally ran LLM models can fix that. NPCs react to everything the hero does, dramatically increasing immersion. TinyTown doesn't replace game's existing NPC AI engines, but instead augments them by generating appropriate dialogue based on the player's actions.
LLM Escape Room Helper generates REST tool/action endpoints to help create LLM powered escape room experiences. By hiding context from the LLM until it is needed, users cannot prompt engineer their way to a solution. It also provides endpoints for checking if a puzzle solution is correct. There is a hosted version at this site you can use, or you can deploy your own from the GitHub source. The only dependencies are Node and a local instance of Redis.
Many AI Agent platforms don't have the concept of how long they have been interacting with a user within a given session. AgentTimer solves this by creating a toolcall endpoint that LLMs can request the current conversation duration from. It is pretty bare bones right now, it only returns the current conversation in seconds. You need to provide your own unique ID for conversations, though eventually I'll get around to adding a second endpoint that can also generate IDs.
Tiny LLMs aren't that good at filling out JSON. Tiny quantized LLMs are really bad at filling out JSON. JSON Schema's and constrained generation help, but they can fail on certain tasks. Prefilled-JSON is an alternative approach that carefully guides the LLM through generating correct JSON. It feeds the LLM field names one at a time and only has the LLM fill out the details for that single field. Best used with prefix caching!
I started my career in C/C++ compilers, moved on to household robotics, then I lead the UI dev team for Microsoft Band. I founded a startup, worked on HBO Max during their big launch, and now I'm working in ML/AI. I believe that LLMs are the first paradigm shift in computing since the smart phone revolution, and I'm excited that I've had a chance to be part of two revolutions in personal computing during my career.
As a possible result of my time in Microsoft Health, I picked up a lot of physical hobbies, including BJJ, Kickboxing, and (previously) MMA training.
Outside of being outside, I also enjoy making my own curries from scratch, daily studies about software engineering, and hosting events.
You can get in touch with me on Twitter or Telegram at TheDevlinB.
On my blog I write my thoughts on software engineering and I recount stories from throughout my career.