Class: Ragdoll::ModelResolver
- Inherits:
-
Object
- Object
- Ragdoll::ModelResolver
- Defined in:
- app/services/ragdoll/model_resolver.rb
Overview
Service for resolving models with provider/model parsing and inheritance
Instance Method Summary collapse
-
#initialize(config_service = nil) ⇒ ModelResolver
constructor
A new instance of ModelResolver.
-
#provider_credentials_for_model(model) ⇒ Object
Get provider credentials for a Model object.
-
#resolve_all_models ⇒ Object
Resolve all models for debugging/introspection.
-
#resolve_embedding(content_type = :text) ⇒ Object
Resolve embedding model for content type, returns Model object with metadata.
-
#resolve_for_task(task_type, content_type = :text) ⇒ Object
Resolve model for a task, returns Model object.
Constructor Details
#initialize(config_service = nil) ⇒ ModelResolver
Returns a new instance of ModelResolver.
6 7 8 |
# File 'app/services/ragdoll/model_resolver.rb', line 6 def initialize(config_service = nil) @config_service = config_service || Ragdoll::ConfigurationService.new end |
Instance Method Details
#provider_credentials_for_model(model) ⇒ Object
Get provider credentials for a Model object
38 39 40 41 42 43 44 45 46 47 |
# File 'app/services/ragdoll/model_resolver.rb', line 38 def provider_credentials_for_model(model) provider = model.provider if provider.nil? # Use default provider if none specified provider = @config_service.config.llm_providers[:default_provider] end @config_service.provider_credentials(provider) end |
#resolve_all_models ⇒ Object
Resolve all models for debugging/introspection
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/services/ragdoll/model_resolver.rb', line 50 def resolve_all_models { text_generation: { default: resolve_for_task(:default), summary: resolve_for_task(:summary), keywords: resolve_for_task(:keywords) }, embedding: { text: (:text), image: (:image), audio: (:audio) } } rescue Ragdoll::Core::ConfigurationError => e # Return partial results with error information { error: e., partial: true } end |
#resolve_embedding(content_type = :text) ⇒ Object
Resolve embedding model for content type, returns Model object with metadata
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/services/ragdoll/model_resolver.rb', line 20 def (content_type = :text) = @config_service.config.models[:embedding] model_string = [content_type] raise Ragdoll::Core::ConfigurationError, "No embedding model configured for content type '#{content_type}'" if model_string.nil? model = Ragdoll::Core::Model.new(model_string) # Return object with model and embedding-specific metadata OpenStruct.new( model: model, provider_type: [:provider], max_dimensions: [:max_dimensions], cache_embeddings: [:cache_embeddings] ) end |
#resolve_for_task(task_type, content_type = :text) ⇒ Object
Resolve model for a task, returns Model object
11 12 13 14 15 16 17 |
# File 'app/services/ragdoll/model_resolver.rb', line 11 def resolve_for_task(task_type, content_type = :text) model_string = @config_service.resolve_model(task_type, content_type) raise Ragdoll::Core::ConfigurationError, "No model configured for task '#{task_type}'" if model_string.nil? Ragdoll::Core::Model.new(model_string) end |