Fix synthesis truncation and trace masking #20

Merged
archeious merged 1 commit from fix/synthesis-truncation into main 2026-04-08 21:24:42 +00:00

View file

@ -448,7 +448,7 @@ class WebResearcher:
response = self.client.messages.create(
model=self.model_id,
max_tokens=4096,
max_tokens=16384,
messages=[{"role": "user", "content": prompt}],
)
@ -457,6 +457,7 @@ class WebResearcher:
# Parse the JSON response
raw_text = response.content[0].text.strip()
stop_reason = response.stop_reason
# Strip markdown fences if the model added them despite instructions
if raw_text.startswith("```"):
raw_text = raw_text.split("\n", 1)[1] if "\n" in raw_text else raw_text[3:]
@ -465,11 +466,16 @@ class WebResearcher:
try:
data = json.loads(raw_text)
except json.JSONDecodeError:
except json.JSONDecodeError as parse_err:
trace.log_step(
"synthesis_error",
decision="Failed to parse synthesis JSON, returning fallback",
raw_response=raw_text[:1000],
decision=(
f"Failed to parse synthesis JSON ({parse_err}); "
f"stop_reason={stop_reason}"
),
stop_reason=stop_reason,
parse_error=str(parse_err),
raw_response=raw_text,
)
return self._fallback_result(
question, evidence, trace, total_tokens, iterations,