Перейти к содержимому
Попробуй карты бесплатно0% на первые 3 депозита + бесплатные карты Берем % только за пополнение·10+ US и HK бинов·Facebook, TikTok, Unity, нейронкиЗарегаться

Сравнение 12 ИИ-моделей для создания PWA-приложений

Двенадцать LLM, один промпт: сделать PWA-приложение под оффер. Смотрели на качество кода, сколько пришлось допиливать руками и сколько ушло времени. Облачные модели работали через Opencode, кроме GLM 5.2, GPT 5.6 Sol, а локальные запускались на DGX Spark

Справились девять: DeepSeek V4 Flash, DeepSeek V4 Pro, Kimi 2.7 Code, Claude Sonnet 5, Claude Opus 4.8, GPT 5.6 Sol, локальная Qwen3.6-27 на 27 миллиардов параметров, локальная Qwen3.8 27b официальная и Qwen3.8 27b без цензуры. GPT 5.5 отказался выполнять задачу. GLM 5.2 выдал код, но без ручной доводки он не заработал, локальная Qwen3.6-35b на 35 миллиардов параметров доделала работающее приложение со второго промта.

Ранее мы сравнили, как три нейросети — Kimi, DeepSeek и GLM справляются с переводом и локализацией лендинга под заданное гео: https://cpa.rip/ai/landing-page-adaptation-test/.

Как проводили тестирование

Использовали: DeepSeek V4 Flash, DeepSeek V4 Pro, Kimi 2.7 Code, GLM 5.2, Claude Sonnet 5, Claude Opus 4.8, GPT 5.5 и GPT 5.6 Sol. А также локальные LLM Qwen3.6-27B Dense и Qwen3.6-35b A3B, Qwen3.8 27b официальная и Qwen3.8 27b без цензуры

Каждой модели дали одинаковый рабочий промпт из предыдущего материала о создании PWA-приложения с помощью Claude Sonnet 4.6. Промпт не изменяли и не дополняли.

После завершения генерации проверяли:

  • работоспособность приложения;
  • полноту реализации функционала;
  • соответствие интерфейса требованиям;
  • время выполнения задачи.

Основные выводы

Полностью справились с задачей: DeepSeek V4 Flash, DeepSeek V4 Pro, Claude Sonnet 5, Claude Opus 4.8, Kimi 2.7 Code, GPT 5.6 Sol и Qwen3.6-27B, Qwen3.8 27b официальная и Qwen3.8 27b без цензуры — все девять моделей создали работоспособное PWA-приложение без необходимости доработки.

Частично справился: GLM 5.2 в приложении Zcode отказался делать, но через web-chat сгенерировал основной код, однако не создал файлы проекта и пропустил этап установки WebView. Повторная отправка промта в web-чате уже привела к отказу. Qwen3.6-35b выдал работоспособное приложение после второго промта: «Не работает, проверь и исправь»

Не справились с задачей: GPT 5.5 не стал выполнять задачу, сославшись на ограничения безопасности.

Самой быстрой моделью стал DeepSeek V4 Flash, которому потребовалось около 3 минут на генерацию готового приложения.

Наиболее близкий к оригиналу интерфейс получился у Claude Sonnet 5, Claude Opus 4.8, GPT 5.6 Sol, Qwen3.6-27B и Qwen3.8 27b без цензуры.

Облачные нейросети

МодельВремяРаботоспособностьДоработкиИнтерфейс
DeepSeek V4 Flash3 мин✅Нет⭐⭐⭐
DeepSeek V4 Pro22 мин✅Нет⭐⭐⭐⭐
Claude Sonnet 59 мин✅Нет⭐⭐⭐⭐⭐
Kimi 2.7 Code15 мин✅Нет⭐⭐⭐⭐
GLM 5.230 мин*⚠️ ЧастичноДа⭐⭐⭐⭐
GPT 5.6 Sol18 мин✅Нет⭐⭐⭐⭐⭐
Claude Opus 4.841 мин✅Нет⭐⭐⭐⭐⭐
GPT 5.5—🚫 Отказался——

