defmodule AgentSea.Evaluate.Metric do @moduledoc """ A scoring metric. Given an example (the `:output` under test, plus optional `:input`/`:expected`), it returns a score in `[0, 1]` and a pass/fail. Built-in metrics: `ExactMatch`, `Contains`, and `LLMJudge` (provider-backed). """ @type example :: %{ optional(:id) => term(), optional(:input) => String.t(), optional(:expected) => term(), required(:output) => String.t() } @type result :: %{score: float(), passed: boolean()} @callback name() :: String.t() @callback evaluate(example(), opts :: keyword()) :: result() end