From 99e73f09ff92743c375904965f67715c5956155f Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 24 Jan 2025 00:24:59 -0500 Subject: [PATCH] UX: improve embeddings config styles (#1085) * WIP: improve embeddings config styles * switch to textarea, fix back button * remove log, update button, fix tests * stree * fix spec * spec fix * remove comment --- app/models/embedding_definition.rb | 6 +- .../components/ai-embedding-editor.gjs | 126 +++++++++++++----- .../common/ai-embedding-editor.scss | 43 ++++++ config/locales/client.en.yml | 14 +- .../ai_embedding_definition_spec.rb | 19 ++- svg-icons/icons-sprite.svg | 12 +- 6 files changed, 169 insertions(+), 51 deletions(-) diff --git a/app/models/embedding_definition.rb b/app/models/embedding_definition.rb index 621fa537..77a0ab60 100644 --- a/app/models/embedding_definition.rb +++ b/app/models/embedding_definition.rb @@ -77,7 +77,7 @@ class EmbeddingDefinition < ActiveRecord::Base # indexes, so we downsample to 2000 via API. { preset_id: "text-embedding-3-large", - display_name: "OpenAI's text-embedding-3-large", + display_name: "text-embedding-3-large", dimensions: 2000, max_sequence_length: 8191, pg_function: "<=>", @@ -91,7 +91,7 @@ class EmbeddingDefinition < ActiveRecord::Base }, { preset_id: "text-embedding-3-small", - display_name: "OpenAI's text-embedding-3-small", + display_name: "text-embedding-3-small", dimensions: 1536, max_sequence_length: 8191, pg_function: "<=>", @@ -105,7 +105,7 @@ class EmbeddingDefinition < ActiveRecord::Base }, { preset_id: "text-embedding-ada-002", - display_name: "OpenAI's text-embedding-ada-002", + display_name: "text-embedding-ada-002", dimensions: 1536, max_sequence_length: 8191, pg_function: "<=>", diff --git a/assets/javascripts/discourse/components/ai-embedding-editor.gjs b/assets/javascripts/discourse/components/ai-embedding-editor.gjs index 2ba63c92..98c32983 100644 --- a/assets/javascripts/discourse/components/ai-embedding-editor.gjs +++ b/assets/javascripts/discourse/components/ai-embedding-editor.gjs @@ -1,7 +1,7 @@ import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; -import { Input } from "@ember/component"; -import { concat, get } from "@ember/helper"; +import { Input, Textarea } from "@ember/component"; +import { concat, fn, get } from "@ember/helper"; import { on } from "@ember/modifier"; import { action, computed } from "@ember/object"; import didInsert from "@ember/render-modifiers/modifiers/did-insert"; @@ -13,6 +13,8 @@ import DButton from "discourse/components/d-button"; import icon from "discourse/helpers/d-icon"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { i18n } from "discourse-i18n"; +import AdminSectionLandingItem from "admin/components/admin-section-landing-item"; +import AdminSectionLandingWrapper from "admin/components/admin-section-landing-wrapper"; import ComboBox from "select-kit/components/combo-box"; import DTooltip from "float-kit/components/d-tooltip"; import not from "truth-helpers/helpers/not"; @@ -48,7 +50,19 @@ export default class AiEmbeddingEditor extends Component { }; return this.args.embeddings.resultSetMeta.distance_functions.map((df) => { - return { id: df, name: t(df) }; + let iconName; + + if (df === "<=>") { + iconName = "discourse-spaceship-operator"; + } else if (df === "<#>") { + iconName = "discourse-negative-inner-product"; + } + + return { + id: df, + name: t(df), + icon: iconName, + }; }); } @@ -57,12 +71,14 @@ export default class AiEmbeddingEditor extends Component { return { name: preset.display_name, id: preset.preset_id, + provider: preset.provider, }; }); - presets.pushObject({ + presets.unshiftObject({ name: i18n("discourse_ai.embeddings.configure_manually"), id: "manual", + provider: "fake", }); return presets; @@ -90,11 +106,11 @@ export default class AiEmbeddingEditor extends Component { } @action - configurePreset() { + configurePreset(preset) { this.selectedPreset = this.args.embeddings.resultSetMeta.presets.findBy( "preset_id", - this.presetId + preset.id ) || {}; this.editingModel = this.store @@ -185,35 +201,64 @@ export default class AiEmbeddingEditor extends Component { }); } -