Class: Ace::LLM::Molecules::ModelLimitResolver
- Inherits:
-
Object
- Object
- Ace::LLM::Molecules::ModelLimitResolver
- Defined in:
- lib/ace/llm/molecules/model_limit_resolver.rb
Overview
Resolves model context/output limits against the expanded concrete target.
Defined Under Namespace
Classes: ResolveResult
Constant Summary collapse
- DEFAULT_CONTEXT_LIMIT =
200_000
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(registry: nil, parser: nil) ⇒ ModelLimitResolver
constructor
A new instance of ModelLimitResolver.
- #resolve(target) ⇒ Object
Constructor Details
#initialize(registry: nil, parser: nil) ⇒ ModelLimitResolver
Returns a new instance of ModelLimitResolver.
34 35 36 37 |
# File 'lib/ace/llm/molecules/model_limit_resolver.rb', line 34 def initialize(registry: nil, parser: nil) @registry = registry || ClientRegistry.new @parser = parser || ProviderModelParser.new(registry: @registry) end |
Class Method Details
.resolve(target, **kwargs) ⇒ Object
30 31 32 |
# File 'lib/ace/llm/molecules/model_limit_resolver.rb', line 30 def self.resolve(target, **kwargs) new(**kwargs).resolve(target) end |
Instance Method Details
#resolve(target) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ace/llm/molecules/model_limit_resolver.rb', line 39 def resolve(target) original_target = target.to_s return fallback_result(original_target) if original_target.strip.empty? parsed = @parser.parse(original_target) return fallback_result(original_target) if parsed.invalid? provider_config = @registry.get_provider(parsed.provider) return fallback_result(original_target, provider: parsed.provider, model: parsed.model) unless provider_config limits = Ace::Support::Models::Atoms::ProviderConfigReader.extract_limits(provider_config) default_limits = limits["default"] || {} model_limits = limits.dig("models", parsed.model) || {} merged_limits = default_limits.merge(model_limits) ResolveResult.new( provider: parsed.provider, model: parsed.model, context_limit: merged_limits["context"] || DEFAULT_CONTEXT_LIMIT, output_limit: merged_limits["output"], source: limit_source(default_limits, model_limits), original_target: original_target ) rescue fallback_result(original_target) end |