Aludel.RedTeam.Generation (aludel v0.7.0)

Copy Markdown View Source

The review boundary returned by Aludel.RedTeam.generate/2.

A generation records validated candidates, sanitized per-category failures, observed usage, and the limits applied to the model calls. Creating this value does not persist dataset entries.

Summary

Types

failure()

@type failure() :: %{
  category: Aludel.RedTeam.Catalog.category(),
  type: :provider_error | :timeout | :invalid_response | :budget_exhausted,
  message: String.t()
}

limits()

@type limits() :: %{
  cases_per_category: pos_integer(),
  max_requests: pos_integer(),
  max_output_tokens: pos_integer(),
  max_total_tokens: pos_integer(),
  max_cost_usd: number(),
  request_timeout_ms: pos_integer(),
  max_target_context_chars: pos_integer(),
  max_response_bytes: pos_integer()
}

provider()

@type provider() :: %{id: String.t(), type: String.t(), model: String.t()}

status()

@type status() :: :completed | :partial_failure | :failed

t()

@type t() :: %Aludel.RedTeam.Generation{
  cases: [Aludel.RedTeam.GeneratedCase.t()],
  checksum: String.t(),
  failures: [failure()],
  generated_at: DateTime.t(),
  id: Ecto.UUID.t(),
  limits: limits(),
  prompt_version: pos_integer(),
  provider: provider(),
  requested_categories: [Aludel.RedTeam.Catalog.category()],
  schema_version: pos_integer(),
  status: status(),
  target_context_checksum: String.t(),
  usage: usage()
}

usage()

@type usage() :: %{
  requests: non_neg_integer(),
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer(),
  total_tokens: non_neg_integer(),
  cost_usd: number()
}