Я выпустил 15 функций ИИ за 6 месяцев, и это чуть не сломало нас. Вот наша история

Я выпустил 15 функций ИИ за 6 месяцев, и это чуть не сломало нас. Вот наша история

23 июня 2025 г.

Шесть месяцев назад я получилчтоСлавное сообщение. Вы знаете один. Это было от нашего технического директора, светящегося сроком срочности, которая заставляет ваш весь день меняться.

"Team, we need an AI strategy! Let's get a smart summarizer on the dashboard. What's the fastest we can get an MVP out with GPT-4o-mini?"

А что знаешь что? Это было захватывающе. Мандат был прост: «ИИ на все. Теперь». Как разработчик, мой разум уже участвовал в гонках. Я знал, что смогу взломать прототип к концу дня. Несколько строк Python, API -вызов и Presto - маленький брызги магии ИИ.

Это сообщение начало золотую лихорадку. За шесть месяцев, которые последовали, моя команда и я стали фабрикой. Мы отправили интеллектуальный поиск, чат -бот службы поддержки клиентов, инструмент для анализа отзывов пользователей, генератор для маркетингового пуха ... 15 функций. Мы были героями компании, поставляя «инновации» в головокружительном темпе. Управление было в восторге.

Но мы не были инновациями. Мы устанавливали ловушку для наших будущих я.

Мы сделали то, что они просили, но скорость создала гору невидимого технического долга, которая почти остановила всю нашу команду разработчиков. Это история о ошибках, которые мы совершили, и трехэтапную систему, которую мы используем, чтобы выкопать наш выход.

Часть I: Как мы похоронили себя в техническом долге

Этот новый вид технического долга подлый. Это не похоже на грязный код. Это выглядит чисто, просто и современно. Но это была серия временных бомб, каждый из которых тикает благодаря трем молчаливым убийцам.

Ошибка № 1: синдром "Shiny New Toy"

В «Безумном порыве» мы схватили любой инструмент, который был новым или простым. Для суммирования мы пошли с Openai, потому что все говорили об этом. Для чат -бота другая команда уже играла с антропной, поэтому мы использовали это. Для простой функции перевода кто -то нашел какой -то неясный API, который был дешевым. У нас не было плана, нет стратегии - просто стремление к скорости.

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

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

Ошибка № 2: Хрупкие подсказки и «Кого мы виноваты?» Игра

Мы обработали наши подсказки, как будто они были просто еще одной строкой в ​​файле конфигурации. Они не были. Они были хрупкими, прошептали предложения к машине, которую мы не понимали. Для нашего обобщения отзывов у нас была подсказка, которая чувствовала себя как произведение искусства:Summarize the following user feedback into a single, positive-sounding sentence.Это сработало как очарование.

Пока во вторник это не так.

Поставщик API выдвинул молчаливое обновление к своей модели. Без предупреждения наши «положительные» резюме начали звучать ... саркастически. Вся логика нашей функции была сломана, но ни одна строка нашего кода не изменилась. Нет Линтера, нет статического анализа, ничто не могло бы предупредить нас. Это то, что я сейчас называю «семантической зависимостью», и это полный кошмар для отладки.

Клиент будет жаловаться на странное, вне бренда. Что я должен был делать? Вы не можете засунуть точку останова в LLM с закрытым исходным кодом. Вы не видите, что происходит. Моя рутина стала разочаровывающей петлей догадок:

  1. Это подсказка?Хорошо, давайте попробуем переосмыслить его в десятый раз ...
  2. Это ввод пользователя?Может, они напечатали что -то странное ... кромке?
  3. У API просто плохой день?Время снова проверить страницу статуса ...

Это не инженерия. Это современная гадание. Я был на крючке для функции, мозг которой был полным черным ящиком.

Ошибка № 3: Использование ядра для убийства мухи

Этот простой вызов API был пустым чеком, и мы писали их как сумасшедшие. Для одного из наших внутренних инструментов-просто классифицирующие билеты поддержки-мы использовали одну из крупных моделей общего назначения. Это сработало, конечно, но наш облачный счет начал выглядеть как номер телефона.

