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

View file

@ -44,8 +44,9 @@ export function DeleteConversationDialog({
const confirmDelete = useCallback(() => { const confirmDelete = useCallback(() => {
const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, conversationId]); const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, conversationId]);
const thread_id = messages?.[messages.length - 1]?.thread_id; 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]); }, [conversationId, deleteConvoMutation, queryClient]);
return ( return (

View file

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