const http = require('http'); const url = require('url'); const port = process.env.PORT || 3000; const ALEM_BASE_URL = process.env.ALEM_BASE_URL; const ALEM_API_KEY = process.env.ALEM_API_KEY; const ALEM_TEMPLATE_ID = process.env.ALEM_TEMPLATE_ID; async function callAlem(prompt) { const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ALEM_API_KEY}`, }; const sessRes = await fetch(`${ALEM_BASE_URL}/api/v1/open-api/conversation`, { method: 'POST', headers, body: JSON.stringify({ template_id: ALEM_TEMPLATE_ID, title: 'OKTRU', user_id: 'dauren-oktru' }), }); const sessData = await sessRes.json(); const sessionId = sessData.session_id || sessData.data?.session_id; if (!sessionId) throw new Error('Нет session_id'); const sendRes = await fetch(`${ALEM_BASE_URL}/api/v1/open-api/conversation/${sessionId}/send`, { method: 'POST', headers, body: JSON.stringify({ content: prompt, user_id: 'dauren-oktru', model_api_key: ALEM_API_KEY }), }); const text = await sendRes.text(); console.log(`--- Сырой SSE (${text.length} байт) ---`); console.log(text.slice(0, 3000)); let result = ''; for (const line of text.split('\n')) { if (line.startsWith('data:')) { try { const evt = JSON.parse(line.slice(5)); if ((evt.type || evt.event) === 'message_result' && evt.detail?.full_content) result = evt.detail.full_content; } catch {} } } return result || '(пустой ответ)'; } function page(resultBlock, logBlock) { return `
Введите название товара — агент найдёт подходящий код
${resultBlock}