Навайбкодил приложение по вечерам! 50К строк за 4 месяца
Навайбкодил приложение по вечерам! 50К строк за 4 месяца
00:00 Введение
• Автор создал приложение для Mac за четыре месяца.
• Приложение называется «Саммит Но» и доступно в App Store.
• Для разработки потребовались знания в области компьютерных наук.
00:44 Проблема менеджера
• Приложение основано на проблеме менеджера, который проводит много времени на звонках.
• Важно запоминать и отслеживать важные моменты разговоров.
• Ручная запись заметок не всегда удобна во время напряжённых разговоров.
02:20 Эксперименты с ИИ
• Автор экспериментировал с системами, которые записывают и анализируют разговоры.
• Проблема: системы привязаны к конкретным приложениям и используют облачные модели, которые могут быть запрещены работодателем.
• Решение: создание локального приложения для записи и обработки звука.
04:04 Начало разработки
• Автор начал с выбора проблемы, в которой мало разбирается.
• Разработка велась по вечерам после работы, что ограничивало время.
• Первый месяц ушёл на обвязку и ядро приложения.
06:04 Проблемы с записью звука
• Стандартная функция macOS для записи звука и видео с экрана не подходила.
• Необходимо было записывать только звук, а не звук и видео.
• После нахождения примера готового приложения проблема была решена.
07:48 Проблемы с транскрибацией
• Звук с наушников и экрана записывался в разных форматах, что мешало транскрибации.
• Использовалась библиотека Sper для перевода звука в текст.
• Возникали проблемы с памятью, которые требовали дополнительного времени для решения.
09:21 Использование локальной ИИ-модели
• После решения проблем с памятью автор рассматривал возможность использования локальной ИИ-модели.
• Рассматривалось приложение «О-Лама» для запуска моделей и предоставления серверного API.
10:16 Проблемы с фреймворками
• Автор решил интегрировать LLM в своё приложение, чтобы избежать необходимости устанавливать дополнительные приложения.
• Использовал библиотеку Llama C++ для запуска LLM-совместимых моделей из C++.
• Возникли конфликты из-за использования общей базовой библиотеки GGML, которая не была версирована отдельно.
11:59 Переход на динамические библиотеки
• Отказался от использования фреймворков и перешёл на динамические библиотеки.
• Большинство кода написал Клод, автор добавил лишь небольшую часть.
12:35 Проблемы с загрузкой данных в LLM
• Данные нужно загружать частями, а не одним сообщением, даже если контекст большой.
• Возникла проблема с логит-токенами: их нужно писать после каждого сообщения, а не в конце батча.
14:33 Решение проблем с логит-токенами
• Нашёл пример в репозитории C++, который помог решить проблему.
• Переписал код на Swift для корректной работы с батчами.
15:30 Работа с состояниями и реактивностью
• Использовал реактивность Swift UI для обновления интерфейса.
• Разработал систему состояний для документа, включая новое состояние, состояние записи и транскрипации.
17:24 Рефакторинг и проверка кода
• Клод генерировал документы рефакторинга, которые помогали проверять код.
• Иногда Клод не выполнял работу должным образом, но после итераций проблема была решена.
18:13 Разделение состояния
• Разделил состояние на динамическое, сессионное и персистентное.
• После сборки ядра стало проще добавлять новые функции.
19:07 Добавление новой функции
• Пользователь предложил добавить поиск по транскрипту.
• Клод быстро создал решение, которое было улучшено автором.
20:03 Ограничения автора
• Автор не успевал следить за всем контекстом из-за дополнительной работы.
• Сайт был сгенерирован Клодом, но требовал доработки.
22:00 Подготовка к релизу
• Написание приложения оказалось проще, чем его упаковка и подготовка к релизу.
• Необходимо было упаковать брендинг, сайт, документацию и подготовить сообщения.
22:08 Проблемы с релизом приложения
• Приложение разрабатывалось три месяца, а подготовка к релизу заняла два месяца.
• Автор написал пост на LinkedIn, но приложение для новых пользователей не работало.
• Проблема была в сломанной схеме данных из-за первичных ключей.
23:05 Ответственность за ошибку
• Автор не протестировал приложение для новых пользователей.
• Ошибка была его собственной, а не результатом работы LLM.
• Новый релиз был проверен App Store и выпущен.
24:57 Уроки и выводы
• LLM — хороший инструмент для опытных разработчиков, но требует смены парадигмы мышления.
• За короткий срок создаётся много кода, который может быть низкого качества.
• Скорость разработки достигается за счёт срезания углов в других местах.
25:46 Ограничения LLM
• LLM подходит для веб-сервисов, но не для сложных мобильных приложений.
• Без визуальной обратной связи LLM плохо справляется с мелкими изменениями.
• Иногда автор жалел токенов на мелкие изменения.
26:46 Анонс приложения
• Автор предлагает своё приложение для менеджеров и консультантов.
• Приложение позволяет сохранять звонки на Mac с хорошим объёмом оперативной памяти.
• Первые 30 звонков бесплатны, автор просит оставлять комментарии с замечаниями и предложениями.
27:35 Заключение
• Автор предупреждает, что видео не является площадкой для рекламы конкурентных приложений.
• Благодарит зрителей и прощается.