Локальные LLM на DGX Spark

МодельВремяРаботоспособностьДоработкиИнтерфейс
Qwen3.6-35b (Local LLM)10 мин✅Нет⭐⭐⭐⭐
Qwen3.6-27B (local LLM)16 мин✅Нет⭐⭐⭐⭐⭐
Qwen3.8 27b (local LLM) off.40 мин✅Нет⭐⭐⭐
Qwen3.8 27b (local LLM) unc.96 минут✅Нет⭐⭐⭐⭐⭐

Результаты

GLM 5.2

Время выполнения: около 20 минут + примерно 10 минут ручной доработки.

Модель написала код приложения, однако не создала необходимые файлы проекта. Их пришлось создавать вручную перед запуском по инструкции.

Во время проверки также выяснилось, что GLM пропустил этап установки WebView-приложения на устройство, из-за чего приложение нельзя было считать полностью готовым к использованию без дополнительной доработки.

GLM 5.2 через приложение Zcode отказался выполнять поставленную задачу:

Итоговый результат

GPT-5.5 и GPT-5.6 Sol

GPT-5.5 не стал выполнять задачу по заданному промту, а вот GPT-5.6 Sol успешно сгенерировал полностью работоспособное приложение за 18 минут через Codex. Интерфейс PWA приложения получился максимально схожим с оригиналом.

Kimi 2.7 Code

Время выполнения: около 15 минут.

Kimi полностью выполнил поставленную задачу. Приложение успешно запускалось и работало.

Итоговый результат

Локальные LLM Qwen3.6-27B Dense, Qwen3.6-35b A3B, Qwen3.8 27b официальная и Qwen3.8 27b без цензуры

Все четыре модели справились с поставленной задачей, только Qwen3.6-35b A3B сделала это за 2 промта. Приложения PWA сгенерированные в Qwen3.6-27B Dense, Qwen3.6-35b A3B успешно функционируют на устройстве под управлением Android 16, однако не запускаются на Android 11.

Приложение сгенерированное моделями Qwen3.8 27b официальная и Qwen3.8 27b без цензуры работало и на Android 11. При этом Qwen3.8 27b официальная отказалась создавать копию приложения из Google Play: не сделала оригинальные иконки, а также отказалась добавлять фейковые отзывы и искусственно накрученный рейтинг.

Итоговый результат Qwen3.6-27B Dense

Итоговый результат Qwen3.6-35b A3B

Итоговый результат Qwen3.8 27b официальная

Итоговый результат Qwen3.8 27b без цензуры

Claude Sonnet 5 и Opus 4.8

Обе модели Sonnet 5 и Opus 4.8 успешно справились с поставленной задачей и создали полностью работоспособные PWA-приложения без необходимости ручной доработки. Кроме того, они показали наиболее удачный интерфейс, максимально приближенный к оригинальному приложению.

Главное отличие между моделями — скорость генерации. Claude Sonnet 5 выполнил задачу примерно за 9 минут, тогда как Claude Opus 4.8 потребовалось около 41 минуты, что стало самым продолжительным результатом среди всех протестированных облачных моделей.

Итоговый результат Sonnet 5

Итоговый результат Opus 4.8

DeepSeek V4 Flash и V4 Pro

Сравнение DeepSeek V4 Flash и V4 Pro показало разницу между быстрыми и более мощными моделями. Flash завершил генерацию всего за три минуты, но качество интерфейса оказалось самым слабым среди успешно выполненных проектов. V4 Pro работал почти в семь раз дольше, однако результат получился значительно ближе к оригинальному приложению.

Итоговый результат V4 Flash

Итоговый результат V4 Pro

Промпт для генерации PWA

Pwa prompt english · MDCopyPWA Traffic Arbitrage — Compact Prompt
PARAMETERS
APP_NAME : Generate randomly
SHORT_NAME : Generate randomly
DEVELOPER : SkyNet Entertainment Ltd.
CATEGORY : Casino · Games
LANGUAGE : es
AFFILIATE_LINK : link
RATING : 4.8 | REVIEWS: 12K | DOWNLOADS: 500K+
SIZE : 4.2 MB | AGE: 18+
SPLASH_SECONDS : 10
SCREENSHOT_COUNT: 3

