Вот что происходит, когда вы храните свои подсказки ИИ не в том месте

AI Принцип II: Загружайте Подсказки Безопасно (Если Вам Это Действительно Нужно)

Хотите ли вы, чтобы ваш чат-бот начал обсуждать тексты песен Тейлор Свифт вместо предоставления технической поддержки? Именно это и произошло с нашим чат-ботом, когда мы нарушили вышеописанный принцип. Если вы хотите «разделить» ваше приложение с Тейлор и сделать архитектуру ИИ безопаснее, продолжайте читать. (Извините, фанаты Тейлор!)

Где Хранить Подсказки

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

Вариант A – Хранить Подсказки в Git

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

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

Вариант B – Загружать Подсказки с Платформы с Контролем Версий

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

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

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

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

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

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

Вариант C – Загружать Подсказки с Платформы без Контроля Версий

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

Вариант D – Гибридный Подход

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

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

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

Охранные Подсказки

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

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

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

Загрузка Подсказок для Прощео Оценивания

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

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

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

Рассмотрите следующие практики:

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

Кейс-исследование

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

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

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

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

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

Заключение

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

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

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

Если вам понравился этот пост, следите за серией для получения дополнительных инсайтов.

Перейти к источнику
AI Daily

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *