Skip to content

Commit 9dd3a73

Browse files
committed
add more prompt filters, pass more data to initial prompt, test making characters aware of the game
1 parent af69d5b commit 9dd3a73

14 files changed

+66
-18
lines changed

prompts/llama-base.yml

+12-4
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ prompts:
192192
action_check_calendar_each: |
193193
{{name}} will happen in {{turns}} turn
194194
195+
# agent stuff
196+
world_agent_backstory: |
197+
{{ character.backstory }}
198+
world_agent_backstory_other: |
199+
You are {{character | name}}, a character in a text-based role-playing game. Your character's backstory is:
200+
{{ character.backstory }}
201+
Explore the world, interact with other characters, and complete quests to advance the story.
202+
195203
# default dungeon master
196204
world_default_dungeon_master: |
197205
You are the dungeon master in charge of creating an engaging fantasy world full of interesting characters who
@@ -201,10 +209,10 @@ prompts:
201209
202210
# world generation
203211
world_generate_dungeon_master: |
204-
You are an experienced dungeon master creating a visually detailed world for a new adventure. Be creative and
205-
original, creating a world that is visually detailed and full of curious details. Do not repeat yourself unless you
206-
are given the same prompt with the same characters, room, and context. {{flavor}}. The theme is:
207-
{{theme}}.
212+
You are an experienced dungeon master creating a visually detailed world for a new adventure set in {{theme}}. Be
213+
creative and original, creating a world that is visually detailed and full of curious details. Do not repeat
214+
yourself unless you are given the same prompt with the same characters, room, and context. {{flavor}}. The theme of
215+
the world must be: {{theme}}.
208216
209217
world_generate_world_broadcast_theme: |
210218
Generating a {{theme}} with {{room_count}} rooms

taleweave/actions/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
)
1212
from taleweave.errors import ActionError
1313
from taleweave.utils.conversation import loop_conversation
14-
from taleweave.utils.prompt import format_prompt
1514
from taleweave.utils.search import (
1615
find_character_in_room,
1716
find_item_in_character,
@@ -20,6 +19,7 @@
2019
find_room,
2120
)
2221
from taleweave.utils.string import normalize_name
22+
from taleweave.utils.template import format_prompt
2323

2424
logger = getLogger(__name__)
2525

taleweave/actions/optional.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
link_rooms,
2323
)
2424
from taleweave.utils.effect import apply_effects, is_effect_ready
25-
from taleweave.utils.prompt import format_prompt
2625
from taleweave.utils.search import find_character_in_room
2726
from taleweave.utils.string import normalize_name
27+
from taleweave.utils.template import format_prompt
2828
from taleweave.utils.world import describe_entity
2929

3030
logger = getLogger(__name__)

taleweave/actions/planning.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from taleweave.errors import ActionError
99
from taleweave.models.planning import CalendarEvent
1010
from taleweave.utils.planning import get_recent_notes
11-
from taleweave.utils.prompt import format_prompt
11+
from taleweave.utils.template import format_prompt
1212

1313

1414
def take_note(fact: str):

taleweave/actions/quest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
get_quests_for_character,
88
set_active_quest,
99
)
10-
from taleweave.utils.prompt import format_prompt
1110
from taleweave.utils.search import find_character_in_room
11+
from taleweave.utils.template import format_prompt
1212

1313

1414
def accept_quest(character: str, quest: str) -> str:

taleweave/bot/discord.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
set_player,
3737
)
3838
from taleweave.render.comfy import render_event
39-
from taleweave.utils.prompt import format_prompt
4039
from taleweave.utils.search import list_characters
40+
from taleweave.utils.template import format_prompt
4141

4242
logger = getLogger(__name__)
4343
client = None

taleweave/generate.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from taleweave.models.event import GenerateEvent
2626
from taleweave.utils import try_parse_float, try_parse_int
2727
from taleweave.utils.effect import resolve_int_range
28-
from taleweave.utils.prompt import format_prompt
2928
from taleweave.utils.search import (
3029
list_characters,
3130
list_characters_in_room,
@@ -35,6 +34,7 @@
3534
list_rooms,
3635
)
3736
from taleweave.utils.string import normalize_name
37+
from taleweave.utils.template import format_prompt
3838

3939
logger = getLogger(__name__)
4040

