2,002 чтения
2,002 чтения

Это то, что происходит, когда вы сохраняете свои ИИ в неправильном месте

к Andrew Prosikhin6m2025/04/05
Read on Terminal Reader

Слишком долго; Читать

Хотите, чтобы ваш чат-бот начал обсуждать тексты Taylor Swift вместо предоставления технической поддержки?
featured image - Это то, что происходит, когда вы сохраняете свои ИИ в неправильном месте
Andrew Prosikhin HackerNoon profile picture

Это часть текущей серии: см. первый пост здесь.

здесь

Принцип ИИ II: загрузка быстро безопасно (если вы действительно должны)

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

Где хранить промпты

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

Option A - Store Prompts в Git

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


Возвращение к Принципу #1: Промпты являются Кодом. Хранение частей вашей кодовой базы за пределами Git возможно и иногда необходимо, но не тривиально. Не принимайте решение о перемещении запросов легко.

Промпты являются Код

Option B - Загрузка с платформы, контролируемой версией

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


В этом случае вам нужно будет загрузить запрос при запуске из источника, контролируемого версией.Я видел, что Confluence и Google Docs успешно используются для этой цели.Многие другие платформы, контролируемые версией, доступны для API.


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


Это некоторые из сценариев, для которых вам нужно планировать:

  • Приложение не может загружать запросы во время запуска. Убиваете ли вы развертывание? Переключитесь на резервную версию запроса?
  • Синтакс промпта становится недействительным после изменения и возвращает неиспользуемые структуры данных. Автоматические тесты не смогли обнаружить проблему, потому что промпты не были загружены во время тестирования. Какую дополнительную инфраструктуру тестирования и мониторинг необходимо добавить, чтобы обнаружить это и минимизировать влияние на клиента?
  • Prompt нужно срочно отключить. Требуется ли это для нового развертывания кода? Или вы создаете отдельный UI для промпта?
  • Syntax, добавленный к документу платформами, такими как Conf
  • Приложение не может загружать прописки во время запуска. Убиваете ли вы развертывание? переключитесь на резервную версию прописки?
  • Синтакса Prompt становится недействительной после изменения и возвращает неиспользуемые структуры данных.Автоматические тесты не смогли обнаружить проблему, потому что просьбы не загружались во время выполнения теста.Какую дополнительную инфраструктуру тестирования и мониторинг необходимо добавить, чтобы обнаружить это и минимизировать влияние на клиентов?
  • Prompt нужно срочно отключить. требует ли это нового развертывания кода? или вы строите отдельный интерфейс пользователя для быстрого развертывания?
  • Синтакс, добавленный в документ такими платформами, как Confluence, может проникнуть в указатель времени запуска, что негативно скажется на его производительности.


    Все эти проблемы могут быть решены на 100%, но легко впасть в мысль о том, что загрузка запроса из Google Doc является тривиальной операцией, которая не повлияет на архитектуру приложений в глубоком смысле.Как я показал выше, загрузка внешнего запроса является серьезным бизнесом, к которому следует подходить с осторожностью для высоконадежных приложений.

    Option C - загрузка с платформы, не контролируемой версией

    Это плохая идея, и вы будете сожалеть об этом.Источник истины для напоминаний должен быть контролируемым версией, иметь соответствующие API и контроль доступа.

    Option D - Гибридный подход

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



    Размышляем о принятии гибридного подхода в таких условиях, как:

    • Смешанное использование: Некоторые запросы требуют частых обновлений экспертами по некодированию доменов, что делает внешнюю загрузку практичной, в то время как другие изменяются только инженерами.
    • Управление рисками: критические запросы (например, ограждения) должны находиться в главном хранилище для максимальной надежности.
    • Смешанное использование: Некоторые напоминания требуют частых обновлений экспертами по некодирующим доменам, что делает внешнюю загрузку практичной, в то время как другие изменяются только инженерами.
    • Смешанное использование
    • Управление рисками: критические напоминания (например, ограждения) должны находиться в главном хранилище для максимальной надежности.Управление рисками
    • Гибкость оценки: Промпты, предназначенные для оценки в стиле ML, могут управляться внешне, чтобы упростить их интеграцию с рамками оценки.
    • Гибкость оценки

      Путешествия на проезжей части

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


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

      Фидддле Guardrails


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

      Загрузка промптов для более легкой оценки

      Teams часто загружают запросы внешне, чтобы интегрировать их с двигателями оценки, такими как ML Flow. Основное предположение, лежащее в основе этой практики, заключается в том, что запросы похожи на модели ML и нуждаются в отдельной статистической оценке. Вы включаете запрос, измеряете балл F1 на выходе (или любую метрику, которую вы предпочитаете) и повторяете.

      ML Поток


      Этот подход иногда действителен — например, на оповещениях о классификации, предназначенных для поведения как модели ML. Но большинство оповещений принципиально отличаются: как описано в Принципе #1: LLM Prompts Are Code. Типичные оповещения более похожи на логику приложений, чем на модели ML. Они более подходят для оценки типа Pass-Fail вместе с окружающим кодом, а не для статистической оценки.

      LLM Prompts Are Code


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


      Учитывайте следующие практики:

      • Внешне следует оценивать только запросы, функциональность которых явно имитирует модели машинного обучения (например, задачи классификации или оценки).
      • Поддерживайте большинство запросов бизнес-логики в основной кодовой базе, используя традиционные методы автоматизированного тестирования, похожие на методы тестирования единиц, а не методы валидации ML.
      • Где необходима внешняя оценка, изолируйте только эти запросы, когда это возможно.
      Только запросы, функциональность которых явно имитирует модели машинного обучения (например, задачи классификации или оценки), должны быть оценены внешне.Поддерживайте большинство бизнес-логических запросов в основной кодовой базе, используя традиционные методы автоматизированного тестирования, аналогичные методам тестирования единиц, а не методам валидации ML.
    • Там, где требуется внешняя оценка, изолируйте только те напоминания, когда это возможно.
    • Исследование случая

      Центральная проблема с запросами на загрузку - это доступность - что делать, если запрос не загружается, когда вы его ожидаете.


      Это то, что случилось с нами в примере Taylor Swift. Ни одно из запросов для приложения технической поддержки не загружалось в результате проблемы с аккредитациями Confluence, включая запрос guardrail. Это каким-то образом не вызвало каких-либо ошибок в рабочем времени, и бот начал реагировать без каких-либо инструкций или ввода (так как вводная строка форматирования была частью запроса). И с чем хочет поговорить LLM OpenAI при отсутствии ввода? Оказывается — слова к «I Want to Break Free» от Queen и различных песен Taylor Swift. К счастью, это было поймано и фиксировано почти сразу, и пользователи наслаждались музыкальной дискуссией — по крайней мере, это то, что я говорю себе.


      Почему произошло это происшествие? были допущены две ошибки:

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


        После инцидента проспект был перенаправлен в Git и добавлена логика исключений, чтобы предотвратить развертывание, если проспект не загрузился или был недействительным.

        Заключение

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


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


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


        Если вам понравилась эта статья, следуйте серии для получения более подробной информации.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks