@@ -37,7 +37,7 @@ def refresh!
37
37
end
38
38
39
39
def fetch_from_providers
40
- configured = Provider . configured_providers ( RubyLLM . config ) . filter ( & :remote? )
40
+ configured = Provider . configured_providers ( RubyLLM . config )
41
41
42
42
RubyLLM . logger . info "Fetching models from providers: #{ configured . map ( &:slug ) . join ( ', ' ) } "
43
43
@@ -47,23 +47,24 @@ def fetch_from_providers
47
47
end
48
48
49
49
def resolve ( model_id , provider : nil , assume_exists : false ) # rubocop:disable Metrics/PerceivedComplexity
50
- assume_exists = true if provider && Provider . providers [ provider . to_sym ] . local?
51
-
52
- if assume_exists
50
+ if assume_exists || local_provider? ( provider )
51
+ model = find_local_model ( model_id , provider ) if local_provider? ( provider )
53
52
raise ArgumentError , 'Provider must be specified if assume_exists is true' unless provider
54
53
55
54
provider = Provider . providers [ provider . to_sym ] || raise ( Error , "Unknown provider: #{ provider . to_sym } " )
56
- model = Model ::Info . new (
57
- id : model_id ,
58
- name : model_id . gsub ( '-' , ' ' ) . capitalize ,
59
- provider : provider . slug ,
60
- capabilities : %w[ function_calling streaming ] ,
61
- modalities : { input : %w[ text image ] , output : %w[ text ] } ,
62
- metadata : { warning : 'Assuming model exists, capabilities may not be accurate' }
63
- )
64
- if RubyLLM . config . log_assume_model_exists
65
- RubyLLM . logger . warn "Assuming model '#{ model_id } ' exists for provider '#{ provider } '. " \
66
- 'Capabilities may not be accurately reflected.'
55
+ unless model
56
+ model = Model ::Info . new (
57
+ id : model_id ,
58
+ name : model_id . gsub ( '-' , ' ' ) . capitalize ,
59
+ provider : provider . slug ,
60
+ capabilities : %w[ function_calling streaming ] ,
61
+ modalities : { input : %w[ text image ] , output : %w[ text ] } ,
62
+ metadata : { warning : 'Assuming model exists, capabilities may not be accurate' }
63
+ )
64
+ if RubyLLM . config . log_assume_model_exists
65
+ RubyLLM . logger . warn "Assuming model '#{ model_id } ' exists for provider '#{ provider } '. " \
66
+ 'Capabilities may not be accurately reflected.'
67
+ end
67
68
end
68
69
else
69
70
model = Models . find model_id , provider
@@ -223,5 +224,15 @@ def find_without_provider(model_id)
223
224
all . find { |m | m . id == Aliases . resolve ( model_id ) } ||
224
225
raise ( ModelNotFoundError , "Unknown model: #{ model_id } " )
225
226
end
227
+
228
+ def self . local_provider? ( provider )
229
+ provider && Provider . providers [ provider . to_sym ] &.local?
230
+ end
231
+
232
+ def self . find_local_model ( model_id , provider )
233
+ Models . find ( model_id , provider )
234
+ rescue ModelNotFoundError
235
+ nil
236
+ end
226
237
end
227
238
end
0 commit comments