Skip to contents

The model tier of the SIU mining pipeline, for reports that are not yet in the panel-reviewed corpus (see morie_siu_reports(); reviewed reports never need this – their answers are already verified). Modes mirror the original panel that built the corpus:

Usage

morie_siu_panel(
  html,
  mode = 4L,
  readers = NULL,
  auditors = NULL,
  reader_concurrency = 3L,
  granularity = c("all_fields", "per_field"),
  host = Sys.getenv("OLLAMA_HOST"),
  timeout = 300
)

Arguments

html

Report HTML (character), or a file path, or a drid (numeric) fetched via the bricklayer engine.

mode

Panel mode 1-4 (see above). Default 4.

readers

Optional character vector of reader model names.

auditors

Optional character vector of auditor model names (sequential chain).

reader_concurrency

Max readers running at once (default 3).

granularity

"all_fields" (one pass per reader) or "per_field" (one focused read per schema field). Applies to readers and auditors.

host

Ollama server; default Sys.getenv("OLLAMA_HOST").

timeout

Per-call timeout in seconds (default 300).

Value

A list: fields (named character vector, the auditor's final values), readers (each reader's raw answers), audit_chain (each auditor's verdicts), models (who served).

Details

  • mode = 1 – one reader, no auditor (quick pass)

  • mode = 2 – one reader + one auditor

  • mode = 3 – two readers + one auditor

  • mode = 4 – three readers + one auditor (highest confidence, default)

Explicit readers / auditors vectors override the mode's counts, and extra auditors form a sequential review chain (each sees its predecessors' verdicts). Readers run concurrently up to reader_concurrency (cloud tiers cap requests; local servers cap VRAM); auditors are always sequential. The auditor never starts before every reader has answered.

The context prompt forbids lazy "None" answers: count-type fields must be counted (0 is a real answer only for a witness-official-only case), and every answer needs a verbatim supporting quote. With granularity = "per_field" the model is asked one field at a time and re-reads the whole report for each – slower, but it stops a model skimming once and hallucinating 60 answers.

Examples

if (FALSE) { # morie_llm_probe_ollama()
# Runs when a local Ollama server is reachable (free default).
res <- morie_siu_panel(5161, mode = 2)
res$fields["number_of_subject_officers"]
}