🔧 fix: Allow Azure Assistants Chats to be Deleted (#3893)

This commit is contained in:
Sebastian Diez 2024-10-29 13:09:35 +01:00 committed by GitHub
parent 2b0654bb2c
commit f270455be6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 6 deletions

View file

@ -1,7 +1,6 @@
const multer = require('multer');
const express = require('express');
const { CacheKeys } = require('librechat-data-provider');
const { initializeClient } = require('~/server/services/Endpoints/assistants');
const { CacheKeys, EModelEndpoint } = require('librechat-data-provider');
const { getConvosByPage, deleteConvos, getConvo, saveConvo } = require('~/models/Conversation');
const { storage, importFileFilter } = require('~/server/routes/files/multer');
const requireJwtAuth = require('~/server/middleware/requireJwtAuth');
@ -11,6 +10,10 @@ const { createImportLimiters } = require('~/server/middleware');
const getLogStores = require('~/cache/getLogStores');
const { sleep } = require('~/server/utils');
const { logger } = require('~/config');
const assistantClients = {
[EModelEndpoint.azureAssistants]: require('~/server/services/Endpoints/azureAssistants'),
[EModelEndpoint.assistants]: require('~/server/services/Endpoints/assistants'),
};
const router = express.Router();
router.use(requireJwtAuth);
@ -74,7 +77,7 @@ router.post('/gen_title', async (req, res) => {
router.post('/clear', async (req, res) => {
let filter = {};
const { conversationId, source, thread_id } = req.body.arg;
const { conversationId, source, thread_id, endpoint } = req.body.arg;
if (conversationId) {
filter = { conversationId };
}
@ -83,9 +86,12 @@ router.post('/clear', async (req, res) => {
return res.status(200).send('No conversationId provided');
}
if (thread_id) {
if (
typeof endpoint != 'undefined' &&
Object.prototype.propertyIsEnumerable.call(assistantClients, endpoint)
) {
/** @type {{ openai: OpenAI}} */
const { openai } = await initializeClient({ req, res });
const { openai } = await assistantClients[endpoint].initializeClient({ req, res });
try {
const response = await openai.beta.threads.del(thread_id);
logger.debug('Deleted OpenAI thread:', response);

View file

@ -44,8 +44,9 @@ export function DeleteConversationDialog({
const confirmDelete = useCallback(() => {
const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, conversationId]);
const thread_id = messages?.[messages.length - 1]?.thread_id;
const endpoint = messages?.[messages.length - 1]?.endpoint;
deleteConvoMutation.mutate({ conversationId, thread_id, source: 'button' });
deleteConvoMutation.mutate({ conversationId, thread_id, endpoint, source: 'button' });
}, [conversationId, deleteConvoMutation, queryClient]);
return (

View file

@ -152,6 +152,7 @@ export type TUpdateConversationResponse = TConversation;
export type TDeleteConversationRequest = {
conversationId?: string;
thread_id?: string;
endpoint?: string;
source?: string;
};