Packages
fnord
0.8.79
0.9.40
0.9.39
0.9.38
0.9.37
0.9.36
0.9.35
0.9.34
0.9.33
0.9.32
0.9.31
0.9.30
0.9.29
0.9.28
0.9.27
0.9.26
0.9.25
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.99
0.8.98
0.8.97
0.8.96
0.8.95
0.8.94
0.8.93
0.8.92
0.8.91
0.8.90
0.8.89
0.8.88
0.8.87
0.8.86
0.8.85
0.8.84
0.8.83
0.8.82
0.8.81
0.8.80
0.8.79
0.8.78
0.8.77
0.8.76
0.8.75
0.8.74
0.8.73
0.8.72
0.8.71
0.8.70
0.8.69
0.8.68
0.8.67
0.8.66
0.8.65
0.8.64
0.8.63
0.8.62
0.8.61
0.8.60
0.8.59
0.8.58
0.8.57
0.8.56
0.8.55
0.8.54
0.8.53
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.47
0.8.46
0.8.45
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.1
0.8.0
0.7.24
0.7.23
0.7.22
0.7.21
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.3
0.7.2
0.7.1
0.7.0
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.44
0.4.43
0.4.42
0.4.41
0.4.40
0.4.39
0.4.38
0.4.37
0.4.36
0.4.35
0.4.34
0.4.33
0.4.32
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
AI code archaeology
Current section
Files
Jump to
Current section
Files
lib/ai/model.ex
defmodule AI.Model do
defstruct [
:model,
:context,
:reasoning
]
@type reasoning_level ::
:none
| :minimal
| :low
| :medium
| :high
| :default
@type speed ::
:smart
| :balanced
| :fast
@type t :: %__MODULE__{
model: String.t(),
context: non_neg_integer,
reasoning: reasoning_level
}
@spec new(String.t(), non_neg_integer) :: t
@spec new(String.t(), non_neg_integer, reasoning_level) :: t
def new(model, context, reasoning \\ :medium) do
%AI.Model{
model: model,
context: context,
reasoning: reasoning
}
end
def smart(), do: gpt51(:medium)
def balanced(), do: gpt51(:low)
def fast(), do: gpt41_nano()
def reasoning(level \\ :medium), do: o4_mini(level)
def coding(), do: o4_mini(:medium)
def large_context(), do: gpt41()
def large_context(:smart), do: gpt41()
def large_context(:balanced), do: gpt41_mini()
def large_context(:fast), do: gpt41_nano()
def web_search(), do: gpt_4o_mini_search_preview()
# ----------------------------------------------------------------------------
# OpenAI Models
# ----------------------------------------------------------------------------
def gpt51(reasoning \\ :medium), do: new("gpt-5.1", 400_000, reasoning)
def gpt5_mini(reasoning \\ :medium), do: new("gpt-5-mini", 400_000, reasoning)
def gpt5_nano(reasoning \\ :medium), do: new("gpt-5-nano", 400_000, reasoning)
def gpt41(), do: new("gpt-4.1", 1_000_000, :none)
def gpt41_mini(), do: new("gpt-4.1-mini", 1_000_000, :none)
def gpt41_nano(), do: new("gpt-4.1-nano", 1_000_000, :none)
def o4_mini(reasoning \\ :medium), do: new("o4-mini", 200_000, reasoning)
def gpt_4o_mini_search_preview(), do: new("gpt-4o-mini-search-preview", 128_000, :none)
end