Skip to content

Releases: neph1/LlamaTale

v0.9.1 Generated items and more

29 Aug 18:46
30e4450
Compare
Choose a tag to compare

What's Changed

  • Generated items are now parsed and inserted correctly.
  • Added a new concept: zone descriptions:
    Each zone (area consisting of several locations) can have a description, a list of races commonly populating it, and a list of items which can be found. These are added to the prompt the LLM receives to give it a hint of what it can use. This will be expanded upon later.
  • I managed to get the LLM to more consistently generate locations, it's also quite generous with items. Maybe need to pass some probability from the MUD whether it should generate items and mobs.
  • I added a flag so that locations created by the LLM don't receive a generated description when entering them. This to avoid a double inference load. I also figure since they're already procedurally generated, they don't need it as much as the 'static' locations. Do you agree? If not, let's discuss it! I may make it configurable.

If you get errors when generating content, that is not JSON related (those are generally 'Unterminated string' or 'Expecting delimiter'), I'm interested in receiving error reports. Copying the generated content from the LLM window would be helpful. I've tried to compensate for weird stuff the LLM generates, but there are probably many more cases.

Full Changelog: v0.9.0.1...v0.9.1.3

v0.9.0 - Generating locations

26 Aug 09:20
42329ab
Compare
Choose a tag to compare

What's Changed

After much work, the LLM can now generate locations. It's not fool-proof. It fails to generate proper JSON sometimes, and for that reason, it will retry up to 5 times. The quality of the generation varies, too, and it can be difficult to navigate from the descriptions it makes.
You can always go to a place by typing it's name, and it can be a good idea to see the generation in a separate window to see what it has actually produced.

You can (should) also always be able to go back to the place you came from.

To trigger this, just go outside the Prancing Llama. This is uncharted territory, and will be generated, both description and new locations.

Here are some examples I got (wolves not included):

{
"name": "Outside",
"description": "A barren wasteland of snow and ice stretches as far as the eye can see. The wind howls through the mountains like a chorus of banshees, threatening to sweep away any unfortunate soul caught outside without shelter.",
"exits": [
{"name": "North Pass","short_desc": "The North Pass is treacherous mountain pass that leads deeper into the heart of the range","enter_msg":"You shuffle your feet through knee-deep drifts of snow, trying to keep your balance on the narrow path."}, {"name": "South Peak","short_Desc": "The South Peak offers breathtaking views of the surrounding landscape from its summit, but it's guarded by a pack of fierce winter wolves.","Enter_msg":"You must face off against the snarling beasts if you wish to reach the peak."}] ,"items": [],"npcs": []}

{
"name": "Outside",
"description": "A barren wasteland stretches out before the hut, snow blanketing the ground and wind howling through the mountains.",
"exits": [
{"name": "valley", "short_descr": "A treacherous path leads down into a narrow valley, filled with hidden dangers and untold riches.",
"enter_msg": "The wind picks up, threatening to send you tumbling down the rocky slope."},
{"name": "cliff", "short_descr": "A sheer cliff face looms above, only reachable by scaling the icy walls or taking a perilous leap of faith."},
{"name": "cave", "short_descr": "A dark opening in the side of the mountain, rumored to be home to ancient evils."}
],"items": [], "npcs": []
}

Full Changelog: v0.8.1...v0.9.0

v0.8.1 - Wielding and description cache

17 Aug 16:48
Compare
Choose a tag to compare
  • Added a 'wield' command and a couple of items that can be used as weapons throughout the Llama.
  • Unarmed attack types for all described races.
  • Wielded weapons are used in the combat descriptions generated by the LLM.
  • To increase consistency, (and lessen inference time), I added a simple cache system, where, if the MUD's description of a room stays the same, ie same items, same characters, the description previously generated by the LLM will be used again. Much quicker when you traverse back and forth.
  • Fixed a bug where some of the rooms descriptions weren't correct, making them not 'appear', and thus become hard to navigate to (the cellar being one of them).

Full Changelog: v0.8.0.1...v0.8.1

v0.8.0 -- LLM generates characters

13 Aug 07:57
a436f9e
Compare
Choose a tag to compare

When the story (The Prancing Llama) starts, the LLM will attempt to generate 2 characters and insert them into the scenario. They will be of a new type that roams the place, still driven by the MUD lib. Since the JSON output still fails occasionally (depending on model), it will try 10 times.

I use this model when testing, and I've found that it generates quite good JSON, and decent story.

I've spent alot of time sanitizing the JSON output, trying to repair all the creative ways the model breaks it in, and it works most of the times.

