diff --git a/lib/ruby_llm/models.rb b/lib/ruby_llm/models.rb index 99fa2aa9..8c77b39d 100644 --- a/lib/ruby_llm/models.rb +++ b/lib/ruby_llm/models.rb @@ -66,7 +66,7 @@ def resolve(model_id, provider: nil, assume_exists: false, config: nil) # ruboco id: model_id, name: model_id.tr('-', ' ').capitalize, provider: provider_instance.slug, - capabilities: %w[function_calling streaming], + capabilities: provider_class.capabilities.capabilities_for(model_id), modalities: { input: %w[text image], output: %w[text] }, metadata: { warning: 'Assuming model exists, capabilities may not be accurate' } ) diff --git a/spec/ruby_llm/chat_assume_model_exists_spec.rb b/spec/ruby_llm/chat_assume_model_exists_spec.rb index eb8543a9..ea63b344 100644 --- a/spec/ruby_llm/chat_assume_model_exists_spec.rb +++ b/spec/ruby_llm/chat_assume_model_exists_spec.rb @@ -78,5 +78,15 @@ expect(chat.model.id).to eq(custom_model) expect(chat.model.provider).to eq(provider) end + + it 'works with .with_schema method' do + chat = RubyLLM.chat( + model: 'gemini-pro', + provider: 'gemini', + assume_model_exists: true + ) + + expect(chat.model.capabilities).to include('structured_output') + end end end