Releases: neph1/LlamaTale
v0.22.0 'Examine' command improved
What's Changed
Tale already had an 'examine' command. The story builder could add 'extra descriptions' to items that the command looked for when used. This was a prime target for LLM's, so I've changed it so that the descriptions are generated by it instead. I've tried to retain the old functionality as well, but it's not a priority.
The command works like this:
examine what/who what2
what/who can be an item, npc or the location
what2 is for if you want to examine a certain part of the 'what'. This is optional.
Like with other descriptions, if nothing has changed since last time, it will use the same description from the cache.
Example (code-cherry-pop 7b):
examine knife
A sharp kitchen knife, crafted from a single piece of polished obsidian, its blade honed to a razor’s edge. The handle is wrapped in supple leather, adorned with intricate patterns of silver and gold. This is no ordinary knife, but a tool of the highest quality, crafted by the skilled hands of a master blacksmith. It is said that the blacksmith imbued the knife with a bit of their own soul, infusing it with a fierce determination and unwavering loyalty. The knife is a prized possession of the outpost’s chef, who wields it with precision and grace, slicing through even the toughest of ingredients with ease. It is a symbol of the outpost’s commitment to excellence, and a testament to the skill and craftsmanship of its inhabitants
examine knife blade
You examine the blade of the knife, and notice that it has a distinctive pattern of use and wear. The edge is dull and chipped, indicating that it has seen a lot of use in the past. The handle is worn and cracked, telling a story of countless grips and wields. You can almost feel the weight of history in the knife’s simple, utilitarian design. It’s clear that this knife has been a trusted companion to many adventurers and travelers over the years, and has seen its fair share of battles and close calls. You can almost hear the whispers of the mountain winds as they carry the stories of the knife’s past, and the countless lives it has touched.
As you can see, consistency is not an absolute. This is an area for improvement. In this case, the knife is poorly described from the start, which may contribute to the result.
Another GM command:
set_description
This allows a wizard to change the description field of anything from within the game.
Usage:
!set_description what new_description
what can be anything
Full Changelog: v0.21.1...v0.22.0
v0.21.1 Streaming for llama.cpp
What's Changed
- Llama.cpp now has streaming for location descriptions, as well.
- Some io refactoring as part of that.
- Handling error messages from server (needs some further work, but at least doesn't throw exception now)
- I'm playing with prompts some, moving much of the context for prompts to 'memory' for kobold. Should it be in 'system' for llama.cpp/openai? I'll try it out.
Full Changelog: v0.21.0...v0.21.1
v0.21.0 - Improved streaming for koboldcpp
What's Changed
I've begun some refactoring work for how prompting works to make it more OOP. This may not be so interesting from a user point of view. In any case, I like to do it in small steps to make testing less of a burden. The goal, besides making it more manageable, is to improve character consistency and memory.
I also spent some time to fix streaming for kobold cpp. There was an experimental version prior to this, but it didn't work very well. This works better, but one quirk is that the initial location description will appear before the 'welcome' message. Consider it a prologue. The current implementation will also only work for prompts where the response is plain text (as opposed to json, which is more prevalent). The good news is that the descriptions of locations tend to be the longest, and they are just text.
Hopefully this opens up to using larger models.
It's off by default. To enable, set STREAM = True in backend_kobold_cpp.yaml
Full Changelog: v0.20.1...v0.21.0
v0.20.1 Save story button
What's Changed
Minor stuff:
- Save story button. 'Shortcut' for
save_storycommand. - Save_story now supports 'save as' by specifying another name.
- Removing load npc button if the player doesnt have wizard privileges. (The command doesn't work anyway, then)
Full Changelog: v0.20.0...v0.20.1
v0.20.0 - Action dropdown, location images, load character button
What's Changed
-
Action dropdown. It doesn't contain all commands, because Tale has many.
-
Load characters from file (if you're a wizard). Shortcut for the
!load_characterwizard command. Currently only supports .json files. -
Possibility for locations to have images. Can also be generated.
Full Changelog: v0.19.0...v0.20.0
v0.19.0 Beginnings of autonomous npcs
What's Changed
The main feature for this release is something that may not be ready for prime time, just yet. But it's still functional and possible to test.
One of my goals has always been 'life-like' NPC's that can decide their own goals and actions. This release allows them to select an action from a list, provide a goal and motivation, and of course some result from it. With a 7b, it works to some extent. But they seem unable to move very far from their origin standpoint. I have some ideas on how to take it further.
It also led to some unexpected events during testing, where an autonomous 'Shanda' attacked the player and others on sight.
I decided to, for now, to keep it disabled. If you want to, you can enable it for any npc with the 'autonomous' flag. It works for characters loaded, or by setting it in the json or py file.
Some other quality of life changes include a dropdown system for selecting character. It was suggested by 'The Yellow Snake' in the discord channel. Join us if you want to discuss LlamaTale!
I added a 'set visibility' command for wizards. It's common in MUDs for wizards to be invisible themselves, and as a Game Master it is valuable since you can affect things while being unseen. It's not limited to the own self, though. Any object can be toggled. Use with: !set_visibility object true/false
Full Changelog: v0.18.0...v0.19.0
v0.18.0 Avatars for npcs, image generation, backend changes
Highlights:
- NPC's can now have preconfigured avatars (instructions to come). The Prancing Llama has this as a proof of concept.
- Avatars can be generated using Automatic1111's web ui (for now) (instructions to come)
- Backend changes. Config are now broken down into separate files for different backends, to declutter llm_config.yaml a bit.
- Updates to dialogue prompt and parsing. Npc's will now stick to topic more and repeat themselves less.
Avatars and image generation is for --web only (for now).
Full Changelog: v0.17.1...v0.18.0
v0.17.1 More quests
What's Changed
-
Notes with quests (and lore) on them can now be generated. These are so far simple quests to encourage the player to explore the surroundings.
-
Added new wizard commands (to use them you need to launch with the '--wizard' flag, and remember to precede them with a '!'):
- 'Enrich'. By typing
!enrich itemsin the prompt, the same generation sequence that is run at the start of an 'Anything' story will be triggered. This allows you to add more 'story' items to the world, without having to wait an eternity at the start of the game. Similarly,!enrich creatureswill generate even more mob-like things for the LLM to choose from. - 'Add event'. This is like a powerful emote, where you can specify something happening in the location, that NPC's can react to. It will be added to their memories. Example in the 'teaparty' story:
!add_event A Bloated Murklin slams into the window
A Bloated Murklin slams into the window. Mad Hatter looks startled and confused as the Bloated Murklin slams into the window. “Oh dear! What in the world…?” he exclaims, his voice muffled by his oversized hat. The Duchess’s eyes narrow as she watches the Murklin through the window. “Well, well, well,” she says in a low, menacing tone. “Look what we have here.” With a flick of her wrist, she conjures up a small puff of smoke that darts towards the Murklin, obscuring its vision and temporarily blinding it. Ace of Spades glares at the Bloated Murklin, his thin lips curling into a snarl as he mutters darkly under his breath.
Note that each of the three characters has their own reaction in this paragraph.
I will focus on some more 'GM-like' commands next, since I think this was pretty fun and I have some more ideas.
Full Changelog: v0.17.0...v0.17.1
v0.17.0 "Quests"
What's Changed
Full Changelog: v0.16.2...v0.17.0
This is the beginnings of a way to drive story, procedurally, although they're not yet implemented in that manner. I needed to try them out first.
What "quests" mean is that a character may have a quest "attached" to them. If they do, they are meant to want to talk about it. If they do, and how much, is up to the LLM, but at least it's prompted during dialogue generation to have it in mind.
There are two types, currently, either 'fetch' type quests, where the player must find an item and bring it to the NPC, and 'talk', where the player is supposed to go to someone and talk to them. Once the format is proven, there will be more types.
So far Elid and Shanda in The Prancing Llama have quests. Both are 'fetch' type quests. Elid seems more inclined to talk about it, but then again, he's more inclined to talk in general.
This is not the best example, but it's the one still in the logs (gpt-3.5-turbo):
Elid Gald looks up from his conversation with Arto, his one eye
glinting in the firelight. “Hail, friend,” he says with a sly smile,
“What brings you to this desolate place?” He leans in, his voice low
and conspiratorial, “I trust you haven’t forgotten about our little
arrangement regarding the map? Norhardt may be a tough nut to crack,
but I’m counting on you to secure it for me,” he says, his tone a mix
of urgency and anticipation. Elid Gald nods at Arto and gives a
slight smile, acknowledging the greeting. He takes a sip of the
hearty stew and looks around the hall, eyes sharp despite the patch
over one of them. ’Always good to see a familiar face around here,’
he murmurs, his voice low and thoughtful.
More stuff:
I finally fixed 'generic items'. There are a bunch (not that many yet) items for different types of settings that will always be available for an Anything story. A sword, a club, that type of things.
I changed so that 'openai' calls also use json grammar, since I realized many that use the open ai style api use other backend than acutal openai.com and will want to be certain to get proper json responses.
I also updated the default openai model to 'gpt-3.5-turbo-1106' to be able to also make sure it uses json responses.
v0.16.2
What's Changed
This was supposed to be a small follow up release to 0.16.1 with just a few minor fixes, but doing some extensive testing, I found a slew of bugs. Some stemming from a recent refactor, some probably older. In any case, this should improve quality of life.
An excerpt:
- Save whether location has been 'built' or not. Previously, loaded dynamic stories would no generate new locations
- The llm_cache was broken and would not use the stored values.
- Food and Drinks didn't work and would throw an exception if anything was interacted with in a location.
- Exit descriptions were sometimes broken, just saying 'description'
- There was an issue with the combat prompt, leading to an exception
And one new feature:
- Saving and loading of npc 'memories', meaning they will retain anything they have learned when loading a story.
Full Changelog: v0.16.1...v0.16.2



