Руководство по использованию подсказок Amazon Bedrock для интеграции LLM

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

Основные преимущества Amazon Bedrock

Amazon Bedrock упрощает начальную интеграцию LLM в любое приложение, предоставляя все необходимые основные возможности для начала работы.

Упрощенный доступ к ведущим моделям

Bedrock предоставляет доступ к разнообразному выбору высокопроизводительных базовых моделей от ведущих компаний, таких как AI21 Labs, Anthropic, Cohere, Meta, Mistral AI, Stability AI и Amazon. Это разнообразие позволяет разработчикам выбирать наиболее подходящую модель для своего случая использования и переключаться между моделями по мере необходимости без управления множеством вендоров или API.

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

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

Комплексная защита и конфиденциальность на корпоративном уровне

Bedrock предлагает встроенные функции безопасности, гарантируя, что данные никогда не покидают вашу среду AWS и зашифрованы в пути и в покое. Он также поддерживает соответствие различным стандартам, включая ISO, SOC и HIPAA.

Будьте в курсе последних улучшений инфраструктуры

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

Начало работы с Bedrock

В этом разделе мы будем использовать AWS SDK для Python для создания небольшого приложения на вашем локальном компьютере, предоставляя практическое руководство по началу работы с Amazon Bedrock. Это поможет вам понять практические аспекты использования Bedrock и интеграции его в ваши проекты.

Необходимые условия

  1. У вас есть учетная запись AWS.
  2. У вас установлен Python. Если его нет, получите его, следуя этому руководству.
  3. У вас установлен и правильно настроен Python AWS SDK (Boto3). Рекомендуется создать пользователя AWS IAM, который может использовать Boto3. Инструкции доступны в руководстве по быстрому старту Boto3.
  4. При использовании IAM-пользователя убедитесь, что вы добавили к нему политику AmazonBedrockFullAccess. Вы можете прикрепить политики с помощью консоли AWS.
  5. Запросите доступ к 1 или более моделям на Bedrock, следуя этому руководству.

1. Создание клиента Bedrock

Bedrock имеет несколько клиентов, доступных в AWS CDK. Клиент Bedrock позволяет вам взаимодействовать с сервисом для создания и управления моделями, в то время как клиент BedrockRuntime позволяет вам вызывать существующие модели. Мы будем использовать одну из существующих готовых фундаментальных моделей для нашего учебного пособия, поэтому мы будем работать с клиентом BedrockRuntime.

Python

 

2. Вызов модели

В этом примере я использовал модель Amazon Nova Micro (с modelId amazon.nova-micro-v1:0), одну из самых дешевых моделей Bedrock. Мы предоставим простой запрос, чтобы попросить модель написать нам стихотворение и установим параметры для управления длиной вывода и уровнем креативности (называемым “температурой”), которую модель должна предоставить. Не стесняйтесь экспериментировать с разными запросами и настраивать параметры, чтобы увидеть, как они влияют на вывод.

Python

 

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

Python

 

Обратите внимание, что структуры запросов и ответов немного отличаются у различных моделей. Это недостаток, который мы исправим, используя заранее заданные шаблоны приглашений в следующем разделе. Чтобы экспериментировать с другими моделями, вы можете найти modelId и образцы запросов к API для каждой модели на странице “Каталог моделей” в консоли Bedrock и настроить свой код соответствующим образом. Некоторые модели также имеют подробные руководства, написанные AWS, которые вы можете найти здесь.

3. Использование управления приглашениями

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

Основные преимущества использования заранее заданных приглашений:

  1. Это помогает вашему приложению оставаться организованным по мере его развития и использования различных приглашений, параметров и моделей для различных случаев использования.
  2. Это помогает повторно использовать приглашение, если одно и то же приглашение используется в нескольких местах.
  3. Абстрагирует детали вывода LLM из кода нашего приложения.
  4. Позволяет инженерам приглашений работать над оптимизацией приглашения в консоли, не затрагивая ваш фактический код приложения.
  5. Это позволяет легко экспериментировать, используя различные версии подсказок. Вы можете настраивать входные данные для подсказки, параметры, такие как температура, или даже саму модель.

Давайте попробуем это сейчас: 

  1. Перейдите в консоль Bedrock и нажмите “Управление подсказками” на левой панели.
  2. Нажмите “Создать подсказку” и дайте вашей новой подсказке имя
  3. Введите текст, который мы хотим отправить в LLM, вместе с заполнителем переменной. Я использовал Напишите короткое стихотворение на тему {{topic}}.
  4. В разделе Конфигурация укажите, какую модель вы хотите использовать, и установите значения тех же параметров, которые мы использовали ранее, такие как “Температура” и “Максимальное количество токенов”. Если хотите, можете оставить значения по умолчанию.
  5. Пришло время протестировать! Внизу страницы укажите значение вашей тестовой переменной. Я использовал “Герой разработки программного обеспечения”. Затем нажмите “Запустить” справа, чтобы увидеть, довольны ли вы результатом.

Для справки, вот моя конфигурация и результаты.

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

После публикации нам нужно найти ARN (Amazon Resource Name) версии подсказки, перейдя на страницу вашей подсказки и нажав на только что созданную версию.

Скопируйте ARN этой конкретной версии подсказки, чтобы использовать в вашем коде.

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

Python

 

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

Следующие шаги и лучшие практики

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

Инженерия запроса

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

Выбор модели

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

Тонкая настройка и расширение вашей модели с помощью RAG и агентов

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

Безопасность и ограждения

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

Оптимизация затрат

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

  • Если вы можете предсказать свои трафиковые паттерны, рассмотрите возможность использования Резервируемой пропускной способности для более эффективного и экономичного вывода модели.
  • Если ваше приложение состоит из нескольких функций, вы можете использовать разные модели и подсказки для каждой функции, чтобы оптимизировать затраты на индивидуальной основе.
  • Пересмотрите ваш выбор модели, а также размер подсказки, которую вы предоставляете для каждого вывода. Обычно Bedrock ценится на основе “за токен”, поэтому более длинные подсказки и большие выводы приведут к дополнительным затратам.

Заключение

Amazon Bedrock – мощная и гибкая платформа для интеграции LLM в приложения. Она предоставляет доступ к множеству моделей, упрощает разработку и обеспечивает надежные возможности настройки и безопасности. Таким образом, разработчики могут использовать мощь генеративного искусственного интеллекта, сосредотачиваясь на создании ценности для своих пользователей. В этой статье показано, как начать работу с важной интеграцией Bedrock и поддержанием организованных подсказок.

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

Source:
https://dzone.com/articles/amazon-bedrock-prompts-llm-integration-guide