diff --git a/docs/installation/UPDATING.md b/docs/installation/UPDATING.md index fa89b41..df67775 100644 --- a/docs/installation/UPDATING.md +++ b/docs/installation/UPDATING.md @@ -17,6 +17,7 @@ To update Perplexica to the latest version, follow these steps: ```bash docker compose up -d --build ``` + 4. Once the command completes running go to http://localhost:3000 and verify the latest changes. ## For non Docker users diff --git a/ui/app/layout.tsx b/ui/app/layout.tsx index 2edbf94..684a99c 100644 --- a/ui/app/layout.tsx +++ b/ui/app/layout.tsx @@ -34,7 +34,7 @@ export default function RootLayout({ unstyled: true, classNames: { toast: - 'bg-light-primary dark:bg-dark-primary text-white rounded-lg p-4 flex flex-row items-center space-x-2', + 'bg-light-primary dark:bg-dark-secondary dark:text-white/70 text-black-70 rounded-lg p-4 flex flex-row items-center space-x-2', }, }} /> diff --git a/ui/components/ChatWindow.tsx b/ui/components/ChatWindow.tsx index f2c89a3..ea9a93d 100644 --- a/ui/components/ChatWindow.tsx +++ b/ui/components/ChatWindow.tsx @@ -54,13 +54,26 @@ const useSocket = ( ).then(async (res) => await res.json()); const chatModelProviders = providers.chatModelProviders; - const embeddingModelProviders = providers.embeddingModelProviders; - if ( - !chatModelProviders || - Object.keys(chatModelProviders).length === 0 - ) - return toast.error('No chat models available'); + chatModelProvider = Object.keys(chatModelProviders)[0]; + + if (chatModelProvider === 'custom_openai') { + toast.error( + 'Seems like you are using the custom OpenAI provider, please open the settings and configure the API key and base URL', + ); + setError(true); + return; + } else { + chatModel = Object.keys(chatModelProviders[chatModelProvider])[0]; + + if ( + !chatModelProviders || + Object.keys(chatModelProviders).length === 0 + ) + return toast.error('No chat models available'); + } + + const embeddingModelProviders = providers.embeddingModelProviders; if ( !embeddingModelProviders || @@ -68,9 +81,6 @@ const useSocket = ( ) return toast.error('No embedding models available'); - chatModelProvider = Object.keys(chatModelProviders)[0]; - chatModel = Object.keys(chatModelProviders[chatModelProvider])[0]; - embeddingModelProvider = Object.keys(embeddingModelProviders)[0]; embeddingModel = Object.keys( embeddingModelProviders[embeddingModelProvider], @@ -88,7 +98,7 @@ const useSocket = ( `${process.env.NEXT_PUBLIC_API_URL}/models`, { headers: { - 'Content-Type': 'application/json', + 'Content-Type': 'app lication/json', }, }, ).then(async (res) => await res.json()); @@ -106,6 +116,7 @@ const useSocket = ( if ( chatModelProvider && + chatModelProvider != 'custom_openai' && !chatModelProviders[chatModelProvider][chatModel] ) { chatModel = Object.keys(chatModelProviders[chatModelProvider])[0]; @@ -187,6 +198,13 @@ const useSocket = ( console.log('[DEBUG] closed'); }; + ws.addEventListener('message', (e) => { + const data = JSON.parse(e.data); + if (data.type === 'error') { + toast.error(data.data); + } + }); + setWs(ws); }; diff --git a/ui/components/SettingsDialog.tsx b/ui/components/SettingsDialog.tsx index 788469b..171e812 100644 --- a/ui/components/SettingsDialog.tsx +++ b/ui/components/SettingsDialog.tsx @@ -225,9 +225,13 @@ const SettingsDialog = ({ value={selectedChatModelProvider ?? undefined} onChange={(e) => { setSelectedChatModelProvider(e.target.value); - setSelectedChatModel( - config.chatModelProviders[e.target.value][0], - ); + if (e.target.value === 'custom_openai') { + setSelectedChatModel(''); + } else { + setSelectedChatModel( + config.chatModelProviders[e.target.value][0], + ); + } }} options={Object.keys(config.chatModelProviders).map( (provider) => ({