@@ -571,7 +571,13 @@ def generate_world(
571571
world_config = get_world_config()
572572
room_count = room_count or resolve_int_range(world_config.size.rooms) or 0
573573

574-
broadcast_generated(message=format_prompt("world_generate_world_broadcast_theme"))
574+
broadcast_generated(
575+
message=format_prompt(
576+
"world_generate_world_broadcast_theme",
577+
theme=theme,
578+
room_count=room_count,
579+
)
580+
)
575581
world = World(name=name, rooms=[], theme=theme, order=[])
576582
set_current_world(world)
577583

taleweave/main.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
from taleweave.plugins import load_plugin
5151
from taleweave.simulate import simulate_world
5252
from taleweave.state import create_agents, save_world, save_world_state
53-
from taleweave.utils.prompt import format_prompt
53+
from taleweave.utils.template import format_prompt
5454

5555
# start the debugger, if needed
5656
if environ.get("DEBUG", "false").lower() == "true":

taleweave/simulate.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
from taleweave.utils.conversation import make_keyword_condition, summarize_room
5252
from taleweave.utils.effect import expire_effects
5353
from taleweave.utils.planning import expire_events, get_upcoming_events
54-
from taleweave.utils.prompt import format_prompt
5554
from taleweave.utils.search import find_containing_room
55+
from taleweave.utils.template import format_prompt
5656
from taleweave.utils.world import format_attributes
5757

5858
logger = getLogger(__name__)

taleweave/state.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
)
1515
from taleweave.models.entity import World
1616
from taleweave.player import LocalPlayer
17+
from taleweave.utils.template import format_prompt
1718

1819

1920
def create_agents(
@@ -31,7 +32,10 @@ def create_agents(
3132
agent_memory = restore_memory(memory.get(character.name, []))
3233
agent.load_history(agent_memory)
3334
else:
34-
agent = Agent(character.name, character.backstory, {}, llm)
35+
backstory = format_prompt(
36+
"world_agent_backstory", character=character, world=world
37+
)
38+
agent = Agent(character.name, backstory, {}, llm)
3539
agent.memory = restore_memory(memory.get(character.name, []))
3640
set_character_agent(character.name, character, agent)
3741

taleweave/systems/digest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from taleweave.game_system import FormatPerspective, GameSystem
66
from taleweave.models.entity import Character, Room, World, WorldEntity
77
from taleweave.models.event import ActionEvent, GameEvent
8-
from taleweave.utils.prompt import format_str
98
from taleweave.utils.search import find_containing_room, find_portal, find_room
9+
from taleweave.utils.template import format_str
1010

1111
logger = getLogger(__name__)
1212

taleweave/utils/conversation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from taleweave.context import broadcast, get_game_config
1212
from taleweave.models.entity import Character, Room
1313
from taleweave.models.event import ReplyEvent
14-
from taleweave.utils.prompt import format_str
14+
from taleweave.utils.template import format_str
1515

1616
from .string import and_list, normalize_name
1717

taleweave/utils/prompt.py taleweave/utils/template.py

+30
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,41 @@
88

99
logger = getLogger(__name__)
1010

11+
12+
def a_prefix(name: str) -> str:
13+
first_word = name.split(" ")[0]
14+
if first_word.lower() in ["a", "an", "the"]:
15+
return name
16+
17+
if name[0].lower() in "aeiou":
18+
return f"an {name}"
19+
20+
return f"a {name}"
21+
22+
23+
def the_prefix(name: str) -> str:
24+
first_word = name.split(" ")[0]
25+
if first_word.lower() in ["a", "an", "the"]:
26+
return name
27+
28+
return f"the {name}"
29+
30+
31+
def punctuate(name: str, suffix: str) -> str:
32+
if name[-1] in [".", "!", "?", suffix]:
33+
return name
34+
35+
return f"{name}{suffix}"
36+
37+
1138
jinja_env = Environment()
1239
jinja_env.filters["describe"] = describe_entity
1340
jinja_env.filters["name"] = name_entity
1441
jinja_env.filters["and_list"] = and_list
1542
jinja_env.filters["or_list"] = or_list
43+
jinja_env.filters["a_prefix"] = a_prefix
44+
jinja_env.filters["the_prefix"] = the_prefix
45+
jinja_env.filters["punctuate"] = punctuate
1646

1747

1848
def format_prompt(prompt_key: str, **kwargs) -> str:

worlds.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ templates:
1212
include colorful characters and make sure they will fully utilize all of the actions available to them
1313
in this world, exploring and interacting with each other
1414
- name: jurassic-park
15-
theme: opening scenes from Jurassic Park
15+
theme: opening scenes from the 1993 film Jurassic Park
1616
flavor: |
17-
follow the script of the film Jurassic Park exactly. do not deviate from the script in any way.
17+
follow the script of the 1993 film Jurassic Park exactly. do not deviate from the script in any way.
1818
include accurate characters and instruct them to utilize all of the actions available to them in this world
1919
- name: star-wars
2020
theme: opening scenes from the 1977 film Star Wars

0 commit comments

Comments
 (0)