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
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
|
| 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.
|
| 64 |
-
"
|
| 65 |
-
"
|
| 66 |
-
"
|
|
|
|
|
|
|
|
|
|
| 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{
|
| 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>
|
| 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.
|
| 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")
|