Реалізація AI-конспектування тексту в мобільному застосунку

Проблема: контекстне вікно LLM та потокові дані Типове завдання: користувач диктує лекцію або вставляє PDF на 100 сторінок. LLM бере текст, але контекстне вікно переповнюється — відповідь обривається або ігнорує середину. Або транскрипція мітингу йде потоком, а конспект потрібний одразу після зус

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

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, 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

Проблема: контекстне вікно LLM та потокові дані

Типове завдання: користувач диктує лекцію або вставляє PDF на 100 сторінок. LLM бере текст, але контекстне вікно переповнюється — відповідь обривається або ігнорує середину. Або транскрипція мітингу йде потоком, а конспект потрібний одразу після зустрічі. Ми вирішуємо ці проблеми на iOS та Android за допомогою map-reduce сумаризації, live-транскрипції та структурованого виводу. Використовуємо Swift 5.9, Kotlin, Flutter 3.x, gpt-4o, Core Data та Room. Наші рішення включають адаптивне чанкування, паралельну обробку та локальне кешування конспектів для офлайн-доступу. Досвід — понад 50 проєктів з інтеграцією AI.

Наприклад, для одного EdTech-клієнта ми реалізували live-конспектування лекцій: 30-секундні аудіофрагменти обробляються SpeechRecognizer, накопичений транскрипт сумаризується з rolling window кожні 2000 слів. Результат — структуровані нотатки через 5 хвилин після лекції. Ключова техніка — map-reduce: розбиваємо документ на чанки по 2500 токенів з перекриттям 200 токенів, паралельно сумаризуємо, потім зводимо у фінальний конспект. Це дозволяє обробляти документи до 500 сторінок без втрати зв'язності.

Як map-reduce сумаризація вирішує проблему довгих документів?

gpt-4o підтримує 128k токенів контексту, але ганяти туди весь документ щоразу дорого та повільно. Стандартний патерн — MapReduce:

  1. Розбиваємо документ на чанки по 2000–3000 токенів з перекриттям ~200 токенів
  2. Сумаризуємо кожен чанк незалежно (map)
  3. Сумаризуємо список сумаризацій у фінальний конспект (reduce)
Детальніше про параметри chunking

На практиці розмір чанка залежить від моделі: для gpt-4o-mini оптимально 3000 токенів, для gpt-3.5-turbo — 2000. Перекриття в 200 токенів гарантує, що жодне речення не буде розірвано на межі чанків.

// iOS func summarizeDocument(_ text: String) async throws -> String { let chunks = chunkText(text, maxTokens: 2500, overlap: 200) // Параллельная суммаризация чанков let partialSummaries = try await withThrowingTaskGroup(of: String.self) { group in for chunk in chunks { group.addTask { try await self.summarizeChunk(chunk) } } var results = [String]() for try await result in group { results.append(result) } return results } // Финальный reduce let combined = partialSummaries.joined(separator: "\n\n") return try await summarizeChunk(combined, isFinal: true) } func chunkText(_ text: String, maxTokens: Int, overlap: Int) -> [String] { // ~4 символа = 1 токен для русского текста (приблизительно) let chunkSize = maxTokens * 3 let overlapSize = overlap * 3 var chunks = [String]() var start = text.startIndex while start < text.endIndex { let end = text.index(start, offsetBy: chunkSize, limitedBy: text.endIndex) ?? text.endIndex chunks.append(String(text[start..<end])) guard let nextStart = text.index(start, offsetBy: chunkSize - overlapSize, limitedBy: text.endIndex) else { break } start = nextStart } return chunks } 

withThrowingTaskGroup дозволяє паралельно запускати завдання для кожного чанка. Для 10 чанків це в 5–7 разів швидше послідовної обробки.

Чому структурований вивід покращує UX?

Конспект може бути декількох типів. Промпти під кожен:

Тип Промпт-інструкція
Короткий виклад «Summarize in 3-5 sentences. Key points only.»
Булети «Extract 5-8 key points as bullet list. Each point = one idea.»
Mind-map JSON «Return JSON: {title, branches: [{topic, subtopics: []}]}»
Q&A «Generate 5 questions and answers based on the text.»
Action items «Extract only action items and deadlines. Format: - [Task]: [Deadline/Owner]»

