Skip to content

Commit ea31ae9

Browse files
abossardCopilot
andcommitted
Single model config: remove model arg from all action functions
Model is configured ONCE via configure_dspy() at notebook startup. Action functions (run_baseline, run_optimization, etc.) use the already-configured LM. No more threading issues from widget callbacks. Fixed broken prompt_workshop() calls (missing commas from regex cleanup). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent b4d6b1b commit ea31ae9

10 files changed

Lines changed: 236 additions & 431 deletions

notebooks/01_evaluation_and_tuning.ipynb

Lines changed: 122 additions & 132 deletions
Large diffs are not rendered by default.

notebooks/02_optimization.ipynb

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,14 @@
7171
"outputs": [],
7272
"source": [
7373
"from dspy_tasks.visualize import prompt_workshop\n",
74-
"import ipywidgets as widgets\n",
7574
"\n",
7675
"# Dein manueller Versuch — editiere den Prompt!\n",
7776
"manual_workshop = prompt_workshop(\n",
7877
" task_id=\"multihop_qa\",\n",
79-
" model_widget=model_dd,\n",
80-
" default_instructions=\"Read the context carefully and answer the question. Think step by step. If the answer requires combining multiple facts, do so explicitly.\",\n",
78+
" default_instructions=\"Read the context carefully and answer the question. Think step by step.\",\n",
8179
" max_eval=6,\n",
8280
")\n",
83-
"display(manual_workshop)"
81+
"display(manual_workshop)\n"
8482
]
8583
},
8684
{
@@ -123,7 +121,7 @@
123121
" print(f\"⏳ Optimizing {task.name} with {opt_dd.value} on {model_dd.value}...\")\n",
124122
" print(f\" This may take 10-60 seconds...\\n\")\n",
125123
"\n",
126-
" result = run_optimization(\"multihop_qa\", model_dd.value, opt_dd.value, max_eval=8)\n",
124+
" result = run_optimization(\"multihop_qa\", opt_dd.value, max_eval=8)\n",
127125
"\n",
128126
" display_improvement(result.baseline_score, result.optimized_score)\n",
129127
" print(f\"⏱️ Optimization took {result.elapsed_seconds}s | {result.llm_calls} LLM calls\")\n",
@@ -166,10 +164,10 @@
166164
" task = get_task(\"ticket_routing\")\n",
167165
" print(f\"⏳ Comparing optimizers on {task.name}...\\n\")\n",
168166
"\n",
169-
" r_bs = run_optimization(\"ticket_routing\", model_dd.value, \"BootstrapFewShot\", max_eval=8)\n",
167+
" r_bs = run_optimization(\"ticket_routing\", \"BootstrapFewShot\", max_eval=8)\n",
170168
" print(f\"BootstrapFewShot: {r_bs.baseline_score:.0%} → {r_bs.optimized_score:.0%} ({r_bs.elapsed_seconds}s)\")\n",
171169
"\n",
172-
" r_mipro = run_optimization(\"ticket_routing\", model_dd.value, \"MIPROv2\", max_eval=8)\n",
170+
" r_mipro = run_optimization(\"ticket_routing\", \"MIPROv2\", max_eval=8)\n",
173171
" print(f\"MIPROv2: {r_mipro.baseline_score:.0%} → {r_mipro.optimized_score:.0%} ({r_mipro.elapsed_seconds}s)\")\n",
174172
"\n",
175173
" scores = {\n",
@@ -197,7 +195,7 @@
197195
"def on_any_optimize(b):\n",
198196
" with optimize_out:\n",
199197
" optimize_out.clear_output()\n",
200-
" result = run_optimization(task_dd.value, model_dd.value, opt_dd.value, max_eval=8)\n",
198+
" result = run_optimization(task_dd.value, opt_dd.value, max_eval=8)\n",
201199
" display_improvement(result.baseline_score, result.optimized_score)\n",
202200
" display_prompt_diff(result.prompt_before, result.prompt_after)\n",
203201
"\n",
@@ -258,4 +256,4 @@
258256
},
259257
"nbformat": 4,
260258
"nbformat_minor": 4
261-
}
259+
}

