| import { useState, useCallback } from "react"; |
|
|
| |
| const BACKEND_URL = "https://shantanupathak94-ai-code-editor.hf.space"; |
|
|
| export const PROVIDERS = { |
| GEMINI: "gemini", |
| GROQ: "groq", |
| OPENROUTER: "openrouter" |
| }; |
|
|
| export function useAIService({ initialProvider = PROVIDERS.GEMINI } = {}) { |
| const [activeProvider, setActiveProvider] = useState(initialProvider); |
| const [isLoading, setIsLoading] = useState(false); |
| const [apiKey, setApiKey] = useState(""); |
|
|
| const generate = useCallback(async (userPrompt) => { |
| setIsLoading(true); |
| try { |
| |
| const response = await fetch(`${BACKEND_URL}/ai/generate`, { |
| method: "POST", |
| headers: { "Content-Type": "application/json" }, |
| body: JSON.stringify({ |
| prompt: userPrompt, |
| provider: activeProvider |
| }) |
| }); |
|
|
| if (!response.ok) { |
| const errData = await response.json(); |
| throw new Error(errData.detail || "Backend server error 🥺"); |
| } |
|
|
| const data = await response.json(); |
| setIsLoading(false); |
| |
| |
| return data.files; |
| } catch (error) { |
| setIsLoading(false); |
| throw error; |
| } |
| }, [activeProvider]); |
|
|
| return { |
| generate, |
| isLoading, |
| activeProvider, |
| setActiveProvider, |
| apiKey, |
| setApiKey |
| }; |
| } |