30 lines
No EOL
1.1 KiB
TypeScript
30 lines
No EOL
1.1 KiB
TypeScript
import { setLLMConfig } from "@/store/slices/userConfig";
|
|
import { store } from "@/store/store";
|
|
|
|
export const handleSaveLLMConfig = async (llmConfig: LLMConfig) => {
|
|
if (!hasValidLLMConfig(llmConfig)) {
|
|
throw new Error('API key cannot be empty');
|
|
}
|
|
|
|
await fetch('/api/user-config', {
|
|
method: 'POST',
|
|
body: JSON.stringify(llmConfig)
|
|
});
|
|
|
|
store.dispatch(setLLMConfig(llmConfig));
|
|
}
|
|
|
|
export const hasValidLLMConfig = (llmConfig: LLMConfig) => {
|
|
if (!llmConfig.LLM) return false;
|
|
const OPENAI_API_KEY = llmConfig.OPENAI_API_KEY;
|
|
const GOOGLE_API_KEY = llmConfig.GOOGLE_API_KEY;
|
|
const OLLAMA_MODEL = llmConfig.OLLAMA_MODEL;
|
|
const PEXELS_API_KEY = llmConfig.PEXELS_API_KEY;
|
|
return llmConfig.LLM === 'openai' ?
|
|
OPENAI_API_KEY !== '' && OPENAI_API_KEY !== null && OPENAI_API_KEY !== undefined :
|
|
llmConfig.LLM === 'google' ?
|
|
GOOGLE_API_KEY !== '' && GOOGLE_API_KEY !== null && GOOGLE_API_KEY !== undefined :
|
|
llmConfig.LLM === 'ollama' ?
|
|
PEXELS_API_KEY !== '' && PEXELS_API_KEY !== null && PEXELS_API_KEY !== undefined && OLLAMA_MODEL !== '' && OLLAMA_MODEL !== null && OLLAMA_MODEL !== undefined :
|
|
false;
|
|
} |