notebooks/03_domain_tuning.ipynb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@
7474
"diagram_compare(\n",
7575
" left={\"title\": \"Generischer Prompt\", \"items\": [\"Keine Domain-Daten\", \"Gemietetes Modell\", \"Ergebnis: Mittelmässig\"], \"icon\": \"📝\", \"color\": \"#a4262c\"},\n",
7676
" right={\"title\": \"Getuned mit deinen Daten\", \"items\": [\"Echte Tickets als Training\", \"Gleiches Modell\", \"Ergebnis: Deutlich besser! 🎯\"], \"icon\": \"📊\", \"color\": \"#107c10\"},\n",
77-
" title=\"Vorher vs. Nachher: Deine Daten machen den Unterschied\",\n",
78-
")\n"
77+
" title=\"Vorher vs. Nachher: Deine Daten machen den Unterschied\")\n"
7978
]
8079
},
8180
{
@@ -95,7 +94,7 @@
9594
" out.clear_output()\n",
9695
" print(f\"⏳ Running ticket routing: generic vs. domain-tuned on {model_dd.value}...\")\n",
9796
"\n",
98-
" result = run_optimization(\"ticket_routing\", model_dd.value, \"BootstrapFewShot\", max_eval=10)\n",
97+
" result = run_optimization(\"ticket_routing\", \"BootstrapFewShot\", max_eval=10)\n",
9998
"\n",
10099
" display_improvement(result.baseline_score, result.optimized_score)\n",
101100
" display_prompt_diff(result.prompt_before, result.prompt_after,\n",
@@ -164,7 +163,7 @@
164163
"def on_run_extra(b):\n",
165164
" with run_out:\n",
166165
" run_out.clear_output()\n",
167-
" result = run_optimization(task_dd.value, model_dd.value, max_eval=8)\n",
166+
" result = run_optimization(task_dd.value, max_eval=8)\n",
168167
" display_improvement(result.baseline_score, result.optimized_score)\n",
169168
" display_results_table(result.individual_scores if hasattr(result, 'individual_scores') else [])\n",
170169
"\n",
@@ -207,4 +206,4 @@
207206
},
208207
"nbformat": 4,
209208
"nbformat_minor": 4
210-
}
209+
}

notebooks/04_agents.ipynb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
" with out:\n",
103103
" out.clear_output()\n",
104104
" print(f\"⏳ Running Calculator Agent on {model_dd.value}...\")\n",
105-
" result = run_baseline(\"calculator_agent\", model_dd.value, max_eval=5)\n",
105+
" result = run_baseline(\"calculator_agent\", max_eval=5)\n",
106106
" display_score(\"Calculator Agent\", result.score)\n",
107107
" display_results_table(result.individual_scores)\n",
108108
"\n",
@@ -133,7 +133,7 @@
133133
" out2.clear_output()\n",
134134
" print(f\"⏳ Running Search Agent on {model_dd.value}...\")\n",
135135
" print(\" The agent will search your ticket database and synthesize answers...\\n\")\n",
136-
" result = run_baseline(\"search_agent\", model_dd.value, max_eval=5)\n",
136+
" result = run_baseline(\"search_agent\", max_eval=5)\n",
137137
" display_score(\"Search Agent\", result.score)\n",
138138
" display_results_table(result.individual_scores)\n",
139139
"\n",
@@ -172,7 +172,7 @@
172172
" print(f\"⏳ Optimizing {task.name} on {model_dd.value}...\")\n",
173173
" print(f\" Using {opt_dd.value} optimizer. This may take a minute...\\n\")\n",
174174
"\n",
175-
" result = run_optimization(task_dd.value, model_dd.value, opt_dd.value, max_eval=5)\n",
175+
" result = run_optimization(task_dd.value, opt_dd.value, max_eval=5)\n",
176176
"\n",
177177
" display_improvement(result.baseline_score, result.optimized_score)\n",
178178
" display_prompt_diff(result.prompt_before, result.prompt_after,\n",
@@ -227,4 +227,4 @@
227227
},
228228
"nbformat": 4,
229229
"nbformat_minor": 4
230-
}
230+
}

