ThinkThen

tag options

The command takes QUESTION or @FILE, then LABEL.... Start with its value and exit code.

OptionWhat it does
--threshold TThe bar every label must reach on its own. The default is 0.5. A band is refused.
--label LABEL=DESCRIPTIONA label and what it means. It may repeat, and it replaces the positional labels.
--input FILEReads the evidence from a file instead of standard input.
--planPrints the plan and sends nothing. It needs no key.
--lines, --jsonl, --csv, --tsvSays how a stream of records is framed. Pick at most one.
--field POINTERNames the part of each record to judge, as a JSON Pointer. It may repeat.
--jobs NHow many requests run at once, from 1 to 32. The default is 4. It works on a stream of records, annotate on one document, and relate on one entity set.
--model NAMEThe model the request carries. Name a version to pin a run. The default is jev-1.13.0.
--url BASEThe server's base address. It outranks THINKTHEN_BASE_URL.
--timeout SECONDSHow long one attempt may take. The default is 30.
--max-retries NHow many times a retried status is sent again. A transport failure is never sent again. The default is 3.
--record DIRCalls the backend and saves each exchange in DIR.
--replay DIRAnswers from DIR alone, with no key and no network.
--cache DIRAnswers from DIR when it can and saves new exchanges there.
--no-cacheTurns off the answer cache for one run.
--profile FILEApplies local backend limits and names the calibration profile in use.

More examples

At 0.9, each line gets the one label its description fits.
question="Which labels fit this message?"
labels=(
  --label "bug=Something is broken."
  --label "praise=Says something kind."
  --label "request=Asks for something new."
)

cat <<'EOF' |
The export button crashes the app.
Great support, thank you!
Please add a dark mode.
EOF
thinkthen tag "$question" "${labels[@]}" \
  --batch 1 \
  --lines \
  --threshold 0.9 |
jq .
Output
{
  "input": "The export button crashes the app.",
  "value": [
    "bug"
  ]
}
{
  "input": "Great support, thank you!",
  "value": [
    "praise"
  ]
}
{
  "input": "Please add a dark mode.",
  "value": [
    "request"
  ]
}
exit 0