Full Changelog: v0.7.4.1...v0.8.0

v0.7.4 - Multi-turn combat and maintenance

12 Aug 07:48
67d7919
Compare
Choose a tag to compare

LlamaTale now technically supports multi-turn combat. Previously, it always led to the death of one of the participants. With the introduction of a health point system, creatures can take several hits before dying. All acted out through the LLM, of course.

Otherwise, the big part of this release is I fixed all of the tests I broke while developing this fork.

There are some additions to the story and npc's, but I still mean to connect them some more.

v0.7.3

09 Aug 16:48
Compare
Choose a tag to compare

What's Changed

  • some improvements for characters to keep better context by @neph1 in #5
  • fix requirements.txt
  • better error handling when own character not loaded

Full Changelog: v0.7.1...v0.7.3

The MUD giveth, and the MUD.. well, drops stuff.

08 Aug 17:35
f8e4950
Compare
Choose a tag to compare

This release was supposed to be all about the LLM deciding when to give, take, drop or stove away items during dialogues. It has proven quite difficult to get it to reliably generate JSON, though. What works well during testing 10/10 times, fails in a live environment, especially is the NPC was actually supposed to give something. So, it works sometimes. I've tried to catch any exceptions so that the game at least doesn't crash when there's malformed JSON trying to be parsed. You can talk to the old man at the bar, he may have something he's willing to give you..

But wait, there's more!

If you're tired of the character generation script (I am), you can now load any(?) Silly Tavern v2 character card as your own character. Add:
--character path_to_your_character
to the launch command. It works with both .json and images.
And if you want to bring your favorite character with you on your adventure, you can type while in game:
load_character path_to_your_character_relative_to_the_story_folder
They will appear next to you and follow you around.

I decided to bring Gandalf with me:

You say: gandalf, the white wizard: a drink?

Gandalf, The White Wizard says: “Gandalf, The White Wizard: “Ah, a thirsty traveler! reaches into pouch and pulls out a small flask filled with shimmering liquid Here, take a sip of this elvish brew, my young friend. It should quench your parched throat and perhaps inspire you for the journey ahead. hands the flask to Riley As for joining us, I must say…I sense great potential within you. The darkness indeed creeps closer, but there are those who would stand against it, and we need all the allies we can find. What do you say? Shall we venture deeper into Lothlorien’s mystic depths together?””

Lastly, I managed to get streaming of tokens going, but it wasn't pretty.. You can enable it by setting STREAM: True in llm_config.yaml, but it's really only if you're desperate not to wait for it to finish.

I expect to refine all these features, and combat in the subsequent releases, rather than adding new features.

I hope you will enjoy them for now!

I smell a (giant) rat

01 Aug 14:56
Compare
Choose a tag to compare

Added a basic combat system + LLM generated description. (There was no combat in the original Tale! :-O )

You'll find something to fight in the cellar of The Prancing Llama.

Here's an example:

You attack giant rat.

Original:[ You attack giant rat! After a fierce battle, giant rat dies. ] Generated: As you step further into Cellar #23, the air grows thick with the scent of decay and rot. Flickering lantern light casts eerie shadows on the walls, highlighting the dank, moldy corners where spiders spin their webs. Suddenly, a massive shape emerges from the darkness—a towering monstrosity that could only be a giant rat. The beast’s razor-sharp fangs gnash menacingly as it lunges at you, its luminous red eyes aglow with hunger for bloodshed. Your sword flashes in the dimness, parrying the first bite but not quite fast enough. A glancing blow sends sparks flying; you dance backward, avoiding another chomping attempt while readying your next strike. In the swirling gloom, the combat rages on like an inferno born of nightmares. With each successive clash, the creature growls and snaps, its body coated in sweat and foamy froth, until finally… 💥 IT FALLS TO THE GROUND, DEAD! Victory is yours, but the cellar still looms full of horrors unvanquished.

The Prancing Llama

23 Jul 18:45
Compare
Choose a tag to compare

This release contains some further changes to the framework in addition to the initial llm-generating support.

  • Added appearance and personality as well as some other basic data to be able to create 'character cards' similar to when chatting with bots.
  • Added a special prompt (and associated plumbing) for generating dialogue from NPC's.
  • Some prompt 'engineering' to create better descriptions.
  • A demo story, The Prancing Llama. Start it by typing:
    python -m stories.prancingllama.story
  • The story is mostly a better demo of the llm capabilities, than a full game. Walk around and interact with the characters at this remove tavern.

Full Changelog: https://github.com/neph1/LlamaTale/commits/v0.51