mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-30 00:53:14 +00:00
* feat: Implement model registry and capabilities for multi-provider support - Added ModelRegistry to manage available models and their capabilities. - Introduced ModelProvider enum for different LLM providers. - Created ModelCapabilities dataclass to define model features. - Implemented methods to load models based on API keys and settings. - Added utility functions for model management in model_utils.py. - Updated settings.py to include provider-specific API keys. - Refactored LLM classes (Anthropic, OpenAI, Google, etc.) to utilize new model registry. - Enhanced utility functions to handle token limits and model validation. - Improved code structure and logging for better maintainability. * feat: Add model selection feature with API integration and UI component * feat: Add model selection and default model functionality in agent management * test: Update assertions and formatting in stream processing tests * refactor(llm): Standardize model identifier to model_id * fix tests --------- Co-authored-by: Alex <a@tushynski.me>
76 lines
2.4 KiB
TypeScript
76 lines
2.4 KiB
TypeScript
import { configureStore } from '@reduxjs/toolkit';
|
|
|
|
import agentPreviewReducer from './agents/agentPreviewSlice';
|
|
import { conversationSlice } from './conversation/conversationSlice';
|
|
import { sharedConversationSlice } from './conversation/sharedConversationSlice';
|
|
import {
|
|
Preference,
|
|
prefListenerMiddleware,
|
|
prefSlice,
|
|
} from './preferences/preferenceSlice';
|
|
import uploadReducer from './upload/uploadSlice';
|
|
|
|
const key = localStorage.getItem('DocsGPTApiKey');
|
|
const prompt = localStorage.getItem('DocsGPTPrompt');
|
|
const chunks = localStorage.getItem('DocsGPTChunks');
|
|
const token_limit = localStorage.getItem('DocsGPTTokenLimit');
|
|
const doc = localStorage.getItem('DocsGPTRecentDocs');
|
|
const selectedModel = localStorage.getItem('DocsGPTSelectedModel');
|
|
|
|
const preloadedState: { preference: Preference } = {
|
|
preference: {
|
|
apiKey: key ?? '',
|
|
token: localStorage.getItem('authToken') ?? null,
|
|
prompt:
|
|
prompt !== null
|
|
? JSON.parse(prompt)
|
|
: { name: 'default', id: 'default', type: 'private' },
|
|
chunks: JSON.parse(chunks ?? '2').toString(),
|
|
token_limit: token_limit ? parseInt(token_limit) : 2000,
|
|
selectedDocs: doc !== null ? JSON.parse(doc) : [],
|
|
conversations: {
|
|
data: null,
|
|
loading: false,
|
|
},
|
|
sourceDocs: [
|
|
{
|
|
name: 'default',
|
|
date: '',
|
|
model: '1.0',
|
|
type: 'remote',
|
|
id: 'default',
|
|
retriever: 'clasic',
|
|
},
|
|
],
|
|
modalState: 'INACTIVE',
|
|
paginatedDocuments: null,
|
|
templateAgents: null,
|
|
agents: null,
|
|
sharedAgents: null,
|
|
selectedAgent: null,
|
|
selectedModel: selectedModel ? JSON.parse(selectedModel) : null,
|
|
availableModels: [],
|
|
modelsLoading: false,
|
|
},
|
|
};
|
|
const store = configureStore({
|
|
preloadedState: preloadedState,
|
|
reducer: {
|
|
preference: prefSlice.reducer,
|
|
conversation: conversationSlice.reducer,
|
|
sharedConversation: sharedConversationSlice.reducer,
|
|
upload: uploadReducer,
|
|
agentPreview: agentPreviewReducer,
|
|
},
|
|
middleware: (getDefaultMiddleware) =>
|
|
getDefaultMiddleware().concat(prefListenerMiddleware.middleware),
|
|
});
|
|
|
|
export type RootState = ReturnType<typeof store.getState>;
|
|
export type AppDispatch = typeof store.dispatch;
|
|
export default store;
|
|
|
|
// TODO : use https://redux-toolkit.js.org/tutorials/typescript#define-typed-hooks everywere instead of direct useDispatch
|
|
|
|
// TODO : streamline async state management
|