Skip to content

A fact quotes the words that name each side, and the check is mechanical #582

Description

@WaylandYang

#559, #578 and #581 are one failure with three faces: the model attaches a fact to the wrong participant. It writes OpenAI for "former OpenAI personnel", mints a node for "lawsuit against OpenAI", keeps "Vice President of Research" and drops the OpenAI it belonged to. Each got a rule in the prompt and a guard with a word list; the guards measured that the rules get about half compliance, and the word lists only know the shapes we have already seen.

The general fix is to stop asking the model to obey a rule and ask it to quote. A fact already carries quote, the sentence it rests on. Add two fields: subject_span and object_span, the verbatim words in the quote that name each side. Copying is a task models do reliably; deciding whether a description "counts" as the entity is the task they do badly. Then the check is mechanical and needs no model call:

  1. The span must be in the quote. Otherwise the fact is treated as if it had no span (span_not_in_quote signal, so the rate reads per model).
  2. The span must name the entity it is bound to. Same name after normalisation, or the same stem (Acme / Acme Corporation), or an alias. When it does not:
    • the span names another entity declared in this response or known to the base → rebind to that one (span_rebound);
    • the span names nothing → it is a description. A described subject drops the fact (subject_described); a described object keeps the fact and stores the span as the literal value (object_described), as An undeclared name does not become a node #568 does for undeclared objects.

"Former OpenAI personnel" fails check 2 against OpenAI and matches nothing → dropped, with the phrase in the ledger. "companies using OpenAI" likewise. "the company's board" or "he" as a subject span: the same path, with no word list at all. The #579 guard and its list of group nouns retire.

What this does not cover: a fact the model never wrote (#581). That is a recall problem and stays separate.

Cost

Two short fields per fact in the output, no extra call. The prompt loses rule 8d's paragraph and example; the rule becomes one sentence about the spans.

Acceptance

Re-extract openai.txt, removal-of-sam-altman-from-openai.txt and anthropic.txt and compare with the #579 run of the same three (604 entities, 1,288 facts, no OpenAI–Anthropic edge from either sentence):

Related: #559 / #568, #578 / #579, #581, #558 / #565.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions