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

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

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

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

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

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

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

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

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

async def map_reduce_summarize(text: str, chunk_size: int = 4000) -> str:
    chunks = split_text(text, chunk_size)

    # Map: суммаризуємо кожен чанк паралельно
    chunk_summaries = await asyncio.gather(*[
        summarize_chunk(chunk) for chunk in chunks
    ])

    # Reduce: суммаризуємо результати
    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 чанків час майже такий же, як для одного.

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)

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

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

На мобільному — пропонуємо користувачу вибрати тип суммарі перед запуском.

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

Суммаризація 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...».

Стриминг кінцевого суммарі — теж важливий. Користувач видить, як текст з'являється поступово, а не чекає кілька секунд повної відповіді.

Специфіка довгих документів

Втрата середини (Lost in the Middle). Дослідження показали: LLM гірше обробляють інформацію з середини довгого контексту порівняно з початком та кінцем. При Map-Reduce це не проблема — кожен чанк у своєму контексті. При прямотекстній суммаризації — важливо знати про обмеження.

Дублювання в суммарі. При Map-Reduce кінцева суммаризація може повторювати подібні пункти з різних чанків. Явно вказуйте в промпті: «Об'єднай подібні пункти, не повторюй одну думку двічі».

Структурований вивід. Для юридичних та фінансових документів суммарі у форматі JSON з фіксованими полями (parties, obligations, deadlines, key_figures) надійніше вільного тексту. OpenAI response_format: {"type": "json_object"} або Anthropic structured outputs.

Кешування

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

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

Визначення стратегії для різних розмірів документів → серверний pipeline з Map-Reduce → стриминговий API з прогресом → мобільний UI з вибором типу суммарі → кешування → тестування якості на реальних документах.

Базова суммаризація (до 100K токенів) з мобільним UI — 1–2 тижні. Повний pipeline з Map-Reduce, стримингом, кешуванням та кількома типами суммарі — 3–5 тижнів.