lmjtfy.git / packages / ask / README.md

Chapter 7: ask, the eight questions Jev gets about every question

Remember the trick from the prologue: Jev cannot write, it can only judge questions whose answers are already written down. So before anyone writes anything, this site asks Jev about the question you typed. Eight questions, all in one request, all with their answers spelled out. These are they, word for word as Jev receives them, with your input as the state:

FactTypeAsked
answerableNoul"Is the input a question you can answer with your types?" Yes: a yes-or-no question, a question with a best answer among options, or a question of degree. No: a greeting, a statement, a command, or a request to write, explain, summarise or do something.
kindChoice"What kind of question is the input?" A yes-or-no, a pick, a how-much, or a how-likely. Jev's probability for each becomes four facts, one per reading.
severalNoul"Does the input ask more than one separate question?"
yesNoul"Answer the question in the input." Yes means the answer is yes.
degreeScore"Answer the question in the input as a degree", from "Not at all" through "Slightly", "Moderately" and "Very" to "Extremely".
scaleNoul"Would the input be answered badly on a general scale from 'Not at all' to 'Extremely'?" Yes when what it asks about has its own units, ranges or named levels.
chanceNoul"Is the thing the input asks the chances of so?" Its probability is the answer to a how-likely question.
fitNoul"Is the input fit to show to strangers on a public page?" No for a slur, harassment, a threat, sexual content, or a private person's name or details.

Look at what that buys. If you asked a yes-or-no question, yes already is the answer: Jev answered it while it was working out what kind of question it was. Same for a how-much on a general scale (degree) and for a how-likely (chance). The LLM is never called for those. Chapter 6's rules decide which of these answers to show.

Aside. Why does answerable say "your types"? Because Jev answers in exactly three shapes: a Noul (a probability of yes), a Choice (a probability for each option), a Score (a probability for each level). "Can you answer this with your types" is the most honest way to ask "is this a question at all?"

Try it. Start typing a question at https://lmjtfy.fun and stop for a moment. The line under the box is these eight questions, asked as you type ("Jev can judge this · a yes or no"). By the time you press Enter, the answer is usually already in.

The questions' wording is behaviour: it decides which rule fires. It is measured by lmjtfy-eval facts (chapter 14) against 25 inputs: 25 of 25 on 2026-10-02, at about 920 tokens and $0.00004 a request.

The record each call leaves

The page shows every call, with the exact bytes that crossed the wire, so this package also keeps a careful record of each one:

  • Wanted says what to ask about an input: the facts the rules want, or the questions the LLM wrote (llm::Draft). Either way it is one request, however many questions.
  • wanted builds that request as a Prepared, which exposes the exact request body (so the page can show it before the response exists), its questions in order, and the call's worst-case cost (so a budget can hold it).
  • learned turns the answer to a fact's question into the fact's value. The four readings share one question (question_id); readings is the kinds Jev's answer supports: the likeliest, and the runner-up when it has at least ALSO (30%).
  • check says whether Jev's protocol takes a question the LLM wrote.
  • send runs a request on a jev_client::Client and returns an Outcome: the typed answers (Judged, one per question), the raw response body, attempts, usage, the request id and the time taken, or the error and what to count it as.
  • read gives the same Outcome from a response body kept from an earlier send of the same request (chapter 9). It checks the body against the questions exactly as send does, and marks the outcome Sent::Before.
  • clean, is_yes, is_sure, likelihood and DEGREES are the small rules the page prints by: what counts as yes (0.5), what counts as sure (0.7, below which "Yes." becomes "Yes?"), and the words for a probability.

In this folder

PathWhat
src/The questions, the request, and the record.
Cargo.tomlThe crate: jev-protocol and jev-client from jevcrates, and rules and llm.

← Previous: Chapter 6½, rules/src/ · Up: packages · Next: Chapter 7½, ask/src/ →