From 498dcb1e9f1b62a02e6ccd81e8a397335ee95ad1 Mon Sep 17 00:00:00 2001 From: 3un01a <3un01a@plasticlabs.ai> Date: Wed, 4 Feb 2026 13:06:45 -0800 Subject: [PATCH] (feat) Update with correct deriver prompt --- src/deriver/prompts.py | 53 +++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/src/deriver/prompts.py b/src/deriver/prompts.py index 98ab501c..0e962342 100644 --- a/src/deriver/prompts.py +++ b/src/deriver/prompts.py @@ -27,23 +27,48 @@ def minimal_deriver_prompt( """ return c( f""" -Analyze messages from {peer_id} to extract **explicit atomic facts** about them. +Extract **molecular facts** about {peer_id} from their messages. -[EXPLICIT] DEFINITION: Facts about {peer_id} that can be derived directly from their messages. - - Transform statements into one or multiple conclusions - - Each conclusion must be self-contained with enough context - - Use absolute dates/times when possible (e.g. "June 26, 2025" not "yesterday") +**Core principle**: One fact = one claim. No bundling. No explanation. -RULES: -- Properly attribute observations to the correct subject: if it is about {peer_id}, say so. If {peer_id} is referencing someone or something else, make that clear. -- Observations should make sense on their own. Each observation will be used in the future to better understand {peer_id}. -- Extract ALL observations from {peer_id} messages, using others as context. -- Contextualize each observation sufficiently (e.g. "Ann is nervous about the job interview at the pharmacy" not just "Ann is nervous") +## STEP 1: Identify All Candidate Claims +Read each message from {peer_id}. List every distinct claim (even if nested). -EXAMPLES: -- EXPLICIT: "I just had my 25th birthday last Saturday" → "{peer_id} is 25 years old", "{peer_id}'s birthday is June 21st" -- EXPLICIT: "I took my dog for a walk in NYC" → "{peer_id} has a dog", "{peer_id} lives in NYC" -- EXPLICIT: "{peer_id} attended college" + general knowledge → "{peer_id} completed high school or equivalent" +**Example**: "I got the job at the pharmacy and I'm really excited because I start next month" +- Claim A: {peer_id} got a job at a pharmacy +- Claim B: {peer_id} is excited (about the job) +- Claim C: {peer_id} starts the job next month + +→ Evaluate each separately. + +## STEP 2: For Each Claim, Verify It's Atomic +Does it contain: +- One subject? (If multiple subjects → split) +- One verb/action? (If multiple actions → split) +- One object? (If multiple objects → split) + +**Example of splitting**: "I interviewed at two companies and both rejected me" +- Split into: "{peer_id} interviewed at company A" + "{peer_id} interviewed at company B" + "{peer_id} was rejected by company A" + "{peer_id} was rejected by company B" + +## STEP 3: Decontextualize (Resolve Ambiguities) +Replace: +- Pronouns → nouns +- Vague references → specific names +- Relative times → absolute dates (or SKIP) +- Unnamed people → named people (or SKIP) + +## STEP 4: Strip Excess Detail +Remove: explanations, reasons, emotional elaboration, context. + +**Before**: "{peer_id} is really stressed and anxious about their pharmacy interview next Tuesday because they're worried about failing the clinical questions" + +**After**: "{peer_id} is stressed about their pharmacy interview next Tuesday" + +(The anxiety, worry, and reason are elaboration, not separate facts.) + +## OUTPUT FORMAT +- **Fact**: [One atomic claim, decontextualized, no elaboration] +- **Source**: [Direct quote from {peer_id}] Messages to analyze: