// Проверка перевода формата Ollama в один вопрос для веб-чата. // Браузер и сам DeepSeek тут не нужны: node test.mjs import assert from 'node:assert/strict'; import { roleOf, flatten, imageOf } from './server.mjs'; // Имя модели → чат DeepSeek. Незнакомое имя не ошибка: чужую программу можно // переключить на DeepSeek, не трогая в ней настройку модели. assert.equal(roleOf('deepseek:search'), 'search'); assert.equal(roleOf('deepseek:VISION'), 'vision'); assert.equal(roleOf('qwen3:8b'), 'think'); assert.equal(roleOf(undefined), 'think'); // У Ollama роли — отдельные сообщения, у веб-чата их нет: склеиваем по порядку, // пустые выбрасываем. Потеря system означала бы потерю всей инструкции. assert.equal( flatten([{ role: 'system', content: 'Отвечай JSON' }, { role: 'user', content: ' где кусачки? ' }, { role: 'user', content: '' }]), 'Отвечай JSON\n\nгде кусачки?'); assert.equal(flatten([]), ''); assert.equal(flatten(undefined), ''); // Картинка приезжает в base64 внутри сообщения — так её кладёт Ollama. const bytes = Buffer.from([0xff, 0xd8, 0xff]); assert.deepEqual(imageOf([{ role: 'user', content: 'что это?', images: [bytes.toString('base64')] }]), bytes); assert.equal(imageOf([{ role: 'user', content: 'без картинки' }]), null); console.log('OK: перевод формата работает');