DESCRIPTION: …

REVIEWS (name / date / text):
1: Generate randomly / Generate randomly / Generate randomly
2: Generate randomly / Generate randomly / Generate randomly ?
3: Generate randomly / Generate randomly / Generate randomly

SCREENSHOTS (theme / emoji / bg-color / badge):
1: Slots / ? / dark purple / "⭐️ TOP"
2: Bonus / ? / dark green / "? Bonus"
3: Jackpot / ? / dark orange / "? Jackpot"

ZIP CONTENTS (all files in root, no subfolders)
index.html, app.html, manifest.json, sw.js,
icon-192.png, icon-512.png,
screenshot1.png … screenshot{SCREENSHOT_COUNT}.png

index.html
First lines immediately after <meta charset>:
html<script>
if (window.matchMedia("(display-mode:standalone)").matches || navigator.standalone)
{ document.documentElement.style.cssText="background:#fff;visibility:hidden";
window.location.replace("./app.html"); }
</script>
<style>body{visibility:hidden}html.ready body{visibility:visible}</style>
Page sections (Google Play style):

Sticky header — Google Play logo (4-color SVG) + search/profile icons
App block — 80×80px icon, app name, developer, category, badges
Statistics — star rating ★, downloads, editor's choice medal, age rating
Install button — color #01875f, 100% width, height 40px, border-radius 8px
Progress bar — below the button, hidden by default
Screenshot carousel — 130×230px thumbnails, border-radius 10px, horizontal scroll; show only screenshot1…N
Description — with "More ▾" toggle
Reviews — avatar (first letter), name, date, stars, text
Info grid 2×2 — size / Android version / downloads / developer
Fixed bottom bar — icon + app name + button

Button logic (in-memory variables only, ⛔️ no localStorage/cookies):
jsvar deferredPrompt = null, installed = false, animationPlayed = false;

addEventListener('beforeinstallprompt', e => { e.preventDefault(); deferredPrompt = e; });
addEventListener('appinstalled', () => {
if (animationPlayed) return;
installed = true; deferredPrompt = null;
runInstallAnimation(() => setOpenState());
});

// On "Install" button click:
// • deferredPrompt exists → prompt() → accepted: run animation → setOpenState; dismissed: restore "Install" label
// • no prompt + iOS → show modal with Safari instruction
// • no prompt + not iOS → wait 4s → prompt()
runInstallAnimation(callback):
jsfunction runInstallAnimation(cb) {
if (animationPlayed) { cb?.(); return; }
animationPlayed = true;
// button → spinner + "Installing…", bg #e8f5e9, color #01875f
// progress bar steps: [10, 25, 45, 65, 80, 92, 100] with pauses between
// after reaching 100% → wait 500ms → call cb()
}
setOpenState / openApp:
jsfunction setOpenState() {
installed = true; // in-memory only — do NOT write to localStorage
// both buttons (main + bottom bar) → "✓ Open", onclick = openApp
}
function openApp() { window.location.href = './app.html'; }
End of script:
jsdocument.documentElement.classList.add('ready');
if ('serviceWorker' in navigator) navigator.serviceWorker.register('./sw.js');
// + add ripple animation to all buttons

app.html — Splash Screen + Redirect
Splash screen (white background, all content centered):

icon-512.png — 112×112px, border-radius 24px, box-shadow
App name — 26px, font-weight 400, color #202124
Spinner — border-top-color #01875f
Entrance animation: scale(0.75→1) + opacity(0→1), duration 0.5s
Progress bar — position: fixed; bottom: 0, height 3px, color #01875f; fills evenly over SPLASH_SECONDS seconds, jumps to 100% 400ms before the end

