Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/settings/language_models_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,6 @@ def set_system_language_model
end

def language_model_params
params.require(:language_model).permit(:api_name, :name, :best, :supports_images, :supports_tools, :api_service_id, :supports_system_message, :supports_pdf)
params.require(:language_model).permit(:api_name, :name, :supports_images, :supports_tools, :api_service_id, :supports_system_message, :supports_pdf)
end
end
11 changes: 1 addition & 10 deletions app/models/language_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@ class LanguageModel < ApplicationRecord
validates :api_name, :name, :position, presence: true

before_save :soft_delete_assistants, if: -> { has_attribute?(:deleted_at) && deleted_at && deleted_at_changed? && deleted_at_was.nil? }
after_save :update_best_language_model_for_api_service

scope :ordered, -> { order(Arel.sql("CASE WHEN best THEN 0 ELSE position END")).order(:position) }
scope :ordered, -> { order(:position) }
scope :for_user, ->(user) { where(user_id: user.id).not_deleted }
scope :best_for_api_service, ->(api_service) { where(best: true, api_service: api_service) }

delegate :ai_backend, to: :api_service
delegate :name, to: :api_service, prefix: true, allow_nil: true
Expand Down Expand Up @@ -45,11 +43,4 @@ def soft_delete_assistants
assistants.update_all(deleted_at: Time.current)
end

