Как мы создавали расширение Reforge: Глубокое погружение в технологии искусственного интеллекта Reforge с Дэном Волчонком

Автор: Дмитрий Иванов [Команда P9X]

~8 минут чтения

Введение: не просто ещё одна презентация продукта

Я — Дэн, вице-президент по новым продуктам в Reforge. Сегодня я рад провести вас через процесс разработки расширения Reforge — инструмента, предназначенного для плавной интеграции в ваш ежедневный рабочий процесс и упрощения применения экспертных знаний Reforge. Это не рекламная презентация; это взгляд за кулисы эволюции наших технологий, проблем, с которыми мы столкнулись, и ценности, которую мы стремимся обеспечить. Мы рассмотрим конкретные инструменты и дорожную карту, которые привели нас к этому моменту, и изучим будущее направление нашего процесса разработки.

Что такое расширение Reforge?

Демонстрация: как это работает сегодня

Давайте начнём с краткой демонстрации, чтобы вы поняли, что делает расширение Reforge сегодня.

Расширение работает в большинстве популярных браузеров (Chrome, Arc и т. д.) и интегрируется в популярные рабочие инструменты, такие как Google Docs, Notion, Confluence, Coda и другие.

Например, представьте, что вы составляете документ с требованиями к продукту (PRD) в Notion. Щёлкнув по логотипу Reforge, вы вызываете боковую панель, которая предлагает вам подсказки для составления документа.

Расширение может создать черновик PRD, согласованный с процессом 4D-дорожного картирования Reforge, уделяя особое внимание таким элементам, как стратегия, видение, ориентация на клиента и влияние на бизнес. Кроме того, оно может предложить улучшения и показать, как другие решали аналогичные задачи.

Подводя итог, расширение:

  • Создаёт для вас документы, используя фреймворки от экспертов Reforge.
  • Даёт вам обратную связь по составленным документам от контента, созданного экспертами Reforge.
  • Показывает вам, как эксперты Reforge создавали аналогичные документы.

Дорожная карта: от концепции к реальности

Проблема, которую мы стремились решить

Людям нравятся наши курсы Reforge в течение многих лет, но всегда было сложно регулярно применять обширный контент в повседневной работе. Мы запустили Reforge Artifacts, чтобы продемонстрировать реальную работу от лидеров отрасли, надеясь преодолеть этот разрыв. Однако обратная связь указывала на то, что людям всё ещё трудно интегрировать эти знания в свой рабочий процесс.

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

Что строить: расширение Chrome

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

Начальные шаги: отображение релевантных артефактов

Наше путешествие началось с создания расширения Chrome, которое отображало релевантные артефакты на основе истории просмотров. Расширение изучало домены посещённых веб-сайтов за последние 7 или 28 дней, чтобы понять, какие инструменты используют люди.

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

Первый выход: внутренняя панель инструментов Retool

Я создал панель инструментов Retool, которая позволяла пользователям вводить контент из своих документов. Панель инструментов затем искала связанные артефакты.

Моя цель состояла в том, чтобы использовать LLM для генерации структуры как документа пользователя, так и артефакта. Сравнивая структуру документов, я мог видеть, может ли вывод LLM помочь мне переосмыслить структуру документа, чтобы улучшить и оптимизировать его.

Фокус был на быстром создании прототипов и приоритизации вывода, а не на том, как он выглядел.

Мы могли предоставить людям эту внутреннюю панель инструментов, но теперь нам нужно было поместить её обратно в браузер и сделать интерактивной.

Набираем обороты: добавление чата через iFrame

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

Цель состояла в том, чтобы просто имитировать, каково это — иметь собственный интерфейс чата, прежде чем выделять ресурсы для его создания самостоятельно. Делая это, мы поняли, что продукт может быть больше, чем просто аксессуаром для нашего продукта Artifacts, но может стать самостоятельным инструментом, который поможет вам работать лучше.

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

Зелёный свет: создание MVP

После множества тестов и с новым штатным инженером (Эдди Джонстоном) пришло время для реальной работы. Наш план был следующим:

  • Разветвлённые компоненты интерфейса чата Reforge.
  • Разветвлённые конечные точки чата на стороне сервера Reforge.
  • Вход в учётные записи Reforge.
  • Реальное инструментальное обеспечение разработки.
  • Интеграция с Google Docs.
  • Персонализация на основе вашей идентичности в Reforge.
  • Онбординг.

Я остановлюсь здесь, но дорожная карта продолжается в следующем разделе «Как это работает». Как только мы создали MVP, пришло время расширить его возможности и сделать его более умным.

Извлечённые уроки

Цель состояла не только в том, чтобы применить ИИ к Reforge. ИИ — это инструмент, а не стратегия. Вместо этого мы стремились по-настоящему понять основную проблему клиента, а затем использовали этот инструмент для постоянного экспериментирования с решениями. Ваша первая идея редко бывает лучшей. Наш путь иллюстрирует, как разбиение дорожной карты на достижимые цели может заложить основу для значительных достижений.

Как это работает: технология, стоящая за расширением

На пути к более умному расширению: простой RAG

