diff --git a/Gemfile b/Gemfile index b4dbd5b42..757ec18a2 100644 --- a/Gemfile +++ b/Gemfile @@ -13,7 +13,6 @@ gem "turbo-rails", "~> 2.0.5" gem "stimulus-rails", "~> 1.3.3" gem "tailwindcss-rails", "~> 2.7.2" gem "rack-cors" -gem "ostruct" # Build JSON APIs with ease [https://github.com/rails/jbuilder] # gem "jbuilder" diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e016ce3c2..34bf210e4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -29,6 +29,15 @@ def redirect_to(*args) private + def set_nav_conversations + @nav_conversations = Conversation.grouped_by_increasing_time_interval_for_user(Current.user) + end + + def set_nav_assistants + @nav_assistants = Current.user.assistants.ordered + end + + def set_system_ivars @system_ivars = public_ivars end diff --git a/app/controllers/assistants_controller.rb b/app/controllers/assistants_controller.rb index 531517b0b..b4d3d2339 100644 --- a/app/controllers/assistants_controller.rb +++ b/app/controllers/assistants_controller.rb @@ -1,6 +1,12 @@ class AssistantsController < ApplicationController + before_action :set_nav_conversations + before_action :set_nav_assistants + def index - assistant = Current.user.assistants.ordered.first - redirect_to new_assistant_message_path(assistant), status: :see_other + unless Feature.assistants_page? + best_assistant = @nav_assistants.first + redirect_to new_assistant_message_path(best_assistant), status: :see_other + return + end end end diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index aeef68680..614826c24 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -28,14 +28,6 @@ def destroy private - def set_nav_conversations - @nav_conversations = Conversation.grouped_by_increasing_time_interval_for_user(Current.user) - end - - def set_nav_assistants - @nav_assistants = Current.user.assistants.ordered - end - def set_conversation @conversation = Current.user.conversations.find(params[:id]) end diff --git a/app/models/user/registerable.rb b/app/models/user/registerable.rb index 5795c50d1..b9286ee48 100644 --- a/app/models/user/registerable.rb +++ b/app/models/user/registerable.rb @@ -14,8 +14,14 @@ def create_initial_assistants_etc LanguageModel.import_from_file(users: [self]) - assistants.create! name: "GPT-4o", language_model: language_models.best_for_api_service(open_ai_api_service).first - assistants.create! name: "Claude 3.5 Sonnet", language_model: language_models.best_for_api_service(anthropic_api_service).first - assistants.create! name: "Meta Llama", language_model: language_models.best_for_api_service(groq_api_service).first + [ + ["GPT-4o", open_ai_api_service], + ["Claude 3.5 Sonnet", anthropic_api_service], + ["Meta Llama 3 70b", groq_api_service], + ].map do |name, api_service| + language_model = language_models.best_for_api_service(api_service).first + description = "Model #{language_model.api_name} on #{api_service.name}" + assistants.create! name:, description:, language_model: + end end end diff --git a/app/views/assistants/_assistant.html.erb b/app/views/assistants/_assistant.html.erb index 3e04f9fea..95f1aca35 100644 --- a/app/views/assistants/_assistant.html.erb +++ b/app/views/assistants/_assistant.html.erb @@ -1,9 +1,10 @@ <%# locals: (assistant:, settings: true, assistant_counter: -1) %> <% selected = assistant == @assistant %> -<% first = assistant_counter.zero? %> <% visible = assistant_counter <= Assistant::MAX_LIST_DISPLAY-1 || selected %> -
- <%# This extra div ^ is needed because of the absolute positioning. It doesn't lay out properly if added to the div below. %> +
">
<%= link_to new_assistant_message_path(assistant), class: "flex-1 flex py-1 items-center text-gray-950 dark:text-gray-100 font-medium truncate", data: { role: "name" } do %> - <%= render partial: "layouts/assistant_avatar", locals: { assistant: assistant, size: 7, classes: "mr-2" } %> + <%= render partial: "layouts/assistant_avatar", locals: { assistant:, size: 7, classes: "mr-2" } %> <%= assistant.name %> <% end %>