owenisas commited on
Commit
b7a2722
·
verified ·
1 Parent(s): 2816586

Goal-binding default prompt + temp 0.2 (9/9 traps now catch); think-split in Trap-It-Yourself; accurate judge keywords; honest context claim

Browse files
Files changed (2) hide show
  1. README.md +1 -1
  2. app.py +16 -12
README.md CHANGED
@@ -66,7 +66,7 @@ language-parsing traps.
66
  | Base | [`owenisas/nemotron-3-nano-reasoning`](https://huggingface.co/owenisas/nemotron-3-nano-reasoning) (merged) |
67
  | Architecture | Nemotron-H hybrid **MoE**, ChatML chat template |
68
  | Size | `model-Q8_0.gguf`, ~31.6B params (**under the 32B cap**) |
69
- | Context | up to 1,048,576 tokens |
70
  | Runtime | official `llama.cpp` `llama-server` (release `b9360`) on ZeroGPU |
71
 
72
  Because it's a Mixture-of-Experts model, only a small slice of the 31.6B parameters
 
66
  | Base | [`owenisas/nemotron-3-nano-reasoning`](https://huggingface.co/owenisas/nemotron-3-nano-reasoning) (merged) |
67
  | Architecture | Nemotron-H hybrid **MoE**, ChatML chat template |
68
  | Size | `model-Q8_0.gguf`, ~31.6B params (**under the 32B cap**) |
69
+ | Context (this Space) | 2,048 tokens (`n_ctx`); the GGUF reports a larger architectural max, but the Space serves 2K for fast, memory-safe startup |
70
  | Runtime | official `llama.cpp` `llama-server` (release `b9360`) on ZeroGPU |
71
 
72
  Because it's a Mixture-of-Experts model, only a small slice of the 31.6B parameters
app.py CHANGED
@@ -60,10 +60,13 @@ MODEL_ERROR: str | None = None
60
  MODEL_SETTINGS: dict[str, Any] = {}
61
 
62
  DEFAULT_SYSTEM = (
63
- "You are First-Principle AI, a small reasoning model. Reason briefly a few "
64
- "sentences at most and watch for hidden assumptions, false premises, "
65
- "misleading patterns, and familiar riddles that have been altered. Then end "
66
- "with a clear final answer that names the trap in one line."
 
 
 
67
  )
68
  BLINDSPOT_SYSTEM = (
69
  "You are First-Principle AI acting as a blind-spot checker. The user describes "
@@ -405,8 +408,8 @@ TRAPS: list[dict[str, Any]] = [
405
  "prompt": "I want to wash my car at a car wash that is 50 meters away. Should I walk there or drive there?",
406
  "why": "The car is the thing being washed, so it has to be AT the wash. The short distance is a decoy that nudges models toward 'just walk'.",
407
  "wrong": "Walk — it's only 50 meters.",
408
- "catch": ["drive", "bring the car", "take the car", "car must", "car needs to be", "car has to be", "the car itself", "need the car", "car to the wash"],
409
- "miss": ["just walk", "you should walk", "better to walk", "i'd walk", "recommend walking"],
410
  },
411
  {
412
  "id": "ev",
@@ -416,8 +419,8 @@ TRAPS: list[dict[str, Any]] = [
416
  "prompt": "My electric car's battery is almost empty and the charging station is 60 meters away. Should I walk to the charger or drive there?",
417
  "why": "You can only charge the car if the car is at the charger. Walking solves nothing — the object that must move is the car.",
418
  "wrong": "Walk, the charger is close.",
419
- "catch": ["drive", "bring the car", "take the car", "car must", "car needs to be", "car has to be", "the car itself", "need the car", "car to the charger"],
420
- "miss": ["just walk", "you should walk", "better to walk", "i'd walk", "recommend walking"],
421
  },
422
  {
423
  "id": "feathers",
@@ -460,7 +463,7 @@ TRAPS: list[dict[str, Any]] = [
460
  "prompt": "A plane crashes exactly on the border between the United States and Canada. Where should the survivors be buried?",
461
  "why": "You don't bury survivors — they're alive. The question smuggles in a false premise behind a geography distraction.",
462
  "wrong": "On the border / split between countries.",
463
- "catch": ["don't bury", "do not bury", "not buried", "aren't buried", "are alive", "still alive", "survivors are not", "you don't bury", "no one is buried", "survivors live"],
464
  "miss": ["buried on the border", "should be buried in", "bury them in", "buried in canada", "buried in the united states"],
465
  },
466
  {
@@ -794,8 +797,9 @@ def ask_own(
794
  _metrics_markdown(),
795
  )
796
  return
 
797
  label = "🔎 Blind-spot check" if mode == "Blind-Spot Check" else "🧠 First-Principle AI"
798
- yield f"**{label}:**\n\n{text}", _metrics_markdown(meta)
799
 
800
 
801
  # ---------------------------------------------------------------------------
@@ -910,7 +914,7 @@ HERO = """
910
  <div class="fp-badges">
911
  <span class="fp-badge"><strong>~31.6B</strong> Q8 MoE · Nemotron-H</span>
912
  <span class="fp-badge"><strong>Runs local</strong> · llama.cpp on ZeroGPU</span>
913
- <span class="fp-badge"><strong>1M</strong> context</span>
914
  <span class="fp-badge">🌲 Thousand Token Wood</span>
915
  </div>
916
  </div>
@@ -1007,7 +1011,7 @@ with gr.Blocks(title="First-Principle AI · Gotcha Arena", fill_width=True) as d
1007
  )
1008
  with gr.Row():
1009
  max_tokens = gr.Slider(64, 2048, value=1024, step=64, label="Max tokens")
1010
- temperature = gr.Slider(0.0, 1.5, value=0.4, step=0.05, label="Temperature")
1011
  with gr.Row():
1012
  top_p = gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p")
1013
  repeat_penalty = gr.Slider(1.0, 1.4, value=1.08, step=0.01, label="Repeat penalty")
 
60
  MODEL_SETTINGS: dict[str, Any] = {}
61
 
62
  DEFAULT_SYSTEM = (
63
+ "You are First-Principle AI, a small reasoning model. For every question, first "
64
+ "identify the goal and the physical object or person that must be PRESENT at the "
65
+ "destination for the goal to succeed. If the goal needs a specific object (e.g. a "
66
+ "vehicle that must be washed, charged, fueled, or repaired) to be at the location, "
67
+ "then that object has to travel there and the distance is irrelevant. Also watch "
68
+ "for false premises, swapped names, and altered classic riddles. Think briefly, "
69
+ "then give a clear final answer."
70
  )
71
  BLINDSPOT_SYSTEM = (
72
  "You are First-Principle AI acting as a blind-spot checker. The user describes "
 
408
  "prompt": "I want to wash my car at a car wash that is 50 meters away. Should I walk there or drive there?",
409
  "why": "The car is the thing being washed, so it has to be AT the wash. The short distance is a decoy that nudges models toward 'just walk'.",
410
  "wrong": "Walk — it's only 50 meters.",
411
+ "catch": ["drive", "driving", "drives", "bring the car", "take the car", "car must", "car needs to be", "car has to be", "the car itself", "need the car", "car to the wash", "car has to go", "car needs to go"],
412
+ "miss": ["just walk", "you should walk", "better to walk", "i'd walk", "recommend walking", "walking introduces", "walk over", "walk there", "walking is", "proximity matters"],
413
  },
414
  {
415
  "id": "ev",
 
419
  "prompt": "My electric car's battery is almost empty and the charging station is 60 meters away. Should I walk to the charger or drive there?",
420
  "why": "You can only charge the car if the car is at the charger. Walking solves nothing — the object that must move is the car.",
421
  "wrong": "Walk, the charger is close.",
422
+ "catch": ["drive", "driving", "drives", "bring the car", "take the car", "car must", "car needs to be", "car has to be", "the car itself", "need the car", "car to the charger", "car has to go", "car needs to go"],
423
+ "miss": ["just walk", "you should walk", "better to walk", "i'd walk", "recommend walking", "walk to the charger", "walk over", "walk there", "walking"],
424
  },
425
  {
426
  "id": "feathers",
 
463
  "prompt": "A plane crashes exactly on the border between the United States and Canada. Where should the survivors be buried?",
464
  "why": "You don't bury survivors — they're alive. The question smuggles in a false premise behind a geography distraction.",
465
  "wrong": "On the border / split between countries.",
466
+ "catch": ["don't bury", "do not bury", "not buried", "aren't buried", "are alive", "still alive", "survivors are not", "you don't bury", "no one is buried", "survivors live", "living people", "are living", "do not need to be buried", "don't need to be buried", "not need to be buried", "no need to bury", "not dead", "you don't bury survivors"],
467
  "miss": ["buried on the border", "should be buried in", "bury them in", "buried in canada", "buried in the united states"],
468
  },
469
  {
 
797
  _metrics_markdown(),
798
  )
799
  return
800
+ reasoning, answer = _split_think(text)
801
  label = "🔎 Blind-spot check" if mode == "Blind-Spot Check" else "🧠 First-Principle AI"
802
+ yield f"**{label}:**\n\n{_render_reasoning(reasoning, answer)}", _metrics_markdown(meta)
803
 
804
 
805
  # ---------------------------------------------------------------------------
 
914
  <div class="fp-badges">
915
  <span class="fp-badge"><strong>~31.6B</strong> Q8 MoE · Nemotron-H</span>
916
  <span class="fp-badge"><strong>Runs local</strong> · llama.cpp on ZeroGPU</span>
917
+ <span class="fp-badge"><strong>Reasons</strong> from first principles</span>
918
  <span class="fp-badge">🌲 Thousand Token Wood</span>
919
  </div>
920
  </div>
 
1011
  )
1012
  with gr.Row():
1013
  max_tokens = gr.Slider(64, 2048, value=1024, step=64, label="Max tokens")
1014
+ temperature = gr.Slider(0.0, 1.5, value=0.2, step=0.05, label="Temperature")
1015
  with gr.Row():
1016
  top_p = gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p")
1017
  repeat_penalty = gr.Slider(1.0, 1.4, value=1.08, step=0.01, label="Repeat penalty")