notebooks/05_full_picture.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
"\n",
8989
" for model in MODELS:\n",
9090
" print(f\" ⏳ {task.name} on {model.split('/')[-1]}...\", end=\" \")\n",
91-
" result = run_baseline(task_id, model, max_eval=5)\n",
91+
" result = run_baseline(task_id, max_eval=5)\n",
9292
" row.append(result.score)\n",
9393
" print(f\"{result.score:.0%}\")\n",
9494
"\n",
@@ -355,4 +355,4 @@
355355
},
356356
"nbformat": 4,
357357
"nbformat_minor": 4
358-
}
358+
}

notebooks/appendix_a_grokking_simplicity.ipynb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@
224224
" with out:\n",
225225
" out.clear_output()\n",
226226
" print(f\"⏳ Running sentiment task on {model_dd.value}...\")\n",
227-
" result = run_baseline(\"sentiment\", model_dd.value, max_eval=10)\n",
227+
" result = run_baseline(\"sentiment\", max_eval=10)\n",
228228
" display_score(\"Baseline Score\", result.score)\n",
229229
" print(f\"⏱️ {result.elapsed_seconds}s | {result.llm_calls} LLM calls\")\n",
230230
" display_results_table(result.individual_scores)\n",
@@ -281,7 +281,7 @@
281281
" out2.clear_output()\n",
282282
" task = get_task(task_dd.value)\n",
283283
" print(f\"⏳ Running {task.name} on {model_dd.value}...\")\n",
284-
" result = run_baseline(task_dd.value, model_dd.value, max_eval=8)\n",
284+
" result = run_baseline(task_dd.value, max_eval=8)\n",
285285
" display_score(task.name, result.score)\n",
286286
" print(f\"⏱️ {result.elapsed_seconds}s | 💡 {task.teaching_point}\")\n",
287287
" display_results_table(result.individual_scores[:5])\n",
@@ -312,8 +312,7 @@
312312
"from dspy_tasks.data import ClassifySentiment\n",
313313
"import dspy\n",
314314
"\n",
315-
"lm = configure_dspy(model_dd.value)\n",
316-
"\n",
315+
"lm = \n",
317316
"tricky_reviews = [\n",
318317
" (\"Super, schon wieder ein Produkt das nach einer Woche kaputt geht. Genau was ich brauchte.\", \"negative\"),\n",
319318
" (\"Die Kamera ist ok, aber für den Preis hätte ich mehr erwartet.\", \"neutral\"),\n",
@@ -470,4 +469,4 @@
470469
},
471470
"nbformat": 4,
472471
"nbformat_minor": 4
473-
}
472+
}

notebooks/appendix_b_deep_modules.ipynb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@
8585
"metadata": {},
8686
"outputs": [],
8787
"source": [
88-
"configure_dspy(model=model_dd.value)\n",
8988
"\n",
9089
"# SHALLOW: Just predict\n",
9190
"shallow = dspy.Predict(TranslateEnDe)\n",
@@ -167,7 +166,6 @@
167166
" with out:\n",
168167
" out.clear_output()\n",
169168
" task = get_task(task_dd.value)\n",
170-
" configure_dspy(model=model_dd.value)\n",
171169
" if module_dd.value == \"ChainOfThought\":\n",
172170
" module = dspy.ChainOfThought(task.signature_class)\n",
173171
" else:\n",
@@ -213,4 +211,4 @@
213211
},
214212
"nbformat": 4,
215213
"nbformat_minor": 4
216-
}
214+
}

0 commit comments

Comments
 (0)