diff --git a/backend/apps/webui/routers/memories.py b/backend/apps/webui/routers/memories.py index c58f706d4..3832fe9a1 100644 --- a/backend/apps/webui/routers/memories.py +++ b/backend/apps/webui/routers/memories.py @@ -43,9 +43,11 @@ async def get_memories(user=Depends(get_verified_user)): class AddMemoryForm(BaseModel): content: str + class MemoryUpdateModel(BaseModel): content: Optional[str] = None + @router.post("/add", response_model=Optional[MemoryModel]) async def add_memory( request: Request, form_data: AddMemoryForm, user=Depends(get_verified_user) @@ -64,9 +66,12 @@ async def add_memory( return memory -@router.post("/{memory_id}", response_model=Optional[MemoryModel]) +@router.post("/{memory_id}/update", response_model=Optional[MemoryModel]) async def update_memory_by_id( - memory_id: str, request: Request, form_data: MemoryUpdateModel, user=Depends(get_verified_user) + memory_id: str, + request: Request, + form_data: MemoryUpdateModel, + user=Depends(get_verified_user), ): memory = Memories.update_memory_by_id(memory_id, form_data.content) if memory is None: @@ -74,12 +79,16 @@ async def update_memory_by_id( if form_data.content is not None: memory_embedding = request.app.state.EMBEDDING_FUNCTION(form_data.content) - collection = CHROMA_CLIENT.get_or_create_collection(name=f"user-memory-{user.id}") + collection = CHROMA_CLIENT.get_or_create_collection( + name=f"user-memory-{user.id}" + ) collection.upsert( documents=[form_data.content], ids=[memory.id], embeddings=[memory_embedding], - metadatas=[{"created_at": memory.created_at, "updated_at": memory.updated_at}], + metadatas=[ + {"created_at": memory.created_at, "updated_at": memory.updated_at} + ], ) return memory diff --git a/src/lib/apis/memories/index.ts b/src/lib/apis/memories/index.ts index abfb70f2d..c3c122adf 100644 --- a/src/lib/apis/memories/index.ts +++ b/src/lib/apis/memories/index.ts @@ -62,7 +62,7 @@ export const addNewMemory = async (token: string, content: string) => { export const updateMemoryById = async (token: string, id: string, content: string) => { let error = null; - const res = await fetch(`${WEBUI_API_BASE_URL}/memories/${id}`, { + const res = await fetch(`${WEBUI_API_BASE_URL}/memories/${id}/update`, { method: 'POST', headers: { Accept: 'application/json', diff --git a/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte b/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte index ff9476308..98d77c07a 100644 --- a/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte +++ b/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte @@ -8,54 +8,14 @@ const dispatch = createEventDispatcher(); export let show; - export let memory = {}; - - let showUpdateBtn = false; - const i18n = getContext('i18n'); let loading = false; let content = ''; - let isMemoryLoaded = false; - - $: { - if (memory && memory.id && !isMemoryLoaded) { - showUpdateBtn = true; - content = memory.content; - isMemoryLoaded = true; - } - if (!show) { - showUpdateBtn = false; - isMemoryLoaded = false; - memory = {}; - content = ''; - } - } const submitHandler = async () => { loading = true; - if (memory && memory.id) { - const res = await updateMemoryById(localStorage.token, memory.id, content).catch((error) => { - toast.error(error); - - return null; - }); - - if (res) { - console.log(res); - toast.success('Memory updated successfully'); - content = ''; - show = false; - isMemoryLoaded = false; - memory = {}; - dispatch('save'); - } - - loading = false; - return; - } - const res = await addNewMemory(localStorage.token, content).catch((error) => { toast.error(error); @@ -78,7 +38,7 @@
- {memory.id ? $i18n.t('Edit Memory') : $i18n.t('Add Memory')} + {$i18n.t('Add Memory')}
+
+ +
+
+
{ + submitHandler(); + }} + > +
+