forked from okisdev/ChatChat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
store.ts
127 lines (108 loc) · 3.34 KB
/
store.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { atom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
// ------------------ Layout Config ------------------
// Layout
const isHiddenSideAtom = atomWithStorage('isHiddenSide', false);
// ------------------ Conversation Config ------------------
// Conversation Config
const isSendKeyEnterAtom = atomWithStorage('enterKeySend', true);
const isAutoScrollAtom = atomWithStorage('autoScroll', false);
const enableStreamMessagesAtom = atomWithStorage<boolean>('enableStreamMessages', true);
const systemPromptContentAtom = atomWithStorage('systemPrompt', '');
const enableSystemPrompt = atomWithStorage('enableSystemPrompt', false);
const enablePluginsAtom = atomWithStorage('enablePlugins', false);
const contextModeAtom = atomWithStorage<{
enable: boolean;
contextCount: number;
}>('context-mode', {
enable: false,
contextCount: 0,
});
const enableUserMarkdownRenderAtom = atomWithStorage<boolean>('enableUserMarkdownRender', false);
// Text to Speech Config
const textToSpeechConfigAtom = atomWithStorage('textToSpeechConfig', {
voice: '',
speed: 1.0,
pitch: 1.0,
});
const autoSpeechAtom = atomWithStorage('autoSpeech', false);
// Search Config
const searchConfigAtom = atomWithStorage('searchConfig', {
searchEngine: 'pse',
searchEngineID: '',
searchAPIKey: '',
});
// File Config
const fileConfigAtom = atomWithStorage<{
enable: boolean;
files: string[];
}>('fileConfig', {
enable: false,
files: [],
});
const enableFileAtom = atom((get) => get(fileConfigAtom).enable);
const filesAtom = atom((get) => get(fileConfigAtom).files);
// ------------------ App Config ------------------
const serviceProviderAtom = atomWithStorage<ServiceProviderProps>('serviceProvider', 'OpenAI');
// OpenAI Config
const useCloudSettingsAtom = atomWithStorage('useCloudSettings', false);
const openAIConfigAtom = atomWithStorage<OpenAIConfigProps>('openAIConfig', {
apiKey: '',
apiEndpoint: '',
apiModel: 'gpt-3.5-turbo',
apiTemperature: 0.3,
});
// Azure Config
const azureConfigAtom = atomWithStorage('azureConfig', {
apiKey: '',
apiEndpoint: '',
apiModel: 'gpt-4',
apiTemperature: 0.3,
apiDeploymentName: '',
});
// Team Config
const teamConfigAtom = atomWithStorage('teamConfig', {
accessCode: '',
});
// Hugging Face Config
const huggingFaceConfigAtom = atomWithStorage('huggingFaceConfig', {
huggingFaceModel: 'OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5',
accessToken: '',
});
// Cohere Config
const cohereConfigAtom = atomWithStorage('cohereConfig', {
model: 'command-nightly',
apiKey: '',
});
// Claude Config
const claudeConfigAtom = atomWithStorage('claudeConfig', {
apiKey: '',
apiModel: 'claude-instant-1',
apiTemperature: 1.0,
});
// eslint-disable-next-line import/no-anonymous-default-export
export default {
isHiddenSideAtom,
isSendKeyEnterAtom,
isAutoScrollAtom,
enableStreamMessagesAtom,
fileConfigAtom,
enableFileAtom,
filesAtom,
systemPromptContentAtom,
enableSystemPrompt,
enablePluginsAtom,
contextModeAtom,
enableUserMarkdownRenderAtom,
textToSpeechConfigAtom,
autoSpeechAtom,
searchConfigAtom,
serviceProviderAtom,
useCloudSettingsAtom,
openAIConfigAtom,
azureConfigAtom,
teamConfigAtom,
huggingFaceConfigAtom,
cohereConfigAtom,
claudeConfigAtom,
};