Toolnexus.Classifier.Decision (toolnexus v0.18.1)

Copy Markdown View Source

One answer per question, keyed by the CALLER's keys. The keys are addressing, not content: they are never transmitted, so a key may be a tool, skill or agent name verbatim.

:calibrated reports whether the probabilities are calibrated. systemone reports true; llm reports false unless it derived them from provider token probabilities. A threshold tuned against one backend does not transfer to another.

Summary

Functions

Read a choice answer.

Read a noul answer; a wrong-type or absent key is an error, never a match failure.

Read a score answer.

Types

t()

@type t() :: %Toolnexus.Classifier.Decision{
  answers: %{required(String.t()) => struct()},
  calibrated: boolean(),
  model: String.t() | nil,
  usage: Toolnexus.Classifier.Usage.t()
}

Functions

choice(d, key)

@spec choice(t(), String.t()) ::
  {:ok, Toolnexus.Classifier.ChoiceAnswer.t()} | {:error, String.t()}

Read a choice answer.

noul(d, key)

@spec noul(t(), String.t()) ::
  {:ok, Toolnexus.Classifier.NoulAnswer.t()} | {:error, String.t()}

Read a noul answer; a wrong-type or absent key is an error, never a match failure.

score(d, key)

@spec score(t(), String.t()) ::
  {:ok, Toolnexus.Classifier.ScoreAnswer.t()} | {:error, String.t()}

Read a score answer.