← Back to context

Comment by alwaysanoobie

15 hours ago

What I don't understand is how are you passing the world state to the model?

Say for instance when you ask the dog to do an action when you launch an arrow upwards how is the LLM continuously tracking the state of the game to be able to respond?

At that point it's deterministic and doesn't need the LLM. Once a plan has been decomposed and evaluated, it becomes a sequence of actions. Actions can either wait on a trigger or flow from one to another.

For the arrow example: wait here -> bind: arrow event -> pick_up $target -> goto player -> drop $target.

A plan can bind to multiple steps and actions. eg you can tell the dog, "when I say apple you say banana" this creates a short lived "player has said %apple%" -> say "banana" rule. Hide and seek does "say: count to 10" (this then gets fed to llm that converts it to "one, two, three"). So, the plan decomposition is fuzzy, but it gets decomposed to concrete steps, these steps might invoke the LLM back if needed so, but mostly for color, not logic.

Where the LLM is used afterwards, is for evaluating the result. The dog might ask for a treat if it got right or get frustrated is it misses a beat, etc (depending on emotional state, hunger levels, etc).

Basically trying to use the best of each system (fuzzy/vague/emotional for LLM, "hard" game actions for determinism). You can think of Ale's output as a small flowchart.

I am using a pretty dumb model. It's great for speaking, terrible for thinking, so there's a need for creativity

  • I think what's still a bit unclear is how the action space gets linked to a plan. Did you create your own action prototypes, or are you using ones exposed via an existing Skyrim world state interface layer?

    How often are you running the world JSON through the planner? When do you give up on fuzzy matching if an action doesn't fit?

    Do you use any vision tools? such as the plugin from https://github.com/MinLL/SkyrimNet-GamePlugin

    Super cool project btw, thanks for sharing!