Phase 1: v1 single-bot roleplay engine #1

Merged
dohertj2 merged 45 commits from phase-1 into main 2026-04-26 19:59:30 -04:00
4 changed files with 18 additions and 3 deletions
Showing only changes of commit d161e7b8e9 - Show all commits
+7
View File
@@ -23,6 +23,13 @@ class Settings(BaseModel):
retrieval_k: int = 4
narrative_budget_hard: int = 8000
narrative_budget_soft: int = 6000
# Cap on each generated bot response. ~400 tokens ≈ 12 short paragraphs.
# Bump if you want longer scenes; drop to 200 for terse banter.
narrative_max_tokens: int = 400
# Sampling temperature for narrative generation. 0.7 = grounded /
# consistent; 0.85 = creative-but-in-character (default); 1.0 = wide
# variety, can drift; >1.0 = often off-the-rails.
narrative_temperature: float = 0.85
classifier_budget_hard: int = 4000
classifier_timeout_s: float = 30.0
# Featherless free tier and lower paid tiers cap concurrent connections.
+3 -1
View File
@@ -211,7 +211,9 @@ def _closing_instruction(speaker_name: str, addressee_name: str) -> str:
f"Continue the scene as {speaker_name}, in their voice, responding "
"naturally. Use *asterisks* for actions and quotes for dialogue. "
f"Stay in character. Do not narrate {addressee_name}'s actions or "
"thoughts."
"thoughts. "
"Keep your response to a single beat — one or two short paragraphs "
"at most. Don't monologue; leave room for the other person to react."
)
+4 -1
View File
@@ -156,7 +156,10 @@ async def regenerate_assistant_turn(
# 5. Stream the new narrative.
accumulated: list[str] = []
async for chunk in client.stream(
messages, model=settings.narrative_model
messages,
model=settings.narrative_model,
max_tokens=settings.narrative_max_tokens,
temperature=settings.narrative_temperature,
):
accumulated.append(chunk)
await publish(
+4 -1
View File
@@ -198,7 +198,10 @@ async def post_turn(
async def _stream() -> None:
async for chunk in client.stream(
messages, model=settings.narrative_model
messages,
model=settings.narrative_model,
max_tokens=settings.narrative_max_tokens,
temperature=settings.narrative_temperature,
):
accumulated.append(chunk)
await publish(