@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
63 lines (51 loc) • 1.94 kB
text/typescript
import { SWRResponse, mutate } from 'swr';
import { StateCreator } from 'zustand/vanilla';
import { useClientDataSWR } from '@/libs/swr';
import { ragEvalService } from '@/services/ragEval';
import { KnowledgeBaseStore } from '@/store/knowledgeBase/store';
import { CreateNewEvalEvaluation, RAGEvalDataSetItem } from '@/types/eval';
const FETCH_EVALUATION_LIST_KEY = 'FETCH_EVALUATION_LIST_KEY';
export interface RAGEvalEvaluationAction {
checkEvaluationStatus: (id: number) => Promise<void>;
createNewEvaluation: (params: CreateNewEvalEvaluation) => Promise<void>;
refreshEvaluationList: () => Promise<void>;
removeEvaluation: (id: number) => Promise<void>;
runEvaluation: (id: number) => Promise<void>;
useFetchEvaluationList: (knowledgeBaseId: string) => SWRResponse<RAGEvalDataSetItem[]>;
}
export const createRagEvalEvaluationSlice: StateCreator<
KnowledgeBaseStore,
[['zustand/devtools', never]],
[],
RAGEvalEvaluationAction
> = (set, get) => ({
checkEvaluationStatus: async (id) => {
await ragEvalService.checkEvaluationStatus(id);
},
createNewEvaluation: async (params) => {
await ragEvalService.createEvaluation(params);
await get().refreshEvaluationList();
},
refreshEvaluationList: async () => {
await mutate(FETCH_EVALUATION_LIST_KEY);
},
removeEvaluation: async (id) => {
await ragEvalService.removeEvaluation(id);
// await get().refreshEvaluationList();
},
runEvaluation: async (id) => {
await ragEvalService.startEvaluationTask(id);
},
useFetchEvaluationList: (knowledgeBaseId) =>
useClientDataSWR<RAGEvalDataSetItem[]>(
[FETCH_EVALUATION_LIST_KEY, knowledgeBaseId],
() => ragEvalService.getEvaluationList(knowledgeBaseId),
{
fallbackData: [],
onSuccess: () => {
if (!get().initDatasetList)
set({ initDatasetList: true }, false, 'useFetchDatasets/init');
},
},
),
});