В конце концов мы поняли, что использовали супер-разветвленный язвук, чтобы убить муху. Гораздо меньшая, тонко настроенная модель с открытым исходным кодом-ход, даже горстка изif/elseЗаявления - были бы в десять раз быстрее и в сто раз дешевле. Но на «Фабрике функции» все, что имело значение, это вытащить его за дверь. В итоге мы получили высокие расходы и вялые производительность для функции, которая никогда не нуждалась в такой большой огневой мощности.

Часть II: выкапывать наш выход

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

Шаг 1: Мы запустили «технические долги»

Перво -наперво: мы не могли все исправить сразу. Мы забронировали комнату для встреч на целый день, поставили все 15 функций ИИ на доску и заставили их на мертвой сетке 2x2.

(Серьезно, нарисуйте это на доске. Это изменение игры. Я рекомендую создать простое изображение сетки 2x2 для вставки здесь)

  • Ось X:Насколько это имеет значение для бизнеса? (Низко до высокого)
  • Ось Y:Насколько это технический беспорядок? (Низко до высокого)

В тот день принес так много ясности.

  • Верхний правый (высокий удар, высокий долг):Например, чат -бот клиента. Это стало нашим непосредственным приоритетом.
  • Нижний правый (низкий удар, высокий долг):Этот глупый генератор «забавного факта» на экране входа в систему. Мы решили убить его. Удаление кода никогда не казалось таким хорошим.
  • Два других квадранта:Мы решили оставить их в покое. Если это не сломано, не исправляйте это.

Шаг 2: Мы построили централизованный "AI Gateway"

Нашим первым крупным проектом было решение проблемы «слишком много API». Мы создали один, простой внутренний сервис, с которым разговаривают все наши приложения. Этот «шлюз» теперь является единственной вещью в нашей системе, которая разговаривает за пределами поставщиков ИИ.

(Простая диаграмма идеальна здесь: [Наше приложение] -> [Наш шлюз AI] -> [openai, антроп и т. Д.])Полем

Это сразу же вернуло нам нашу силу.

  • Контроль:Мы можем поменять поставщиков в одном месте без каких -либо других приложений.
  • Экономия:Мы построили простую систему кэширования прямо в шлюз.
  • Здравомыслие:Все наши журналы, мониторинг и оповещения сейчас находятся в одном, управляемом месте.

Шаг 3: Мы сделали «быстрое библиотеку»

Чтобы остановить кошмар хрупких подсказок, живущих в нашем коде, мы вытащили их всех. Мы создали для них простую библиотеку - это на самом деле просто таблица в базе данных, с историей, отслеживаемой в GIT, - которая хранит каждую подсказку, которую мы используем.

Теперь наши приложения просто попросят библиотеку правильного подсказки, прежде чем позвонить. Это, наконец, отделяет «что сказать» от «Как это сказать». Наши менеджеры по продуктам теперь могут настроить и тестировать подсказки на содержание своего сердца, и им не нужно подавать инженерный билет, чтобы сделать это.

Это о длинной игре

Послушайте, давление, чтобы «добавить AI» ко всему, не уходит. Но у нас есть выбор. Мы можем продолжать хлеить функции вместе с API, которые мы не контролируем, создавая будущее продуктов, которые являются дорогими и невозможными для поддержания.

Или мы можем сделать настоящую, иногда медленную работу.

Наше новое правило простое: мы судим каждую новую функцию не только о том, что оно может сделать, но и на ееДолгосрочная стоимость владения.Благодаря нашему долгу и построив эти уровни управления, мы перестали быть заказами на фабрике. Мы вернулись к тому, чтобы быть инженерами.

Игра не только ос использованиемАй Это овладениеВаш стек ИИ. Давайте прекратим кормить фабрику и начнем строить вещи, которые длится.

Итак, какой худший технический долг AI вы наткнулись? Я хочу услышать ваши истории войны в комментариях.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE