mirror of
https://github.com/JorySeverijnse/ui-fixer-supreme.git
synced 2025-12-06 21:36:57 +00:00
added correct aiProviders.ts
This commit is contained in:
parent
0757265b0d
commit
69368e1461
74
src/lib/aiProviders.ts
Normal file
74
src/lib/aiProviders.ts
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
export type AIProvider = 'pollinations' | 'gpt-oss' | 'custom';
|
||||||
|
|
||||||
|
export interface AIProviderConfig {
|
||||||
|
id: AIProvider;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
endpoint: string;
|
||||||
|
requiresAuth: boolean;
|
||||||
|
apiKey?: string;
|
||||||
|
model?: string;
|
||||||
|
allowsCustomKey?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getGptOssApiKey = (): string | undefined => {
|
||||||
|
return import.meta.env?.VITE_GPT_OSS_API_KEY ||
|
||||||
|
process.env.VITE_GPT_OSS_API_KEY ||
|
||||||
|
process.env.NEXT_PUBLIC_GPT_OSS_API_KEY;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const AI_PROVIDERS: AIProviderConfig[] = [
|
||||||
|
{
|
||||||
|
id: 'pollinations',
|
||||||
|
name: 'Pollinations.ai',
|
||||||
|
description: 'Free, no login required',
|
||||||
|
endpoint: 'https://text.pollinations.ai/openai',
|
||||||
|
requiresAuth: false,
|
||||||
|
model: 'openai',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'gpt-oss',
|
||||||
|
name: 'GPT-OSS-20B',
|
||||||
|
description: 'Alternative model (requires API key)',
|
||||||
|
endpoint: 'https://api.pawan.krd/gpt-oss-20b/v1/chat/completions',
|
||||||
|
requiresAuth: true,
|
||||||
|
get apiKey() {
|
||||||
|
return getGptOssApiKey();
|
||||||
|
},
|
||||||
|
model: 'gpt-oss-20b',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'custom',
|
||||||
|
name: 'Custom API',
|
||||||
|
description: 'Use your own OpenAI-compatible API',
|
||||||
|
endpoint: '',
|
||||||
|
requiresAuth: true,
|
||||||
|
allowsCustomKey: true,
|
||||||
|
model: '',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const getProvider = (id: AIProvider): AIProviderConfig => {
|
||||||
|
const provider = AI_PROVIDERS.find(p => p.id === id) || AI_PROVIDERS[0];
|
||||||
|
|
||||||
|
if (id === 'custom') {
|
||||||
|
const stored = localStorage.getItem(CUSTOM_API_STORAGE_KEY);
|
||||||
|
if (stored) {
|
||||||
|
try {
|
||||||
|
const customConfig = JSON.parse(stored);
|
||||||
|
return {
|
||||||
|
...provider,
|
||||||
|
endpoint: customConfig.endpoint || '',
|
||||||
|
apiKey: customConfig.apiKey || undefined,
|
||||||
|
model: customConfig.model || '',
|
||||||
|
};
|
||||||
|
} catch {
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return provider;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const CUSTOM_API_STORAGE_KEY = 'ai-chat-custom-api';
|
||||||
Loading…
Reference in New Issue
Block a user