70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/n2b/model_config.rb', line 70
def self.get_model_choice(provider, current_model = nil)
options = display_model_options(provider)
suggested = suggested_models(provider)
default = default_model(provider)
puts "\nChoose a model for #{provider}:"
options.each { |option| puts " #{option}" }
current_display = current_model || default
print "\nEnter choice (1-#{options.size}) or model name [#{current_display}]: "
input = $stdin.gets.chomp
if input.empty?
return current_model || resolve_model(provider, default)
end
if input.match?(/^\d+$/)
choice_num = input.to_i
if choice_num >= 1 && choice_num <= suggested.size
selected_key = suggested.keys[choice_num - 1]
return resolve_model(provider, selected_key)
elsif choice_num == suggested.size + 1
print "Enter custom model name: "
custom_model = $stdin.gets.chomp
if custom_model.empty?
puts "Custom model name cannot be empty. Using default."
return resolve_model(provider, default)
end
puts "✓ Using custom model: #{custom_model}"
return custom_model
else
puts "Invalid choice. Using default."
return resolve_model(provider, default)
end
else
if is_valid_model_name?(input)
resolved = resolve_model(provider, input)
if suggested.key?(input)
puts "✓ Using suggested model: #{input} (#{resolved})"
else
puts "✓ Using custom model: #{resolved}"
end
return resolved
else
puts "Invalid model name '#{input}'. Model names should be meaningful (at least 3 characters, no single letters)."
puts "Using default model instead."
return resolve_model(provider, default)
end
end
end
|