Redirect (fires 300ms after page load):
jsvar TARGET = 'AFFILIATE_LINK';
var host = new URL(TARGET).host, path = TARGET.replace(/^https?:\/\/[^/]+/, '');
var intent = 'intent://' + host + path
+ '#Intent;scheme=https;package=com.android.chrome'
+ ';S.browser_fallback_url=' + encodeURIComponent(TARGET) + ';end';
window.location.href = intent;
setTimeout(() => window.location.replace(TARGET), 1500); // fallback for non-Android

manifest.json
json{
"name": "APP_NAME",
"short_name": "SHORT_NAME",
"start_url": "./index.html",
"scope": "./",
"display": "standalone",
"orientation": "portrait",
"background_color": "#ffffff",
"theme_color": "#01875f",
"icons": [
{"src":"icon-192.png","sizes":"192x192","type":"image/png","purpose":"any"},
{"src":"icon-512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}
]
}
⛔️ Do NOT add a "screenshots" field — Chrome renders them inside the install dialog, which breaks UX.

sw.js
jsconst CACHE = 'app-v1';
const STATIC = [
'./manifest.json', './icon-192.png', './icon-512.png',
...Array.from({ length: SCREENSHOT_COUNT }, (_, i) => `./screenshot${i + 1}.png`)
];

// install → caches.open(CACHE).addAll(STATIC); self.skipWaiting()
// activate → delete old caches; self.clients.claim()
// fetch rules:
// cross-origin request → pass through (do not intercept)
// index.html / app.html / "/"→ network-first; fallback: cache(index.html)
// everything else → cache-first → on miss: fetch → store in cache

Icons (Python Pillow)

icon-192.png — 192×192px
icon-512.png — 512×512px
Background: vertical gradient #1a0a3e → #0d0628
First letter of SHORT_NAME, white, bold, centered


Screenshots (Playwright Chromium)

Generate exactly SCREENSHOT_COUNT files (screenshot1.png … screenshotN.png)
Viewport: 260×460px, save as PNG
Each screenshot structure:

Header — app name + colored badge (from SCREENSHOT_N params)
Center — large emoji ~80px with CSS drop-shadow filter
Bottom panel — background: rgba(0,0,0,0.65) + backdrop-filter: blur; title in #ffd700; description text; 3 decorative emojis; "Play Now" button in #01875f
 
Наш Telegram-канал

Новости арбитража, кейсы и промокоды — обязательно подпишись!

@cparip

Комментарии

Партнёрские программы

Все партнёрки →Все →
VavadaPart Прямой рекламодатель · Бренды: Vavada Casino
0.0Сайт
Бренды: Vavada Casino Сайт
NOVA PARTNERS Прямой рекламодатель · Бренды: ПАНДА, APEX, EVA, KUSH, BANDA, LEEBET
0.0Сайт
Бренды: ПАНДА, APEX, EVA, KUSH, BANDA, LEEBET Сайт
EPS Partners Прямой рекламодатель · Бренды: EpicStar
0.0Сайт
Бренды: EpicStar Сайт
Royal Partners Прямой рекламодатель · Бренды: FLAGMAN, IRWIN, GIZBO, LEX, MONRO, 1GO, STARDA, IZZI, DRIP, LEGZO, VOLNA, JET, FRESH, SOL, ROX, FUGU, IRIS
0.0Сайт
Бренды: FLAGMAN, IRWIN, GIZBO, LEX, MONRO, 1GO, STARDA, IZZI, DRIP, LEGZO, VOLNA, JET, FRESH, SOL, ROX, FUGU, IRIS Сайт
Cake Partners (Traffic Cake) Прямой рекламодатель · Бренды: Twindor, Winnita, VOX
0.0Сайт
Бренды: Twindor, Winnita, VOX Сайт
V.Partners Прямой рекламодатель · Бренды: Vegas, ICE Casino, VERDE Casino, FS Casino, Fiery Play, Slotoro, Hit’N’Spin
0.0Сайт
Бренды: Vegas, ICE Casino, VERDE Casino, FS Casino, Fiery Play, Slotoro, Hit’N’Spin Сайт

Каталог офферов Offers.help

Все офферы →