# Only one best language model per API service
def update_best_language_model_for_api_service
if best?
api_service.language_models.update_all(best: false)
update_column(:best, true)
end
end
end
1 change: 0 additions & 1 deletion app/models/language_model/export.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ module LanguageModel::Export
DEFAULT_EXPORT_ONLY = %i[
api_name
name
best
api_service_name
supports_images
supports_tools
Expand Down
4 changes: 2 additions & 2 deletions app/services/ai_backend.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ def self.test_language_model(language_model, api_name = nil)
def self.test_api_service(api_service, url = nil, token = nil)
url ||= api_service.url
token ||= api_service.effective_token
language_model = LanguageModel.where(best: true, api_service: api_service).first
language_model = api_service.language_models.first
api_name = language_model.api_name unless language_model.nil?

return "Error: API key (token) is blank" if api_service.requires_token? && token.blank?
return "Error: API name is blank. Define a best Language Model for this API service." if api_name.blank?
return "Error: API name is blank. Define a Language Model for this API service." if api_name.blank?

test_execute(url, token, api_name)
end
Expand Down
5 changes: 0 additions & 5 deletions app/views/settings/language_models/_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@
</div>
<% end %>

<div class="my-5">
<%= form.check_box :best %>
<%= form.label :best, t('app.settings.language_models.form.best') %>
</div>

<div class="my-5">
<%= form.check_box :supports_images %>
<%= form.label :supports_images, t('app.settings.language_models.form.supports_images') %>
Expand Down
2 changes: 0 additions & 2 deletions app/views/settings/language_models/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
<thead>
<tr class="bg-gray-200 dark:bg-gray-900">
<th><%= t('app.settings.language_models.table.name') %></th>
<th><%= t('app.settings.language_models.table.best') %></th>
<th><%= t('app.settings.language_models.table.description') %></th>
<th><%= t('app.settings.language_models.table.api_service') %></th>
<th><%= t('app.settings.language_models.table.supports_pdf') %></th>
Expand All @@ -27,7 +26,6 @@
<%= turbo_frame_tag dom_id(language_model) do %>
<tr class="<%= cycle('bg-gray-100 dark:bg-gray-600', 'bg-white dark:bg-gray-900') %> cursor-pointer" data-href="<%= edit_settings_language_model_path(language_model) %>">
<td class="underline"><%= language_model.api_name %></td>
<td><%= language_model.best? ? t('app.generic.yes', default: 'Yes') : t('app.generic.no', default: 'No') %></td>
<td><%= language_model.name %></td>
<td><%= n_a_if_blank(language_model.api_service.name) %></td>
<td><%= language_model.supports_pdf? ? t('app.generic.yes', default: 'Yes') : t('app.generic.no', default: 'No') %></td>
Expand Down
2 changes: 0 additions & 2 deletions config/locales/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ de:
back: "Zurück"
table:
name: "API-Name"
best: "Bestes?"
description: "Beschreibung"
api_service: "API-Dienst"
supports_pdf: "Unterstützt PDFs"
Expand All @@ -70,7 +69,6 @@ de:
api_name: "API-Name"
api_name_hint: "Wie in der API-Doku angegeben"
api_service: "API-Dienst"
best: "Bestes?"
supports_images: "Unterstützt Bilder?"
supports_tools: "Unterstützt Tools (Function Calling)?"
supports_system_message: "Unterstützt Systemnachricht (Anweisungen)?"
Expand Down
2 changes: 0 additions & 2 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ en:
back: "Back"
table:
name: "API Name"
best: "Best?"
description: "Description"
api_service: "API Service"
supports_pdf: "Supports PDFs"
Expand All @@ -99,7 +98,6 @@ en:
api_name: "API Name"
api_name_hint: "As specified in the API docs"
api_service: "API Service"
best: "Best?"
supports_images: "Supports Images?"
supports_tools: "Supports Tools (Function Calling)?"
supports_system_message: "Supports System Message (Instructions)?"
Expand Down
5 changes: 5 additions & 0 deletions db/migrate/20251020230241_remove_best_from_language_models.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class RemoveBestFromLanguageModels < ActiveRecord::Migration[8.0]
def change
remove_column :language_models, :best, :boolean
end
end
3 changes: 1 addition & 2 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema[8.0].define(version: 2025_09_30_104155) do
ActiveRecord::Schema[8.0].define(version: 2025_10_20_230241) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_catalog.plpgsql"

Expand Down Expand Up @@ -172,7 +172,6 @@
t.bigint "user_id", null: false
t.bigint "api_service_id"
t.boolean "supports_tools", default: false
t.boolean "best", default: false
t.boolean "supports_system_message", default: false
t.boolean "supports_pdf", default: false, null: false
t.index ["api_service_id"], name: "index_language_models_on_api_service_id"
Expand Down
36 changes: 0 additions & 36 deletions models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,251 +4,215 @@ models:
name: GPT-5 (latest)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4o
name: GPT-4o
supports_images: true
supports_tools: true
best: true
supports_system_message: true
api_service_name: OpenAI
- api_name: claude-3-5-sonnet-20241022
name: Claude 3.5 Sonnet (latest)
supports_images: true
supports_tools: true
best: true
supports_system_message: true
api_service_name: Anthropic
- api_name: deepseek-r1-distill-llama-70B
name: DeepSeek R1 Distill Llama 70B
supports_images: false
supports_tools: false
best: true
supports_system_message: true
api_service_name: Groq
- api_name: llama-3.3-70b-versatile
name: Llama 3.3 70B Versatile 128k
supports_images: false
supports_tools: false
best: true
supports_system_message: true
api_service_name: Groq
- api_name: gpt-4o-2024-08-06
name: GPT-4o Omni Multimodal (2024-08-06)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4o-2024-05-13
name: GPT-4o Omni Multimodal (2024-05-13)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-turbo
name: GPT-4 Turbo with Vision (latest)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-turbo-2024-04-09
name: GPT-4 Turbo with Vision (2024-04-09)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-turbo-preview
name: GPT-4 Turbo Preview
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-0125-preview
name: GPT-4 Turbo Preview (2024-01-25)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-1106-preview
name: GPT-4 Turbo Preview (2023-11-06)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-vision-preview
name: GPT-4 Turbo with Vision Preview (2023-11-06)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-1106-vision-preview
name: GPT-4 Turbo with Vision Preview (2023-11-06)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4
name: GPT-4 (latest)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-4-0613
name: GPT-4 Snapshot improved function calling (2023-06-13)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-3.5-turbo
name: GPT-3.5 Turbo (latest)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-3.5-turbo-0125
name: GPT-3.5 Turbo (2022-01-25)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: gpt-3.5-turbo-1106
name: GPT-3.5 Turbo (2022-11-06)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: claude-3-5-sonnet-20240620
name: Claude 3.5 Sonnet (2024-06-20)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-3-opus-20240229
name: Claude 3 Opus (2024-02-29)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-3-sonnet-20240229
name: Claude 3 Sonnet (2024-02-29)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-3-haiku-20240307
name: Claude 3 Haiku (2024-03-07)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-2.1
name: Claude 2.1
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-2.0
name: Claude 2.0
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: claude-instant-1.2
name: Claude Instant 1.2
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: llama3-70b-8192
name: Meta Llama 3 70b
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Groq
- api_name: llama3-8b-8192
name: Meta Llama 3 8b
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Groq
- api_name: mixtral-8x7b-32768
name: Mistral 8 7b
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Groq
- api_name: gemma-7b-it
name: Google Gemma 7b
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Groq
- api_name: gpt-3.5-turbo-instruct
name: GPT-3.5 Turbo Instruct
supports_images: false
supports_tools: false
best: false
supports_system_message: false
api_service_name: OpenAI
- api_name: gpt-3.5-turbo-16k-0613
name: GPT-3.5 Turbo (2022-06-13)
supports_images: false
supports_tools: false
best: false
supports_system_message: false
api_service_name: OpenAI
- api_name: gpt-4o-mini
name: GPT-4o Mini (latest)
supports_images: true
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: o1-preview
name: OpenAI o1 (preview)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: OpenAI
- api_name: claude-3-5-haiku-20241022
name: Claude 3.5 Haiku (latest)
supports_images: false
supports_tools: true
best: false
supports_system_message: true
api_service_name: Anthropic
- api_name: gemini-1.5-pro-002
name: Google Gemini Pro 1.5 (latest)
supports_images: true
supports_tools: false
best: true
supports_system_message: true
api_service_name: Google Gemini
Loading
Loading