Fix missing story in turn llm
This commit is contained in:
@@ -64,32 +64,41 @@ def validate_action(
|
||||
|
||||
prompt = VALIDATION_PROMPT.format(character=char, world=world, log=log_entries, story=recent, action=player_action)
|
||||
|
||||
text = call_llm(
|
||||
[{"role": "user", "content": prompt}],
|
||||
max_tokens=1024,
|
||||
temperature=0.2,
|
||||
label="Action validation",
|
||||
on_debug=on_debug,
|
||||
)
|
||||
messages = [{"role": "user", "content": prompt}]
|
||||
|
||||
if not text:
|
||||
return False, "Not sure"
|
||||
for attempt in range(2):
|
||||
text = call_llm(
|
||||
messages,
|
||||
max_tokens=1024,
|
||||
temperature=0.2,
|
||||
label="Action validation",
|
||||
on_debug=on_debug,
|
||||
)
|
||||
|
||||
cleaned = text.strip()
|
||||
m = re.search(r"```(?:json)?\s*\n?(.*?)```", cleaned, re.DOTALL)
|
||||
if m:
|
||||
cleaned = m.group(1).strip()
|
||||
try:
|
||||
data = json.loads(cleaned)
|
||||
valid = data.get("valid", True)
|
||||
reason = data.get("reason", "")
|
||||
if on_debug:
|
||||
on_debug("action_validation", {"valid": valid, "reason": reason, "action": player_action})
|
||||
return valid, reason
|
||||
except (json.JSONDecodeError, ValueError):
|
||||
if on_debug:
|
||||
on_debug("action_validation", {"valid": True, "reason": "parse_failed", "raw": text[:200]})
|
||||
return False, "Unrecognized"
|
||||
if not text:
|
||||
return False, "Not sure"
|
||||
|
||||
cleaned = text.strip()
|
||||
m = re.search(r"```(?:json)?\s*\n?(.*?)```", cleaned, re.DOTALL)
|
||||
if m:
|
||||
cleaned = m.group(1).strip()
|
||||
try:
|
||||
data = json.loads(cleaned)
|
||||
valid = data.get("valid", True)
|
||||
reason = data.get("reason", "")
|
||||
if on_debug:
|
||||
on_debug("action_validation", {"valid": valid, "reason": reason, "action": player_action})
|
||||
return valid, reason
|
||||
except (json.JSONDecodeError, ValueError):
|
||||
if on_debug:
|
||||
on_debug("action_validation", {"valid": True, "reason": "parse_failed", "raw": text[:200]})
|
||||
if attempt == 0:
|
||||
messages.append({
|
||||
"role": "system",
|
||||
"content": "Your previous response was not valid JSON. Reply with ONLY a JSON object in exactly this format, nothing else:\n\n```json\n{\"valid\": true, \"reason\": \"ok\"}\n```\nor\n```json\n{\"valid\": false, \"reason\": \"brief explanation\"}\n```"
|
||||
})
|
||||
|
||||
return False, "Unrecognized"
|
||||
|
||||
|
||||
def auto_prompt(book_log: str = "") -> str:
|
||||
|
||||
Reference in New Issue
Block a user