Releases: neph1/LlamaTale
v0.38.0
What's Changed
Mostly more house keeping.
Noticed that 'goals' was not passed in the character card, so had no effect on action generation
Added 'hidden' state to context passed to actions so that npcs won't act on other hidden npcs
Moved away from storing prompts in the classes and referenced directly to the llm_config instead.
Full Changelog: v0.37.0...v0.38.0
v0.37.0
-
I've reworked the combat prompt and how it's defined to hopefully get some better generation results. This also introduced a 'durability' feature for items, which is not yet fully into play (but it degrades).
-
Added support for 'story wearables'. If you define wearables in the story's 'catalogue', they will be added to the total pool when loading the story. Useful for themed stories, that may not fit into the limited genres already defined.
-
Added support for 'password' for koboldcpp servers. Define 'API_PASSWORD' in backend_kobold_cpp.yaml to enable it.
-
This led me to find a bug with openai api's that didn't send the API_KEY when streaming, so that has been fixed as well.
What's Changed
Full Changelog: v0.36.2...v0.37.0
v0.36.2
Mostly refactoring and removal of some technical debt.
But I broke out wearables loading to .json files, so it'll be easier if you want to create your own. They're located in the 'items' folder.
What's Changed
Full Changelog: v0.36.1...v0.36.2
v0.36.1 Progressive story context
What's Changed
This is an experimental feature I started writing this summer, but didn't get around to finish until now. Unsure about its effects.
The idea being that having a static background story may not work well for long-form RP games, since the LLM will get stuck and only generate based on the existing story.
This feature expands on the background story and will, at intervals, ask the LLM to move the overarching plot forward. The result will get stored in the story, and then some time later, it will be expanded upon again.
It is currently built into generated stories, but deliberately it's meant to be subtle. I'll do a writeup in the wiki with some examples of how to add it to your own stories.
Full Changelog: v0.35.2...v0.36.1
v0.35.2 Discord bot and fixes
What's Changed
Some small shop related fixes and a minor change to the server to be able to support a discord bot relay.
Yes, you can now run LlamaTale anywhere through the LlamaTale-DiscordBot project.
Sadly you need to set up the Discord bot yourself. I can't distribute a bot with unique keys (since that's what it's using to connect to a server)
It's still in a basic state, you can't restart a story remotely, mostly due to how Tale manages sessions. It's something I will look into.
Check the repository for instructions.
Full Changelog: v0.35.1...v0.35.2
v0.35.1 - Equinox update
Edit: I've updated the release to contain a few fixes.
This is the biggest update to LlamaTale for a long time.
Highlights are:
Traders - Enabling Tale's shop system
Automatically equip and dress generated NPCs based on occupation
Optional removal of model specific templates (ie, allow usage of backends chat templates)
A bunch of fixes as per usual
Traders
Tale already had a working shop system. This update allows traders being set up with inventory and using the correct template. A whole list of new commands are used, which I'll add a wiki page for. Traders have things to sell, and will sometimes buy things as well.
Will still need some improvements to the economic system to work well (note to self).
Occupation parsing
An npc's occupation is now parsed for generated npcs (and optional for loaded ones). This will automatically give them some relevant weapons or equipment and clothing. To make a previously generated npc use the feature (such as a loaded companion), add 'parse_occupation=True' to the json file.
They will also get relevant skills and spells (yes, spells have been rewritten to be used by npcs now too)
Template optional
To accomodate to the 'modern' feature of backends automatically selecting the correct template
USER_START: '### Instruction:\n'
USER_END: '### Response:\n'
have been removed from llm_config.yaml. Any mentions of USER_START in the prompt will be removed when parsing.
You may still add them back if you for some reason want them, and it will use that template instead.
A big shoutout to ko-fi supporter OtterDemon for the donations during a fairly slow summer season.
Upcoming changes
There is still some work to do to fully take advantage of the new occupation features. I haven't specifically told the LLM to generate occupations (or what occupations to use).
I should make the npcs actually wear and wield the items they receive.
As mentioned, improve the economic system, or use it more.
Do an overhaul to the prompts. They were made in a different era with 2k to 4k prompts and are very brief. I think they could be more expansive to make better use of modern LLM's.
Update wiki articles. Some are outdated, and some new entries are needed.
What's Changed
Full Changelog: v0.34.0...v0.35.1
v0.34.0 - Like a thief in the night
Combat points have been renamed to action points for versatility reasons.
A 'skill' set has been added to livings. Expect more skills to come.
New commands:
hide - Pass the skill throw (and be alone in the location), to hide and become impossible to spot. Costs on action point.
unhide - Reveal yourself again.
search_hidden - Search for npcs that are hidden. Costs on action point.
pick_lock - Use your skills to pick doors that are locked (maybe mostly interesting in Dungeon stories).
New spells:
cast_rejuvenate - Replenish action points.
cast_hide - Hide someone (maybe yourself).
cast_reveal - Use magic to reveal someone hiding.
For all spells the format i: spell who (level optional)
When you're hidden, no replenishment is possible.
Attacking will reveal yourself.
Autonomous npcs may search and hide. For others I'm thinking about adding a perception based 'throw'.
Being hidden may be janky in some situations. Both because I've missed to take some things into consideration, and in the case of LLM powered NPC's, their reaction to a "[hidden]" tag may vary, if you choose to interact with them.
What's Changed
Full Changelog: v0.33.1...v0.34.0
v0.33.1
v0.33.0 magic and spells
The reason I wanted 'replenish' in was I needed a way to regain magic points after spending them.
So here is a basic spells system. It works (for now) as commands and you need both enough magic points and a successful roll to cast them. There are three proof of concept spells, 'heal', 'bolt' and 'drain'.
Heal: Costs 2 points. Heals up to 5 points.
Bolt: Costs 3 points. Damages a random amount of health between 1 and 'level' of spell.
Drain: Costs 3 points. Drains a random amount of combat points and magic points between 1 and 'level' of spell. Adds amount to casters magic points.
Name of the spell is the command. Target is required and should be a Living in the same location.
heal target
This is something of a prototype, and may change. For example it's only possible for Players to use the spells at the moment. I'm working on adding 'levels' to the spells as well. For now I've added the 'heal' spell to players in The Prancing Llama, and all spells to Anything and Dungeon stories. Check the init_player
method of those if you want to add spells to your custom stories.
But I guess we need some kind of class system, soon?
Original:[ You cast a healing spell that heals elid gald for 5 hit points] Generated:With a flick of my wrist, I channel magical energy into Elrid Gald’s body, bathing him in a warm, golden light. His eyes flutter open, taking in his surroundings as if awakening from a long slumber. A soft hum emanates from within me as I continue to weave together intricate patterns of magic, carefully tending to each of his five remaining hit points. As his wounds begin to mend, Elrid stirs, shifting uncomfortably on the makeshift bed of piled furs and blankets. He groans softly, wincing at some discomfort before catching sight of me. “Ah, thank the gods,” he mutters with a weak smile, his voice still hoarse from the ordeal.
v0.32.0 Replenish and combat points
This feature has been brewing in my head for a while. "How to replenish health points over time".
I decided on a periodical function, and only for players for now. It will add one point every 10 seconds. (Is this too often?).
I also added another idea, "combat points", which is rather stamina. It will decrease when attacking, and replenish over time. If it's 0 you can't attack, and it will hurt your defense.
I needed to get this sorted out to before the next bigger thing that has been missing from the framework.