Module: DSPy::LM::UsageFactory
- Extended by:
- T::Sig
- Defined in:
- lib/dspy/lm/usage.rb
Overview
Factory for creating appropriate usage objects
Class Method Summary collapse
Class Method Details
.create(provider, usage_data) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/dspy/lm/usage.rb', line 53 def self.create(provider, usage_data) return nil if usage_data.nil? # If already a Usage struct, return as-is return usage_data if usage_data.is_a?(Usage) # Handle test doubles by converting to hash if usage_data.respond_to?(:to_h) usage_data = usage_data.to_h end # Convert hash to appropriate struct return nil unless usage_data.is_a?(Hash) # Normalize keys to symbols normalized = usage_data.transform_keys(&:to_sym) case provider.to_s.downcase when 'openai' create_openai_usage(normalized) when 'anthropic' create_anthropic_usage(normalized) when 'gemini' create_gemini_usage(normalized) else create_generic_usage(normalized) end end |