E0033: think_option
E0033 think_option — an unknown or mistyped think() option.
A compile-time error of soma check, the checker of the Soma programming language (soma explain E0033).
The rule
The options map passed to think() accepts only max_tokens, max_rounds, timeout (in milliseconds), tools_allowed and requires; any other key, such as "temperature", is a check error. Soma refuses unknown options at check time because they would otherwise be rejected when the model is called. Remove the option, or for a typed answer use think_json(prompt, map("as", "TypeName")), whose as must name a declared cell type.
A program that triggers it
wrong.cell
cell agent SupportTriage {
face {
signal classify(ticket: String) -> String
}
state triage {
initial: open
open -> classified
}
on classify(ticket: String) {
let label = think("Label this support ticket as billing, bug or other: {ticket}",
map("max_tokens", 20, "temperature", 0))
transition(ticket, "classified")
return label
}
}What soma check prints:
$ soma check wrong.cell
error: "temperature" is not a think() option — the options are max_tokens, max_rounds, timeout (ms), tools_allowed and requires; a typed answer is think_json(prompt, map("as", "TypeName"))
--> wrong.cell:11:35
|
11 | map("max_tokens", 20, "temperature", 0))
| ^
= code: E0033
✗ 1 error(s), 0 warning(s).The fix field of soma check --json: the options are max_tokens, max_rounds, timeout (ms), tools_allowed and requires; a typed answer is think_json(prompt, map("as", "TypeName"))
The fix
On line 11, map("max_tokens", 20, "temperature", 0)) becomes map("max_tokens", 20)).
wrong.cell → right.cell
--- wrong.cell
+++ right.cell
@@ -9,5 +9,5 @@
on classify(ticket: String) {
let label = think("Label this support ticket as billing, bug or other: {ticket}",
- map("max_tokens", 20, "temperature", 0))
+ map("max_tokens", 20))
transition(ticket, "classified")
return labelWith the fix, soma check accepts the program:
$ soma check right.cell
✓ All checks passed.