Module: RailsAiGateway::ModelHelper
- Defined in:
- lib/rails_ai_gateway/model_helper.rb
Overview
Class Method Summary collapse
- .model(name) ⇒ Object
- .models(capabilities: nil, provider: nil) ⇒ Object
- .route_for(model:, query:, capabilities: []) ⇒ Object
Class Method Details
.model(name) ⇒ Object
25 26 27 |
# File 'lib/rails_ai_gateway/model_helper.rb', line 25 def model(name) models.find { |entry| entry[:id] == name.to_s } end |
.models(capabilities: nil, provider: nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/rails_ai_gateway/model_helper.rb', line 7 def models(capabilities: nil, provider: nil) routes = ModelRoute.available.includes(:provider).order(:name, :priority) routes = routes.where(provider_id: provider.id) if provider.is_a?(Provider) routes = routes.where(rails_ai_gateway_providers: { name: provider.to_s }) if provider.present? && !provider.is_a?(Provider) required = Array(capabilities).map(&:to_s) routes.group_by(&:name).filter_map do |name, model_routes| model_capabilities = model_routes.flat_map(&:capabilities).uniq.sort next unless (required - model_capabilities).empty? { id: name, capabilities: model_capabilities, routes: model_routes.map { |route| (route) } } end end |
.route_for(model:, query:, capabilities: []) ⇒ Object
29 30 31 32 |
# File 'lib/rails_ai_gateway/model_helper.rb', line 29 def route_for(model:, query:, capabilities: []) route = ModelRoute.ranked_for_query(name: model, query: query, capabilities: capabilities).first (route) if route end |