diff --git a/src/services/covers.js b/src/services/covers.js index 8a85156..caf26fb 100644 --- a/src/services/covers.js +++ b/src/services/covers.js @@ -272,9 +272,9 @@ async function generateCoverViaImagesEndpoint({ prompt }) { */ /** * RouterAI — стабильный провайдер через /responses + image_generation tool. - * Используется как третий fallback когда aiguoguo и Nyxos недоступны. + * quality: 'low' для постов TG (₽0.25), 'medium' для обложек/VK (₽0.84) */ -async function generateCoverViaRouterAI({ prompt }) { +async function generateCoverViaRouterAI({ prompt, quality = 'medium' }) { const base = config.ai.routeraiBaseUrl; const key = config.ai.routeraiApiKey; const model = config.ai.routeraiImageModel || 'openai/gpt-5-image-mini'; @@ -283,7 +283,7 @@ async function generateCoverViaRouterAI({ prompt }) { const res = await axios.post(`${base}/responses`, { model, input: `Use the image_generation tool to create this illustration. Only call the tool, no text.\n\n${prompt.slice(0, 3000)}`, - tools: [{ type: 'image_generation' }], + tools: [{ type: 'image_generation', quality }], tool_choice: { type: 'image_generation' }, }, { headers: { Authorization: `Bearer ${key}` }, diff --git a/src/services/postImages.js b/src/services/postImages.js index d2465d9..03bbb2a 100644 --- a/src/services/postImages.js +++ b/src/services/postImages.js @@ -94,7 +94,7 @@ Strictly: no text, no letters, no logos, no faces of real people.`; const res = await axios.post(`${config.ai.routeraiBaseUrl}/responses`, { model, input: `Use the image_generation tool to create this illustration. Only call the tool, no text.\n\n${prompt.slice(0, 3000)}`, - tools: [{ type: 'image_generation' }], + tools: [{ type: 'image_generation', quality: 'low' }], tool_choice: { type: 'image_generation' }, }, { headers: { Authorization: `Bearer ${config.ai.routeraiApiKey}` }, timeout: 120_000 }); const imgCall = (res.data?.output || []).find(o => o.type === 'image_generation_call');