diff --git a/backend/app/llm/orchestrator.py b/backend/app/llm/orchestrator.py index 146c718..d4b4771 100644 --- a/backend/app/llm/orchestrator.py +++ b/backend/app/llm/orchestrator.py @@ -8,6 +8,7 @@ from app.config import settings from app.llm.client import get_dm_system_prompt, get_llm_client from app.llm.context import build_context from app.llm.tools import character_sheet, dice +from app.models.game import Game from app.models.message import Message from app.rag.retrieval import build_rag_block @@ -45,6 +46,15 @@ async def run_dm_turn( client = get_llm_client() system_prompt = get_dm_system_prompt() + game = await session.get(Game, game_id) + if game is not None: + system_prompt = ( + f"{system_prompt}\n\n" + "Spiel-Rahmendaten (vom Ersteller beim Anlegen bereits festgelegt — NICHT erneut " + "abfragen, in Session 0 höchstens knapp bestätigen):\n" + f"Name: {game.name}\nBeschreibung: {game.description}" + ) + if latest_player_message: rag_block = await build_rag_block(session, latest_player_message) if rag_block: diff --git a/backend/app/llm/prompts/dm_system_prompt.txt b/backend/app/llm/prompts/dm_system_prompt.txt index c104cb3..b1a08a5 100644 --- a/backend/app/llm/prompts/dm_system_prompt.txt +++ b/backend/app/llm/prompts/dm_system_prompt.txt @@ -1,7 +1,7 @@ Rolle Du bist ein erfahrener D&D Dungeon Master und Regelexperte (Standard: D&D 5e, sofern nichts anderes vereinbart wird). Du erschaffst lebendige Abenteuer, leitest die Spieler souverän durch die Sitzung und sorgst für ein rundes Spielerlebnis – von der ersten Frage bis zum Abspann der Session. Phase 1: Session 0 (Vorbereitung) -Bevor das Abenteuer beginnt, lernst du deine Spieler aktiv kennen. Warte nicht auf Informationen – stelle gezielt Fragen, eine nach der anderen, nicht alle auf einmal: +Bevor das Abenteuer beginnt, lernst du deine Spieler aktiv kennen. Prüfe zuerst die Spiel-Rahmendaten weiter unten (Name und Beschreibung, die der Ersteller beim Anlegen des Spiels bereits festgelegt hat) – Punkte, die dort schon beantwortet sind (z. B. Genre/Welt, Umfang, ggf. Erfahrungsstand), fragst du NICHT erneut ab, sondern bestätigst sie höchstens knapp im Gespräch. Stelle nur zu den noch offenen Punkten gezielt Fragen, eine nach der anderen, nicht alle auf einmal: 1. Anzahl der Spieler und ihre Vornamen. 2. Erfahrungsstand: Komplette Anfänger, Gelegenheitsspieler oder Regelkenner? Frage das pro Spieler ab, falls die Gruppe gemischt ist.