fix ki modell

This commit is contained in:
nadja
2026-08-26 20:23:52 +02:00
parent 39b6a16598
commit bd1549449c
4 changed files with 53 additions and 42 deletions

View File

@@ -1,11 +1,25 @@
import { SYSTEM_PROMPT } from '../prompts/extractRecipe.js';
const OLLAMA_URL = process.env.OLLAMA_URL || 'http://localhost:11434';
const MODEL = process.env.OLLAMA_MODEL || 'mistral';
const GROQ_API_KEY = process.env.GROQ_API_KEY;
const GROQ_MODEL = process.env.GROQ_MODEL || 'llama-3.1-8b-instant';
const GROQ_URL = 'https://api.groq.com/openai/v1/chat/completions';
export async function isOllamaAvailable() {
export async function isAiAvailable() {
if (!GROQ_API_KEY) return false;
try {
const res = await fetch(`${OLLAMA_URL}/api/tags`, { signal: AbortSignal.timeout(3000) });
const res = await fetch(GROQ_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${GROQ_API_KEY}`,
},
body: JSON.stringify({
model: GROQ_MODEL,
messages: [{ role: 'user', content: 'ping' }],
max_tokens: 1,
}),
signal: AbortSignal.timeout(10000),
});
return res.ok;
} catch {
return false;
@@ -13,28 +27,31 @@ export async function isOllamaAvailable() {
}
export async function extractRecipe(description) {
const response = await fetch(`${OLLAMA_URL}/api/generate`, {
const response = await fetch(GROQ_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${GROQ_API_KEY}`,
},
body: JSON.stringify({
model: MODEL,
system: SYSTEM_PROMPT,
prompt: `Extrahiere ein Rezept aus dieser TikTok-Videobeschreibung:\n\n${description}`,
stream: false,
options: {
num_ctx: 2048,
temperature: 0.1,
},
model: GROQ_MODEL,
messages: [
{ role: 'system', content: SYSTEM_PROMPT },
{ role: 'user', content: `Extrahiere ein Rezept aus dieser TikTok-Videobeschreibung:\n\n${description}` },
],
temperature: 0.1,
max_tokens: 2048,
}),
signal: AbortSignal.timeout(240000),
signal: AbortSignal.timeout(30000),
});
if (!response.ok) {
throw new Error(`Ollama Fehler: ${response.status}`);
const err = await response.text();
throw new Error(`Groq Fehler: ${response.status} - ${err}`);
}
const data = await response.json();
let text = data.response.trim();
let text = data.choices[0].message.content.trim();
if (text.startsWith('```')) {
text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');