chatbot-ui/components/setup/api-step.tsx

247 lines
7.3 KiB
TypeScript

import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { FC } from "react"
import { Button } from "../ui/button"
import { useTranslation } from 'react-i18next'
interface APIStepProps {
openaiAPIKey: string
openaiOrgID: string
azureOpenaiAPIKey: string
azureOpenaiEndpoint: string
azureOpenai35TurboID: string
azureOpenai45TurboID: string
azureOpenai45VisionID: string
azureOpenaiEmbeddingsID: string
anthropicAPIKey: string
googleGeminiAPIKey: string
mistralAPIKey: string
groqAPIKey: string
perplexityAPIKey: string
useAzureOpenai: boolean
openrouterAPIKey: string
onOpenrouterAPIKeyChange: (value: string) => void
onOpenaiAPIKeyChange: (value: string) => void
onOpenaiOrgIDChange: (value: string) => void
onAzureOpenaiAPIKeyChange: (value: string) => void
onAzureOpenaiEndpointChange: (value: string) => void
onAzureOpenai35TurboIDChange: (value: string) => void
onAzureOpenai45TurboIDChange: (value: string) => void
onAzureOpenai45VisionIDChange: (value: string) => void
onAzureOpenaiEmbeddingsIDChange: (value: string) => void
onAnthropicAPIKeyChange: (value: string) => void
onGoogleGeminiAPIKeyChange: (value: string) => void
onMistralAPIKeyChange: (value: string) => void
onGroqAPIKeyChange: (value: string) => void
onPerplexityAPIKeyChange: (value: string) => void
onUseAzureOpenaiChange: (value: boolean) => void
}
export const APIStep: FC<APIStepProps> = ({
openaiAPIKey,
openaiOrgID,
azureOpenaiAPIKey,
azureOpenaiEndpoint,
azureOpenai35TurboID,
azureOpenai45TurboID,
azureOpenai45VisionID,
azureOpenaiEmbeddingsID,
anthropicAPIKey,
googleGeminiAPIKey,
mistralAPIKey,
groqAPIKey,
perplexityAPIKey,
openrouterAPIKey,
useAzureOpenai,
onOpenaiAPIKeyChange,
onOpenaiOrgIDChange,
onAzureOpenaiAPIKeyChange,
onAzureOpenaiEndpointChange,
onAzureOpenai35TurboIDChange,
onAzureOpenai45TurboIDChange,
onAzureOpenai45VisionIDChange,
onAzureOpenaiEmbeddingsIDChange,
onAnthropicAPIKeyChange,
onGoogleGeminiAPIKeyChange,
onMistralAPIKeyChange,
onGroqAPIKeyChange,
onPerplexityAPIKeyChange,
onUseAzureOpenaiChange,
onOpenrouterAPIKeyChange
}) => {
const { t } = useTranslation()
return (
<>
<div className="mt-5 space-y-2">
<Label className="flex items-center">
<div>
{useAzureOpenai ? t("setup.azureOpenaiApiKey") : t("setup.openaiApiKey")}
</div>
<Button
className="ml-3 h-[18px] w-[150px] text-[11px]"
onClick={() => onUseAzureOpenaiChange(!useAzureOpenai)}
>
{useAzureOpenai
? "Switch To Standard OpenAI"
: "Switch To Azure OpenAI"}
</Button>
</Label>
<Input
placeholder={
useAzureOpenai ? t("setup.azureOpenaiApiKey") : t("setup.openaiApiKey")
}
type="password"
value={useAzureOpenai ? azureOpenaiAPIKey : openaiAPIKey}
onChange={e =>
useAzureOpenai
? onAzureOpenaiAPIKeyChange(e.target.value)
: onOpenaiAPIKeyChange(e.target.value)
}
/>
</div>
<div className="ml-8 space-y-3">
{useAzureOpenai ? (
<>
<div className="space-y-1">
<Label>{t("setup.azureOpenaiEndpoint")}</Label>
<Input
placeholder="https://your-endpoint.openai.azure.com"
type="password"
value={azureOpenaiEndpoint}
onChange={e => onAzureOpenaiEndpointChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.azureOpenai35TurboId")}</Label>
<Input
placeholder={t("setup.azureOpenai35TurboId")}
type="password"
value={azureOpenai35TurboID}
onChange={e => onAzureOpenai35TurboIDChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.azureOpenai45TurboId")}</Label>
<Input
placeholder={t("setup.azureOpenai45TurboId")}
type="password"
value={azureOpenai45TurboID}
onChange={e => onAzureOpenai45TurboIDChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.azureOpenai45VisionId")}</Label>
<Input
placeholder={t("setup.azureOpenai45VisionId")}
type="password"
value={azureOpenai45VisionID}
onChange={e => onAzureOpenai45VisionIDChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.azureOpenaiEmbeddingsId")}</Label>
<Input
placeholder={t("setup.azureOpenaiEmbeddingsId")}
type="password"
value={azureOpenaiEmbeddingsID}
onChange={e => onAzureOpenaiEmbeddingsIDChange(e.target.value)}
/>
</div>
</>
) : (
<>
<div className="space-y-1">
<Label>{t("setup.openaiOrgId")}</Label>
<Input
placeholder={t("setup.openaiOrgIdOptional")}
type="password"
value={openaiOrgID}
onChange={e => onOpenaiOrgIDChange(e.target.value)}
/>
</div>
</>
)}
</div>
<div className="space-y-1">
<Label>{t("setup.anthropicApiKey")}</Label>
<Input
placeholder={t("setup.anthropicApiKey")}
type="password"
value={anthropicAPIKey}
onChange={e => onAnthropicAPIKeyChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.googleGeminiApiKey")}</Label>
<Input
placeholder={t("setup.googleGeminiApiKey")}
type="password"
value={googleGeminiAPIKey}
onChange={e => onGoogleGeminiAPIKeyChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.mistralApiKey")}</Label>
<Input
placeholder={t("setup.mistralApiKey")}
type="password"
value={mistralAPIKey}
onChange={e => onMistralAPIKeyChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.groqApiKey")}</Label>
<Input
placeholder={t("setup.groqApiKey")}
type="password"
value={groqAPIKey}
onChange={e => onGroqAPIKeyChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.perplexityApiKey")}</Label>
<Input
placeholder={t("setup.perplexityApiKey")}
type="password"
value={perplexityAPIKey}
onChange={e => onPerplexityAPIKeyChange(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label>{t("setup.openrouterApiKey")}</Label>
<Input
placeholder={t("setup.openrouterApiKey")}
type="password"
value={openrouterAPIKey}
onChange={e => onOpenrouterAPIKeyChange(e.target.value)}
/>
</div>
</>
)
}