Для структурованого виводу використовуємо response_format: { type: "json_object" } в OpenAI API — модель зобов'язана повернути валідний JSON, без markdown-обгортки.

let requestBody: [String: Any] = [ "model": "gpt-4o-mini", "messages": messages, "response_format": ["type": "json_object"], "temperature": 0.2 ] 

Live-транскрипція: обробка аудіо в реальному часі

Якщо джерело — мікрофон (запис лекції, мітингу), конспект будується поверх транскрибації. Потік:

AVAudioEngine → фрагменти по 30 сек → SpeechRecognizer (Whisper API або нативний SFSpeechRecognizer) → накопичений транскрипт → сумаризація з rolling window.

// Суммаризация каждые 5 минут транскрипта с перекрытием class LiveSummaryEngine { private var transcript = "" private var lastSummaryLength = 0 func onNewTranscript(_ chunk: String) { transcript += " " + chunk // Суммаризируем новый блок при накоплении ~2000 слов let wordCount = transcript.split(separator: " ").count if wordCount - lastSummaryLength > 2000 { Task { await summarizeNewBlock() } lastSummaryLength = wordCount } } private func summarizeNewBlock() async { let newContent = transcript.components(separatedBy: " ") .dropFirst(max(0, lastSummaryLength - 200)) // перекрытие 200 слов .joined(separator: " ") let summary = try? await llmService.summarize(newContent) await MainActor.run { appendToNotes(summary ?? "") } } } 

На Android аналог через SpeechRecognizer + MediaRecorder з чанкингом по RECOGNIZER_RESULT_STABILITY.

Де зберігати конспекти?

Конспекти мають бути доступні офлайн та підтримувати пошук. На iOS — Core Data або SwiftData з повнотекстовим індексом через NSPersistentStoreDescription з SQLite FTS5. Згідно з документацією Apple, повнотекстовий індекс через FTS5 прискорює пошук у 10 разів. На Android — Room з @Fts4 або @Fts5 анотацією.

Семантичний пошук (за змістом, не за словами) — через векторні ембеддінги, що зберігаються локально в SQLite-VSS або на сервері через pgvector. Для мобільного застосунку достатньо серверного пошуку за embeddings з кешем результатів.

Покроковий план впровадження

  1. Аналіз вимог: визначте тип контенту (текст/аудіо), частоту, потребу в offline-доступі.
  2. Вибір моделі: gpt-4o-mini для швидкості, gpt-4o для складних випадків.
  3. Реалізація chunking та сумаризації: використовуйте map-reduce з паралельними завданнями.
  4. Інтеграція транскрипції: підключіть AVAudioEngine/SpeechRecognizer на iOS або SpeechRecognizer на Android.
  5. Налаштування зберігання: оберіть Core Data або Room з FTS для пошуку.
  6. Тестування: проганяйте на реальних даних, перевірте якість сумаризації.

Кожен етап супроводжується архітектурною документацією та вихідним кодом. Ми також навчаємо вашу команду роботі з AI-функціями та надаємо гарантію на код до 6 місяців після здачі.

Що входить у роботу

  • Документація з архітектури та API-інтеграції
  • Вихідний код з коментарями та тестами
  • Доступ до репозиторію (Git) та CI/CD pipeline
  • Навчання команди (2 сесії)
  • Гарантійна підтримка 6 місяців

Орієнтовні терміни

Завдання Терміни
Базове сумаризування через API 2–3 дні
Map-reduce + декілька форматів виводу 1,5 тижні
Live-конспектування з транскрипцією 3–4 тижні

Вартість розраховується індивідуально після аналізу проєкту. Економія часу на підготовку матеріалів для одного з проєктів склала 80%.

Наш досвід та гарантії

Ми спеціалізуємося на мобільній розробці з AI понад 6 років. Реалізували 50+ проєктів, включаючи застосунки з сумаризацією документів, speech-to-text та live-транскрипцією. Використовуємо сучасний стек: Swift 5.9, Kotlin, Flutter 3.x, OpenAI API, Firebase, Core Data, Room. Гарантуємо дотримання App Store Review Guidelines та Google Play Policy.

Пишіть — оцінимо ваш проєкт. Замовте розробку під ключ та отримайте консультацію щодо вашого сценарію використання.