16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
|
# File 'lib/legion/llm/api/native/providers.rb', line 16
def self.registered(app)
log.debug('[llm][api][providers] registering provider routes')
app.get '/api/llm/providers' do
log.debug('[llm][api][providers] action=list_providers')
require_llm!
providers_config = Legion::LLM::API::Native::Providers.settings_value(:providers, {})
provider_list = providers_config.filter_map do |name, config|
next unless Legion::LLM::API::Native::Providers.enabled_provider_config?(config)
provider_name = name.to_s
{
name: provider_name,
enabled: true,
default_model: Legion::LLM::API::Native::Providers.config_value(config, :default_model),
health: Legion::LLM::API::Native::Providers.provider_health(provider_name),
native: Legion::LLM::Call::Registry.registered?(provider_name.to_sym)
}
end
summary = {
total: provider_list.size,
native: provider_list.count { |p| p[:native] },
routing_enabled: Legion::LLM::Router.routing_enabled?
}
log.debug("[llm][api][providers] action=listed count=#{provider_list.size}")
json_response({ providers: provider_list, summary: summary })
rescue StandardError => e
handle_exception(e, level: :error, handled: true, operation: 'llm.api.providers.list')
json_error('provider_error', e.message, status_code: 500)
end
app.get '/api/llm/providers/:name' do
log.debug("[llm][api][providers] action=get_provider name=#{params[:name]}")
require_llm!
provider_name = params[:name].to_s
provider_config = Legion::LLM::API::Native::Providers.find_provider_config(provider_name)
unless Legion::LLM::API::Native::Providers.enabled_provider_config?(provider_config)
log.debug("[llm][api][providers] action=not_found name=#{params[:name]}")
halt json_error('provider_not_found', "Provider '#{params[:name]}' not found or disabled", status_code: 404)
end
log.debug("[llm][api][providers] action=found name=#{params[:name]}")
json_response({
name: provider_name,
enabled: true,
default_model: Legion::LLM::API::Native::Providers.config_value(provider_config, :default_model),
health: Legion::LLM::API::Native::Providers.provider_health(provider_name),
native: Legion::LLM::Call::Registry.registered?(provider_name.to_sym),
config: Legion::LLM::API::Native::Providers.safe_config(provider_config)
})
rescue StandardError => e
handle_exception(e, level: :error, handled: true, operation: 'llm.api.providers.get')
json_error('provider_error', e.message, status_code: 500)
end
log.debug('[llm][api][providers] provider routes registered')
end
|