import { SYSTEM_PROMPT } from '../prompts/extractRecipe.js'; const OLLAMA_URL = process.env.OLLAMA_URL || 'http://localhost:11434'; const MODEL = process.env.OLLAMA_MODEL || 'mistral'; export async function isOllamaAvailable() { try { const res = await fetch(`${OLLAMA_URL}/api/tags`, { signal: AbortSignal.timeout(3000) }); return res.ok; } catch { return false; } } export async function extractRecipe(description) { const response = await fetch(`${OLLAMA_URL}/api/generate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: MODEL, system: SYSTEM_PROMPT, prompt: `Extrahiere ein Rezept aus dieser TikTok-Videobeschreibung:\n\n${description}`, stream: false, }), }); if (!response.ok) { throw new Error(`Ollama Fehler: ${response.status}`); } const data = await response.json(); let text = data.response.trim(); if (text.startsWith('```')) { text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, ''); } return JSON.parse(text); }