{
 "what": "A storyboard as a semantic graph: nodes are things, edges carry the meaning. Generated by formats.js v0.1.0 from the storyboard and its cast.",
 "format": "storyboards.sgit.ai/graph/v1",
 "storyboard": "lenses-roles-and-loops",
 "nodes": [
  {
   "id": "storyboard:lenses-roles-and-loops",
   "type": "storyboard",
   "label": "Lenses, roles and loops",
   "subtitle": "How LLMs and agents work: a prompt as a lens, a role as a model with a description, an agent as a loop, tools as requests, no memory, compression, and focused threads. 13 panels.",
   "status": "draft",
   "url": "https://storyboards.sgit.ai/gen-z-developers/lenses-roles-and-loops/"
  },
  {
   "id": "author:gen-z.journalist",
   "type": "author",
   "label": "gen-z.journalist"
  },
  {
   "id": "panel:lenses-roles-and-loops/1",
   "type": "panel",
   "label": "Lenses, roles and loops",
   "n": 1,
   "kind": "cover",
   "text": "Lenses, roles and loops: It stops being magic when you see how it works."
  },
  {
   "id": "character:zara",
   "type": "character",
   "label": "Zara"
  },
  {
   "id": "character:agent",
   "type": "agent",
   "label": "The Agent"
  },
  {
   "id": "character:priya",
   "type": "character",
   "label": "Priya"
  },
  {
   "id": "character:guide",
   "type": "character",
   "label": "The Guide"
  },
  {
   "id": "source:Lenses, roles and loops",
   "type": "source",
   "label": "Lenses, roles and loops"
  },
  {
   "id": "panel:lenses-roles-and-loops/2",
   "type": "panel",
   "label": "One idea, recursion, through five lenses",
   "n": 2,
   "kind": "spectrum",
   "text": "One idea, recursion, through five lenses. Teenager → Musician → Doctor → Football fan → Portuguese"
  },
  {
   "id": "source:Lenses, roles and loops, A prompt is a lens",
   "type": "source",
   "label": "Lenses, roles and loops, A prompt is a lens"
  },
  {
   "id": "panel:lenses-roles-and-loops/3",
   "type": "panel",
   "label": "The wrong lens",
   "n": 3,
   "kind": "scene",
   "text": "The wrong lens. Priya says: “I've always been bad at maths.” The Guide says: “The analogy is the reason someone understands something.”"
  },
  {
   "id": "panel:lenses-roles-and-loops/4",
   "type": "panel",
   "label": "A role is a model with a description",
   "n": 4,
   "kind": "graph",
   "text": "A role is a model with a description."
  },
  {
   "id": "source:Lenses, roles and loops, A role is a model with a description",
   "type": "source",
   "label": "Lenses, roles and loops, A role is a model with a description"
  },
  {
   "id": "panel:lenses-roles-and-loops/5",
   "type": "panel",
   "label": "An agent is a loop with a goal",
   "n": 5,
   "kind": "scene",
   "text": "An agent is a loop with a goal. The Guide says: “Fundamentally the agent is simply a task: do this; then, are we done yet, or do we need to continue?”"
  },
  {
   "id": "source:Lenses, roles and loops, An agent is a loop with a goal",
   "type": "source",
   "label": "Lenses, roles and loops, An agent is a loop with a goal"
  },
  {
   "id": "panel:lenses-roles-and-loops/6",
   "type": "panel",
   "label": "The loop, with one tool call",
   "n": 6,
   "kind": "graph",
   "text": "The loop, with one tool call."
  },
  {
   "id": "source:Lenses, roles and loops, Tools changed everything; Precisely",
   "type": "source",
   "label": "Lenses, roles and loops, Tools changed everything; Precisely"
  },
  {
   "id": "panel:lenses-roles-and-loops/7",
   "type": "panel",
   "label": "What the next request carries",
   "n": 7,
   "kind": "spectrum",
   "text": "What the next request carries. Your question → Model asks → Harness → All of it, resent → The answer"
  },
  {
   "id": "source:Lenses, roles and loops, Tools changed everything",
   "type": "source",
   "label": "Lenses, roles and loops, Tools changed everything"
  },
  {
   "id": "panel:lenses-roles-and-loops/8",
   "type": "panel",
   "label": "From training only, to tools",
   "n": 8,
   "kind": "spectrum",
   "text": "From training only, to tools. Nov 2022 → Mar 2023 → Mid 2023 → Nov 2024 → 2026"
  },
  {
   "id": "panel:lenses-roles-and-loops/9",
   "type": "panel",
   "label": "It remembers nothing",
   "n": 9,
   "kind": "scene",
   "text": "It remembers nothing. Zara says: “So it doesn't remember what I said an hour ago?” The Guide says: “There is no memory.”"
  },
  {
   "id": "source:Lenses, roles and loops, It remembers nothing",
   "type": "source",
   "label": "Lenses, roles and loops, It remembers nothing"
  },
  {
   "id": "setting:night",
   "type": "setting",
   "label": "night"
  },
  {
   "id": "panel:lenses-roles-and-loops/10",
   "type": "panel",
   "label": "Long chats are compressed",
   "n": 10,
   "kind": "evidence",
   "text": "Long chats are compressed. What one summary keeps: the chat 100%, its summary 1.7%"
  },
  {
   "id": "source:Lenses, roles and loops, Long chats are compressed",
   "type": "source",
   "label": "Lenses, roles and loops, Long chats are compressed"
  },
  {
   "id": "panel:lenses-roles-and-loops/11",
   "type": "panel",
   "label": "The newsroom's answer",
   "n": 11,
   "kind": "evidence",
   "text": "The newsroom's answer. “The rules are restored, not remembered.” (Re-anchoring agent behaviour policies (newsroom))"
  },
  {
   "id": "source:Re-anchoring agent behaviour policies (newsroom)",
   "type": "source",
   "label": "Re-anchoring agent behaviour policies (newsroom)"
  },
  {
   "id": "panel:lenses-roles-and-loops/12",
   "type": "panel",
   "label": "Many focused threads, each with a name",
   "n": 12,
   "kind": "graph",
   "text": "Many focused threads, each with a name."
  },
  {
   "id": "source:Lenses, roles and loops, Many focused threads",
   "type": "source",
   "label": "Lenses, roles and loops, Many focused threads"
  },
  {
   "id": "panel:lenses-roles-and-loops/13",
   "type": "panel",
   "label": "Where the memory is",
   "n": 13,
   "kind": "evidence",
   "text": "Where the memory is. “Nothing is remembered by the model between sessions. Everything is remembered by the files.” (Memory is not a spectator sport (newsroom))"
  },
  {
   "id": "character:tomas",
   "type": "character",
   "label": "Tomás"
  },
  {
   "id": "source:Memory is not a spectator sport (newsroom)",
   "type": "source",
   "label": "Memory is not a spectator sport (newsroom)"
  },
  {
   "id": "panel:lenses-roles-and-loops/14",
   "type": "panel",
   "label": "Not magic: a lens, a role, a loop.",
   "n": 14,
   "kind": "punchline",
   "text": "Not magic: a lens, a role, a loop.."
  },
  {
   "id": "source:Lenses, roles and loops, Why this matters",
   "type": "source",
   "label": "Lenses, roles and loops, Why this matters"
  }
 ],
 "edges": [
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "made_by",
   "to": "author:gen-z.journalist"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/1",
   "n": 1
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "features",
   "to": "character:zara",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "features",
   "to": "character:agent",
   "pose": "wave",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "features",
   "to": "character:priya",
   "pose": "stand",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "features",
   "to": "character:guide",
   "pose": "wave",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "quotes",
   "to": "source:Lenses, roles and loops"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/2",
   "n": 2
  },
  {
   "from": "panel:lenses-roles-and-loops/1",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/2"
  },
  {
   "from": "panel:lenses-roles-and-loops/2",
   "type": "features",
   "to": "character:guide",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/2",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, A prompt is a lens"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/3",
   "n": 3
  },
  {
   "from": "panel:lenses-roles-and-loops/2",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/3"
  },
  {
   "from": "panel:lenses-roles-and-loops/3",
   "type": "features",
   "to": "character:priya",
   "pose": "shrug",
   "mood": "worried"
  },
  {
   "from": "character:priya",
   "type": "says",
   "to": "panel:lenses-roles-and-loops/3",
   "text": "I've always been bad at maths."
  },
  {
   "from": "panel:lenses-roles-and-loops/3",
   "type": "features",
   "to": "character:guide",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "character:guide",
   "type": "says",
   "to": "panel:lenses-roles-and-loops/3",
   "text": "The analogy is the reason someone understands something."
  },
  {
   "from": "panel:lenses-roles-and-loops/3",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, A prompt is a lens"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/4",
   "n": 4
  },
  {
   "from": "panel:lenses-roles-and-loops/3",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/4"
  },
  {
   "from": "panel:lenses-roles-and-loops/4",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, A role is a model with a description"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/5",
   "n": 5
  },
  {
   "from": "panel:lenses-roles-and-loops/4",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/5"
  },
  {
   "from": "panel:lenses-roles-and-loops/5",
   "type": "features",
   "to": "character:agent",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "panel:lenses-roles-and-loops/5",
   "type": "features",
   "to": "character:guide",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "character:guide",
   "type": "says",
   "to": "panel:lenses-roles-and-loops/5",
   "text": "Fundamentally the agent is simply a task: do this; then, are we done yet, or do we need to continue?"
  },
  {
   "from": "panel:lenses-roles-and-loops/5",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, An agent is a loop with a goal"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/6",
   "n": 6
  },
  {
   "from": "panel:lenses-roles-and-loops/5",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/6"
  },
  {
   "from": "panel:lenses-roles-and-loops/6",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Tools changed everything; Precisely"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/7",
   "n": 7
  },
  {
   "from": "panel:lenses-roles-and-loops/6",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/7"
  },
  {
   "from": "panel:lenses-roles-and-loops/7",
   "type": "features",
   "to": "character:zara",
   "pose": "point",
   "mood": "determined"
  },
  {
   "from": "panel:lenses-roles-and-loops/7",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Tools changed everything"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/8",
   "n": 8
  },
  {
   "from": "panel:lenses-roles-and-loops/7",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/8"
  },
  {
   "from": "panel:lenses-roles-and-loops/8",
   "type": "features",
   "to": "character:guide",
   "pose": "stand",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/8",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Tools changed everything"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/9",
   "n": 9
  },
  {
   "from": "panel:lenses-roles-and-loops/8",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/9"
  },
  {
   "from": "panel:lenses-roles-and-loops/9",
   "type": "features",
   "to": "character:zara",
   "pose": "think",
   "mood": "surprised"
  },
  {
   "from": "character:zara",
   "type": "says",
   "to": "panel:lenses-roles-and-loops/9",
   "text": "So it doesn't remember what I said an hour ago?"
  },
  {
   "from": "panel:lenses-roles-and-loops/9",
   "type": "features",
   "to": "character:guide",
   "pose": "stand",
   "mood": "happy"
  },
  {
   "from": "character:guide",
   "type": "says",
   "to": "panel:lenses-roles-and-loops/9",
   "text": "There is no memory."
  },
  {
   "from": "panel:lenses-roles-and-loops/9",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, It remembers nothing"
  },
  {
   "from": "panel:lenses-roles-and-loops/9",
   "type": "set_in",
   "to": "setting:night"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/10",
   "n": 10
  },
  {
   "from": "panel:lenses-roles-and-loops/9",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/10"
  },
  {
   "from": "panel:lenses-roles-and-loops/10",
   "type": "features",
   "to": "character:agent",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "panel:lenses-roles-and-loops/10",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Long chats are compressed"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/11",
   "n": 11
  },
  {
   "from": "panel:lenses-roles-and-loops/10",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/11"
  },
  {
   "from": "panel:lenses-roles-and-loops/11",
   "type": "features",
   "to": "character:guide",
   "pose": "point",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/11",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Long chats are compressed"
  },
  {
   "from": "panel:lenses-roles-and-loops/11",
   "type": "cites",
   "to": "source:Re-anchoring agent behaviour policies (newsroom)"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/12",
   "n": 12
  },
  {
   "from": "panel:lenses-roles-and-loops/11",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/12"
  },
  {
   "from": "panel:lenses-roles-and-loops/12",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Many focused threads"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/13",
   "n": 13
  },
  {
   "from": "panel:lenses-roles-and-loops/12",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/13"
  },
  {
   "from": "panel:lenses-roles-and-loops/13",
   "type": "features",
   "to": "character:tomas",
   "pose": "think",
   "mood": "thinking"
  },
  {
   "from": "panel:lenses-roles-and-loops/13",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Long chats are compressed"
  },
  {
   "from": "panel:lenses-roles-and-loops/13",
   "type": "cites",
   "to": "source:Memory is not a spectator sport (newsroom)"
  },
  {
   "from": "storyboard:lenses-roles-and-loops",
   "type": "has_panel",
   "to": "panel:lenses-roles-and-loops/14",
   "n": 14
  },
  {
   "from": "panel:lenses-roles-and-loops/13",
   "type": "next",
   "to": "panel:lenses-roles-and-loops/14"
  },
  {
   "from": "panel:lenses-roles-and-loops/14",
   "type": "features",
   "to": "character:zara",
   "pose": "arms-up",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/14",
   "type": "features",
   "to": "character:priya",
   "pose": "stand",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/14",
   "type": "features",
   "to": "character:agent",
   "pose": "wave",
   "mood": "happy"
  },
  {
   "from": "panel:lenses-roles-and-loops/14",
   "type": "quotes",
   "to": "source:Lenses, roles and loops, Why this matters"
  }
 ]
}
