CrucibleDatasets.FieldMapping (CrucibleDatasets v0.5.4)

View Source

Declarative field mapping for dataset loading. Maps to inspect_ai's FieldSpec pattern.

Examples

iex> mapping = FieldMapping.new(
...>   input: "question",
...>   expected: "answer",
...>   metadata: ["difficulty", "subject"]
...> )
iex> record = %{"question" => "Q1", "answer" => "A1", "difficulty" => "easy"}
iex> FieldMapping.apply(mapping, record)
%{id: nil, input: "Q1", expected: "A1", metadata: %{difficulty: "easy"}}

Summary

Functions

Apply field mapping to a raw record.

Create a field mapping specification.

Types

field_spec()

@type field_spec() :: %{
  source: String.t() | atom(),
  target: :input | :expected | :id | {:metadata, atom()},
  transform: (term() -> term()) | nil
}

t()

@type t() :: %CrucibleDatasets.FieldMapping{
  choices: String.t() | atom() | nil,
  expected: String.t() | atom(),
  id: String.t() | atom() | nil,
  input: String.t() | atom(),
  metadata: [String.t() | atom()] | nil,
  transforms: %{required(atom()) => (term() -> term())}
}

Functions

apply(mapping, record)

@spec apply(t(), map()) :: map()

Apply field mapping to a raw record.

Examples

iex> mapping = FieldMapping.new(input: "question", expected: "answer")
iex> record = %{"question" => "What is 2+2?", "answer" => "4"}
iex> FieldMapping.apply(mapping, record)
%{id: nil, input: "What is 2+2?", expected: "4", metadata: %{}}

new(opts \\ [])

@spec new(keyword()) :: t()

Create a field mapping specification.

Options

  • :input - Source field for input (default: :input)
  • :expected - Source field for expected output (default: :expected)
  • :id - Source field for item ID (default: :id)
  • :choices - Source field for multiple choice options (default: nil)
  • :metadata - List of fields to include in metadata (default: nil)
  • :transforms - Map of field transforms (default: %{})

Examples

iex> FieldMapping.new(
...>   input: "question",
...>   expected: "answer",
...>   metadata: ["difficulty", "subject"]
...> )