244 lines
7.0 KiB
TypeScript
244 lines
7.0 KiB
TypeScript
import { Input } from "@/components/ui/input"
|
|
import { Label } from "@/components/ui/label"
|
|
import { FC } from "react"
|
|
import { Button } from "../ui/button"
|
|
|
|
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
|
|
}) => {
|
|
return (
|
|
<>
|
|
<div className="mt-5 space-y-2">
|
|
<Label className="flex items-center">
|
|
<div>
|
|
{useAzureOpenai ? "Azure OpenAI API Key" : "OpenAI API Key"}
|
|
</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 ? "Azure OpenAI API Key" : "OpenAI API Key"
|
|
}
|
|
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>Azure OpenAI Endpoint</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>Azure OpenAI GPT-3.5 Turbo ID</Label>
|
|
|
|
<Input
|
|
placeholder="Azure OpenAI GPT-3.5 Turbo ID"
|
|
type="password"
|
|
value={azureOpenai35TurboID}
|
|
onChange={e => onAzureOpenai35TurboIDChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Azure OpenAI GPT-4.5 Turbo ID</Label>
|
|
|
|
<Input
|
|
placeholder="Azure OpenAI GPT-4.5 Turbo ID"
|
|
type="password"
|
|
value={azureOpenai45TurboID}
|
|
onChange={e => onAzureOpenai45TurboIDChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Azure OpenAI GPT-4.5 Vision ID</Label>
|
|
|
|
<Input
|
|
placeholder="Azure OpenAI GPT-4.5 Vision ID"
|
|
type="password"
|
|
value={azureOpenai45VisionID}
|
|
onChange={e => onAzureOpenai45VisionIDChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Azure OpenAI Embeddings ID</Label>
|
|
|
|
<Input
|
|
placeholder="Azure OpenAI Embeddings ID"
|
|
type="password"
|
|
value={azureOpenaiEmbeddingsID}
|
|
onChange={e => onAzureOpenaiEmbeddingsIDChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
</>
|
|
) : (
|
|
<>
|
|
<div className="space-y-1">
|
|
<Label>OpenAI Organization ID</Label>
|
|
|
|
<Input
|
|
placeholder="OpenAI Organization ID (optional)"
|
|
type="password"
|
|
value={openaiOrgID}
|
|
onChange={e => onOpenaiOrgIDChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
</>
|
|
)}
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Anthropic API Key</Label>
|
|
|
|
<Input
|
|
placeholder="Anthropic API Key"
|
|
type="password"
|
|
value={anthropicAPIKey}
|
|
onChange={e => onAnthropicAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Google Gemini API Key</Label>
|
|
|
|
<Input
|
|
placeholder="Google Gemini API Key"
|
|
type="password"
|
|
value={googleGeminiAPIKey}
|
|
onChange={e => onGoogleGeminiAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Mistral API Key</Label>
|
|
|
|
<Input
|
|
placeholder="Mistral API Key"
|
|
type="password"
|
|
value={mistralAPIKey}
|
|
onChange={e => onMistralAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Groq API Key</Label>
|
|
|
|
<Input
|
|
placeholder="Groq API Key"
|
|
type="password"
|
|
value={groqAPIKey}
|
|
onChange={e => onGroqAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
|
|
<div className="space-y-1">
|
|
<Label>Perplexity API Key</Label>
|
|
|
|
<Input
|
|
placeholder="Perplexity API Key"
|
|
type="password"
|
|
value={perplexityAPIKey}
|
|
onChange={e => onPerplexityAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
<div className="space-y-1">
|
|
<Label>OpenRouter API Key</Label>
|
|
|
|
<Input
|
|
placeholder="OpenRouter API Key"
|
|
type="password"
|
|
value={openrouterAPIKey}
|
|
onChange={e => onOpenrouterAPIKeyChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|