Packages
nous
0.14.0
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/session/config.ex
defmodule Nous.Session.Config do
@moduledoc """
Configuration for managed agent sessions.
Provides turn limits, token budgets, and compaction thresholds
for higher-level session management (e.g. `Nous.AgentServer` or
custom GenServers). This is separate from `Agent.Context.max_iterations`
which controls the inner agent loop.
## Usage
config = %Nous.Session.Config{
max_turns: 20,
max_budget_tokens: 500_000,
compact_after_turns: 15
}
case Nous.Session.Guardrails.check_limits(config, turn_count, in_tokens, out_tokens) do
:ok -> proceed_with_turn()
{:error, :max_turns_reached} -> stop_session()
{:error, :max_budget_reached} -> stop_session()
end
"""
defstruct max_turns: 10,
max_budget_tokens: 200_000,
compact_after_turns: 20
@type t :: %__MODULE__{
max_turns: pos_integer(),
max_budget_tokens: pos_integer(),
compact_after_turns: pos_integer()
}
@doc """
Creates a config from a keyword list.
## Examples
config = Nous.Session.Config.new(max_turns: 50, max_budget_tokens: 1_000_000)
"""
@spec new(keyword()) :: t()
def new(opts \\ []) do
struct(__MODULE__, opts)
end
end