Skip to content

Support SubQ Snap and Liquid d1-ultra, and long states for hosted models - #126

Open
audreyt wants to merge 1 commit into
Jigsaw-Code:mainfrom
audreyt:decision-index-hosts
Open

audreyt wants to merge 1 commit into
Jigsaw-Code:mainfrom
audreyt:decision-index-hosts

Conversation

@audreyt

@audreyt audreyt commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

SubQ Snap and Liquid d1-ultra serve the same POST /v1/systemone request shape as the hosts already listed, so the client from #120 reaches them with configuration:

export DECISION_ENDPOINT_TYPE="systemone"
export DECISION_MODEL="subq-snap-1.1"            # or "d1-ultra"
export DECISION_MODEL_HOST="https://api.subq.ai" # or "https://api.liquid.ai/decisions/v1/systemone"
export DECISION_MODEL_API_KEY="<key>"
export DECISION_MAX_BODY_BYTES="1000000"         # for long states on Snap
  • Lists both in the README's tested-hosts table and adds their hosts to the endpoint_url test.
  • Tests that a score answer still parses with the extra fields these hosts return (legend, and usage.cost from Liquid).
  • Adds DECISION_MAX_BODY_BYTES (default 65536, Ollama's limit, so nothing changes by default). Every request carries the whole state, so the fixed 64 KiB limit ruled out long states even on hosts that read them.

Live checks (2026-10-27)

  • Both accept up to 128 questions per request (129 is a 422), so the default DECISION_MAX_QUESTIONS=64 works.
  • On a small labeled set through model_factory.get_decision_model(), both got all six topic assignments (including two multi-topic statements and one Other), both equivalence clusters, the topic-home pick, and both approval votes right. python -m src.get_bridging_scores ran end to end on each with no Gemini key.
  • Autorater rubric on 8 labeled opinion assignments: d1-ultra 7/8, Snap 5/8, with Snap's misses in both directions. The sample is small, so the rubric is unchanged.
  • Cost: each host counts a shared state once per request. Over the same 11.7K-token state, 1 question vs 26 questions came to 11,695 vs 13,981 input tokens on Snap and 11,778 vs 13,935 on d1-ultra ($0.00049 vs $0.00059 by Liquid's own cost field). Many questions about one state are nearly free after the first.

A long state: the vTaiwan UberX conversation

The 2015 vTaiwan UberX conversation on Pol.is (open data: 1,846 participants, 48,389 votes, 101 published statements, opinion groups A and B) has real answers to check against.

Who said what in a draft summary. 13 summary sentences, each paraphrasing one statement and attributing it to the groups, were written for this check in a correct and a misattributed version (26). The real group votes decide which are right.

Check Snap d1-ultra
Decision only: 26 questions over the whole conversation (all 101 statements with each group's votes, ~14.5K tokens), one request 24/26 26/26
Extraction then decision: Mercury Decide marks the statement each sentence describes (the right one for 26/26), and the decision model judges the attribution against that statement's votes 26/26 26/26

Extraction made every verdict traceable to the statement it rests on. Mercury's extract questions are billed per question over the whole state (308K input tokens for these 26), unlike decision questions.

Simulated jury. With 12 statements held out, the jury predicted 128 real votes on them by participants who voted on at least 10 others. Always guessing "agree" scores 87/128. Each participant's group majority on the held-out statement, an oracle, scores 103/128.

State Requests Input tokens Snap d1-ultra
Each participant's own votes 128 ~2.9K each 92 94
Every other statement with each group's votes, plus the participant's votes 128 ~10.5K each 94 94
Every other statement with each group's votes, asked how each group votes on each held-out statement (24 questions) 1 12.8K 93 85-86
The same plus all 118 asked-about participants' votes 1 41.5K 84 504 timeout
The whole conversation: every statement and all 1,846 participants' votes 1 162K 73 rejected (32,768-token limit per question)

Where Snap did well:

  • It is the one tested host that read the whole conversation with every vote: 162K tokens in one 2.8 s request. d1-ultra rejects any question over 32,768 tokens.
  • One request about the shared state matched 128 per-participant requests at about 1/100 of the tokens. It caught four of the five held-out group disagreements, giving P(agree) of 0.02-0.04 for B76, B82 and B83 and 0.30 for B77.
  • Repeated runs returned the same probabilities. d1-ultra's moved by a point between runs.

Where d1-ultra did well:

  • The autorater rubric: 7/8, against Snap's 5/8 (above).
  • The decision-only who-said-what check: 26/26, where Snap accepted two swapped attributions (24/26). With extraction first, both scored 26/26.
  • Per-participant jury requests: 94/128 on both per-participant states, against Snap's 92 and 94.

For both models, packing many participants' rows into one state, so that each question needs a different slice of it, lost accuracy as the state grew.

Both serve the same /v1/systemone request shape, so they only need listing
and a test that their extra answer fields (score legend, usage cost) parse.
DECISION_MAX_BODY_BYTES lifts Ollama's 64 KiB request limit for hosts that
read long states, such as Snap's 384K-token context.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant