AI-сумаризація довгих текстів у мобільному додатку

AI-сумаризація довгих текстів: як вмістити все в контекстне вікно Сумаризація довгого тексту одразу впирається в обмеження контекстного вікна моделі. GPT-4o приймає 128K токенів (приблизно 100K слів), Claude 3 — 200K. На перший погляд цього достатньо, але юридичні договори на 200 сторінок, техніч

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
AI-сумаризація довгих текстів у мобільному додатку
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

AI-сумаризація довгих текстів: як вмістити все в контекстне вікно

Сумаризація довгого тексту одразу впирається в обмеження контекстного вікна моделі. GPT-4o приймає 128K токенів (приблизно 100K слів), Claude 3 — 200K. На перший погляд цього достатньо, але юридичні договори на 200 сторінок, технічні звіти або книги часто перевищують ліміт. Навіть якщо текст вміщується, довгий контекст збільшує вартість і затримку відповіді. Наприклад, типовий договір поставки може містити 150 сторінок дрібного тексту — прямий запит коштуватиме ~$0.03 за обробку, але результат може бути неповним через ефект "втрати середини". Про це говорить дослідження Lost in the Middle — модель гірше запам'ятовує інформацію з середини документа. Тому для великих документів потрібні стратегії декомпозиції.

Ми використовуємо три основні стратегії: пряму сумаризацію, Map-Reduce та Refine. Кожна підходить для свого обсягу та вимог до якості. Нижче — деталі.

Стратегії для текстів різної довжини

Стратегія Об'єм токенів Час Якість Складність
Пряма сумаризація до 80K Низьке Висока Низька
Map-Reduce до 500K+ Низьке (паралельно) Середня Середня
Refine будь-який Високе (послідовно) Дуже висока Висока

Пряма сумаризація — працює для текстів до 50–80K токенів. Відправляємо весь текст одним запитом, просимо сумаризувати. Просто, дешево по реалізації. Обмеження — вартість токенів та latency (модель обробляє великий контекст повільніше).

Map-Reduce — для текстів, що не вміщуються в контекст. Розбиваємо на чанки → сумаризуємо кожен чанк → сумаризуємо сумари:

Приклад реалізації Map-Reduce
async def map_reduce_summarize(text: str, chunk_size: int = 4000) -> str: chunks = split_text(text, chunk_size) chunk_summaries = await asyncio.gather(*[ summarize_chunk(chunk) for chunk in chunks ]) combined = "\n\n".join(chunk_summaries) if count_tokens(combined) > chunk_size: return await map_reduce_summarize(combined, chunk_size) return await summarize_final(combined) 

asyncio.gather — паралельні запити до API для всіх чанків одночасно. Для 10 чанків час майже такий самий, як для одного. Map-Reduce працює в 5–10 разів швидше за Refine.

Refine — сумаризуємо перший чанк, потім уточнюємо сумари з кожним наступним чанком. Підсумкове сумари послідовно збагачується. Якість вища, ніж Map-Reduce для зв'язних наративних текстів, але повільніше — запити послідовні.

Як керувати токенами та уникнути помилок?

Головна помилка — не рахувати токени до відправки. tiktoken (Python) або gpt-tokenizer (JS) дають точний підрахунок:

import tiktoken enc = tiktoken.encoding_for_model("gpt-4o") token_count = len(enc.encode(text)) if token_count < 100_000: return await direct_summarize(text) elif token_count < 500_000: return await map_reduce_summarize(text, chunk_size=8000) else: return await map_reduce_summarize(text, chunk_size=4000) 

Різні типи сумари — різні промпти:

  • Executive summary (для керівників): 3–5 речень, лише ключові рішення та цифри
  • Детальний переказ: структурований список з підзаголовками
  • Список ключових пунктів: булети без зв'язного тексту
  • Відповідь на запитання: «що це за документ і що в ньому потрібно зробити»

На мобільному — пропонуємо користувачеві обрати тип сумари перед запуском. Розробка мобільних клієнтів ведеться на Swift (iOS) та Kotlin (Android).

Як уникнути дублювання в сумаризації?

При Map-Reduce фінальна сумаризація може повторювати схожі пункти з різних чанків. Дублювання усувається явним зазначенням у промпті: «Об'єднай схожі пункти, не повторюй одну думку двічі». Для юридичних та фінансових документів використовуємо structured output у форматі JSON з фіксованими полями (parties, obligations, deadlines, key_figures). Це надійніше за вільний текст.

Як налаштувати сумаризацію для вашого документа

  1. Визначте максимальний розмір контексту моделі (наприклад, 128K для GPT-4o).
  2. Розбийте текст на чанки по 4–8K токенів з урахуванням меж абзаців.
  3. Виберіть стратегію: пряма — для коротких текстів, Map-Reduce — для середніх, Refine — для зв'язних наративів.
  4. Налаштуйте промпти для кожного типу сумари (executive, детальний тощо).
  5. Реалізуйте кешування за хешем документа та відправку прогресу через SSE.

Прогрес сумаризації на мобільному

Сумаризація 100-сторінкового документа займає 15–60 секунд. Без індикатора прогресу — поганий UX. Серверна частина відправляє події через SSE:

event: progress data: {"step": "chunking", "total_chunks": 12, "completed": 0} event: progress data: {"step": "summarizing", "total_chunks": 12, "completed": 4} event: result data: {"summary": "...", "word_count": 450} 

На мобільному клієнті — прогрес-бар з описом кроку, анімований текст «Обробляю сторінки 1–25...».

Кешування

Сумаризація одного документа коштує грошей. Кешуйте результат за хешем вмісту документа + тип сумари. Redis з TTL 7–30 днів — стандартний підхід. Якщо документ змінився — інвалідація кешу за document_id. Завдяки кешуванню економія може сягати до 50% вартості.

Що входить у нашу роботу?

  • Аналіз задачі та вибір стратегії (пряма, Map-Reduce, Refine)
  • Розробка серверного pipeline з інтеграцією моделі
  • Налаштування кешування та стрімінгу
  • Мобільний UI з вибором типу сумари та прогрес-баром
  • Тестування на реальних документах замовника
  • Документація, навчання команди, підтримка 2 тижні після запуску

Ми — команда з 5+ роками досвіду в AI та 30+ успішними проєктами. Гарантуємо якість та конфіденційність.

Етапи та терміни

Етап Термін
Аналіз та проектування 2–3 дні
Реалізація pipeline (Map-Reduce + стрімінг) 1–2 тижні
Мобільний UI та тестування 1–2 тижні
Повний запуск з кешуванням та навчанням 3–5 тижнів

Оцінимо ваш проєкт за 1 день — зв'яжіться з нами для консультації. Отримайте демо за 2–3 дні.