feat: return endpoint config from server

This commit is contained in:
Wentao Lyu 2023-04-01 14:33:07 +08:00
parent b687ab30ed
commit 60be4f12b7
4 changed files with 25 additions and 13 deletions

View file

@ -62,7 +62,9 @@ const projectPath = path.join(__dirname, '..', '..', 'client');
app.get('/api/endpoints', function (req, res) { app.get('/api/endpoints', function (req, res) {
const azureOpenAI = !!process.env.AZURE_OPENAI_KEY; const azureOpenAI = !!process.env.AZURE_OPENAI_KEY;
const openAI = !!process.env.OPENAI_KEY; const openAI = process.env.OPENAI_KEY
? { availableModels: ['gpt-4', 'text-davinci-003', 'gpt-3.5-turbo', 'gpt-3.5-turbo-0301'] }
: false;
const bingAI = !!process.env.BING_TOKEN; const bingAI = !!process.env.BING_TOKEN;
const chatGPTBrowser = !!process.env.CHATGPT_TOKEN; const chatGPTBrowser = !!process.env.CHATGPT_TOKEN;

View file

@ -38,7 +38,7 @@ const router = createBrowserRouter([
const App = () => { const App = () => {
const [user, setUser] = useRecoilState(store.user); const [user, setUser] = useRecoilState(store.user);
const setIsSearchEnabled = useSetRecoilState(store.isSearchEnabled); const setIsSearchEnabled = useSetRecoilState(store.isSearchEnabled);
const setEndpointsFilter = useSetRecoilState(store.endpointsFilter); const setEndpointsConfig = useSetRecoilState(store.endpointsConfig);
useEffect(() => { useEffect(() => {
// fetch if seatch enabled // fetch if seatch enabled
@ -63,7 +63,7 @@ const App = () => {
withCredentials: true withCredentials: true
}) })
.then(({ data }) => { .then(({ data }) => {
setEndpointsFilter(data); setEndpointsConfig(data);
}) })
.catch(error => { .catch(error => {
console.error(error); console.error(error);

View file

@ -10,11 +10,9 @@ import {
DropdownMenuRadioItem DropdownMenuRadioItem
} from '../../ui/DropdownMenu.tsx'; } from '../../ui/DropdownMenu.tsx';
const ModelSelect = ({ model, onChange, models, ...props }) => { const ModelSelect = ({ model, onChange, availableModels, ...props }) => {
const [menuOpen, setMenuOpen] = useState(false); const [menuOpen, setMenuOpen] = useState(false);
models = ['gpt-4', 'text-davinci-003', 'gpt-3.5-turbo', 'gpt-3.5-turbo-0301'];
return ( return (
<DropdownMenu <DropdownMenu
open={menuOpen} open={menuOpen}
@ -36,7 +34,7 @@ const ModelSelect = ({ model, onChange, models, ...props }) => {
onValueChange={onChange} onValueChange={onChange}
className="overflow-y-auto" className="overflow-y-auto"
> >
{models.map(model => ( {availableModels.map(model => (
<DropdownMenuRadioItem <DropdownMenuRadioItem
key={model} key={model}
value={model} value={model}

View file

@ -1,12 +1,23 @@
import { atom, selector } from 'recoil'; import { atom, selector } from 'recoil';
const endpointsFilter = atom({ const endpointsConfig = atom({
key: 'endpointsFilter', key: 'endpointsConfig',
default: { default: {
azureOpenAI: false, azureOpenAI: null,
openAI: false, openAI: null,
bingAI: false, bingAI: null,
chatGPTBrowser: false chatGPTBrowser: null
}
});
const endpointsFilter = selector({
key: 'endpointsFilter',
get: ({ get }) => {
const config = get(endpointsConfig) || {};
let filter = {};
for (const key of Object.keys(config)) filter[key] = !!config[key];
return filter;
} }
}); });
@ -21,6 +32,7 @@ const availableEndpoints = selector({
// const modelAvailable // const modelAvailable
export default { export default {
endpointsConfig,
endpointsFilter, endpointsFilter,
availableEndpoints availableEndpoints
}; };