Packages

Experimental research framework for running AI benchmarks at scale. Provides orchestration, streaming processing with Flow/GenStage, and statistical analysis.

Current section

Files

Jump to
crucible_harness lib research_harness errors classifier.ex
Raw

lib/research_harness/errors/classifier.ex

defmodule CrucibleHarness.Errors.Classifier do
@moduledoc false
@default_retryable [:timeout, :connection_refused, :rate_limited, :temporarily_unavailable]
@default_permanent [:invalid_query, :authentication_failed, :bad_request]
@default_retryable_http [429, 500, 502, 503, 504]
@default_permanent_http [400, 401, 403, 404, 422]
def retryable?(error, config \\ %{})
def retryable?({:http_status, status}, config) when is_integer(status) do
retryable_http = Map.get(config, :retryable_http_statuses, @default_retryable_http)
permanent_http = Map.get(config, :permanent_http_statuses, @default_permanent_http)
cond do
status in permanent_http -> false
status in retryable_http -> true
status >= 500 -> true
true -> false
end
end
def retryable?(error, config) do
retryable_errors = Map.get(config, :retryable_errors, @default_retryable)
permanent_errors = Map.get(config, :permanent_errors, @default_permanent)
cond do
error in permanent_errors -> false
error in retryable_errors -> true
true -> false
end
end
end