LemonRouter.SmartRouting (lemon_router v0.1.0)

View Source

Classifies task complexity and routes requests to cheap vs primary models.

Ported from Ironclaw's smart_routing.rs. Complements LemonRouter.ModelSelection which resolves WHICH model from config — this module decides WHETHER to use cheap vs primary based on message complexity.

Summary

Types

complexity()

@type complexity() :: :simple | :moderate | :complex

Functions

classify_message(message)

@spec classify_message(String.t() | nil) :: complexity()

get_stats(stats_pid)

@spec get_stats(pid()) :: map()

record_request(stats_pid, type)

@spec record_request(pid(), :cheap | :primary | :cascade_escalation) :: :ok

route(message, primary_model, cheap_model, config \\ %Config{})

@spec route(
  String.t() | nil,
  String.t(),
  String.t(),
  LemonRouter.SmartRouting.Config.t()
) ::
  {:ok, String.t(), complexity()}

start_stats()

@spec start_stats() :: {:ok, pid()}

uncertain_response?(text)

@spec uncertain_response?(String.t() | nil) :: boolean()