Изначально мы использовали простую настройку RAG (извлечение и генерация) для содержания документа. Процесс был следующим:

  • Извлечение и обработка документов: когда пользователь нажимает «Помогите мне улучшить мой документ», содержимое его документа извлекается с помощью JavaScript. Запрос отправляется на серверную часть Reforge с содержимым документа и типом помощи, которую хочет пользователь.
  • Встраивание и поиск: встраивание выполняется для документа пользователя и его запроса, и выполняется поиск по сходству с использованием этих вложений. Релевантные материалы Reforge находятся в артефактах, руководствах и уроках.
  • Интеграция LLM: как только соответствующие документы найдены, извлекается вся связанная метаданные. Соответствующий материал Reforge и системный запрос отправляются в большую языковую модель (LLM) для генерации предложений.
  • Потоковая передача ответов: ответы затем передаются в расширение пользователя для взаимодействия в реальном времени.

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

Повышение уровня: переход от RAG к CoT (цепочка мыслей)

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

LLM не хватало способности точно определять тип документа и соответствующим образом корректировать свои рекомендации.

  • Таким образом, мы решили явно добавить шаг для классификации документа. Это позволило нам направить LLM по определённому пути, задавая такие вопросы, как: «Что бы предложил эксперт для этого типа документа?» или «Как бы эксперт оценил такой документ?»
  • Мы сгенерировали три различных предложения для каждого документа.
  • Для каждого предложения мы выполняли встраивание предложения и содержимого документа.
  • Затем мы отфильтровали содержимое, чтобы оно соответствовало типу предложения и типу документа.

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

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

Будущая дорожная карта: что дальше

  • Дальнейшие оптимизации, чтобы сделать ответы ещё умнее.
  • Интеграция с Miro и Jira, где, как мы знаем, работает значительная часть нашей клиентской базы.
  • Мы также изучаем способы более плавного внедрения предложений в текстовые редакторы, подобно функциям проверки правописания в Grammarly.
  • … мы увидим!

Что внутри: взгляд на наш стек

Технический обзор

Вы можете найти наш полный технический стек здесь, но для целей этого продукта наш основной стек состоит из:

  • LLM: Open AI.
  • Встраивания: OpenAI для встраиваний, Pinecone для хранения встраиваний.
  • Хранение запросов: LaunchDarkly, Adaline.
  • Аналитика: Segment.
  • Тестирование: Adaline.

Ключевые компромиссы: балансировка задержки, стоимости и качества

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

Задача: тестирование без данных

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

Использование распределения рекомендаций по курсам для оптимизации релевантности

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

Использование количества ссылок на Reforge для оптимизации доверия и достоверности

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

Использование Adaline, чтобы помочь нам стать умнее!

Adaline — это инструмент для хранения подсказок и отправки журналов, позволяющий проводить эксперименты и оценку выходных данных языковой модели (LLM). Он обеспечивает лучшую видимость того, что отправляется в LLM и его ответы. Мы можем использовать это только для членов нашей внутренней команды, но это даёт нам гораздо лучшую видимость того, как работает расширение.

Вопросы и ответы

Какое LLM вы используете?

Я не привязан к какой-либо одной модели. Прелесть этих моделей в их простоте использования — я могу создать набор данных входных данных и проверить выходные данные. Например, я мог бы протестировать его на OpenAI’s 4o, Gemini Pro’s 1.5 и лучшей модели от Anthropic.

Что нужно, чтобы быть AI PM?

Как человек, создающий продукты с использованием ИИ, важно понимать ключевые переменные. К ним относятся задержка, которая влияет на общий отклик и время до первого токена, стоимость, которая может варьироваться в зависимости от качества используемой модели, и само качество, на которое может влиять тип продукта, который вы создаёте, и масштаб, в котором вы работаете.

Помните ли вы свой первый эксперимент с RAG? В чём разница между простым и сложным RAG?

Год назад мы провели наш первый эксперимент. Я создал его в Jupyter Notebook, запросил данные из нашего хранилища данных и записал их в векторную базу данных. Затем мы выполнили встраивание в Jupyter Notebook, классический пример, если вы ищете любой учебник о том, как выполнить RAG.

Чем Reforge отличается от использования ChatGPT?

Мы ограничиваем предложения материалом на Reforge. В отличие от ChatGPT, который генерирует следующий наиболее вероятный токен, расширение Reforge привязывает предложения к материалам Reforge.

Какие инструменты вы используете для аналитики?

Мы используем VKBase для бизнес-аналитики, Segment для сбора данных и Amplitude для аналитики. Эта троица помогает нам визуализировать и анализировать взаимодействие пользователей с расширением, позволяя нам принимать обоснованные решения. Они все подключены к нашему хранилищу данных, Snowflake.

Как вы управляете затратами и рентабельностью инвестиций?

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

Будете ли вы создавать собственное настольное расширение?

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

Какие стратегии сегментирования и ранжирования вы используете в своей векторной базе данных?

Пока мы не использовали ещё очень сложные стратегии, мы разбивали документы на управляемые фрагменты и использовали базовые алгоритмы ранжирования. Есть возможности для улучшения, и это станет направлением работы в ближайшие месяцы.