Download frontend/src/components/LLMSelection/PerplexityOptions/index.jsx from leowuming/rag: direct link, hf CLI and curl.
- Browser
- Download file 2.89 kB
-
https://huggingface.co/spaces/leowuming/rag/resolve/main/frontend/src/components/LLMSelection/PerplexityOptions/index.jsx
- Command line
-
hf download hf://spaces/leowuming/rag/frontend/src/components/LLMSelection/PerplexityOptions/index.jsx
-
curl -L -o index.jsx https://huggingface.co/spaces/leowuming/rag/resolve/main/frontend/src/components/LLMSelection/PerplexityOptions/index.jsx
2.89 kB
| import System from "@/models/system"; | |
| import { useState, useEffect } from "react"; | |
| export default function PerplexityOptions({ settings }) { | |
| return ( | |
| <div className="flex gap-[36px] mt-1.5"> | |
| <div className="flex flex-col w-60"> | |
| <label className="text-white text-sm font-semibold block mb-3"> | |
| Perplexity API Key | |
| </label> | |
| <input | |
| type="password" | |
| name="PerplexityApiKey" | |
| className="border-none bg-theme-settings-input-bg text-white placeholder:text-theme-settings-input-placeholder text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5" | |
| placeholder="Perplexity API Key" | |
| defaultValue={settings?.PerplexityApiKey ? "*".repeat(20) : ""} | |
| required={true} | |
| autoComplete="off" | |
| spellCheck={false} | |
| /> | |
| </div> | |
| {!settings?.credentialsOnly && ( | |
| <PerplexityModelSelection settings={settings} /> | |
| )} | |
| </div> | |
| ); | |
| } | |
| function PerplexityModelSelection({ settings }) { | |
| const [customModels, setCustomModels] = useState([]); | |
| const [loading, setLoading] = useState(true); | |
| useEffect(() => { | |
| async function findCustomModels() { | |
| setLoading(true); | |
| const { models } = await System.customModels("perplexity"); | |
| setCustomModels(models || []); | |
| setLoading(false); | |
| } | |
| findCustomModels(); | |
| }, []); | |
| if (loading || customModels.length == 0) { | |
| return ( | |
| <div className="flex flex-col w-60"> | |
| <label className="text-white text-sm font-semibold block mb-3"> | |
| Chat Model Selection | |
| </label> | |
| <select | |
| name="PerplexityModelPref" | |
| disabled={true} | |
| className="border-none bg-theme-settings-input-bg border-gray-500 text-white text-sm rounded-lg block w-full p-2.5" | |
| > | |
| <option disabled={true} selected={true}> | |
| -- loading available models -- | |
| </option> | |
| </select> | |
| </div> | |
| ); | |
| } | |
| return ( | |
| <div className="flex flex-col w-60"> | |
| <label className="text-white text-sm font-semibold block mb-3"> | |
| Chat Model Selection | |
| </label> | |
| <select | |
| name="PerplexityModelPref" | |
| required={true} | |
| className="border-none bg-theme-settings-input-bg border-gray-500 text-white text-sm rounded-lg block w-full p-2.5" | |
| > | |
| {customModels.length > 0 && ( | |
| <optgroup label="Available Perplexity Models"> | |
| {customModels.map((model) => { | |
| return ( | |
| <option | |
| key={model.id} | |
| value={model.id} | |
| selected={settings?.PerplexityModelPref === model.id} | |
| > | |
| {model.id} | |
| </option> | |
| ); | |
| })} | |
| </optgroup> | |
| )} | |
| </select> | |
| </div> | |
| ); | |
| } | |