Этот репозиторий проводит пример кода, который поддерживает код RE: Inforce 2024 с идентификатором сеанса DAP341. Код в этом хранилище преднамеренно прост в оптимизации для читаемости во время сеанса и не предназначен для использования в производственных настройках.
Целью кода в этом репозитории является продемонстрирование функционального ядра чат -бота из поиска дополненного генерации (RAG), при этом выделяя некоторые из соображений защиты данных, относящихся к генеративным рабочим нагрузкам ИИ в целом.
Если вы хотите развернуть вариант использования в стиле rag chatbot с AWS в производстве, рассмотрите один из следующих вариантов:
Этот репозиторий содержит серию «сценарий питона», которые можно выполнить, чтобы продемонстрировать серию идей. Сценарии пронумерованы, потому что при выполнении последовательно они рассказывают историю о том, как работает тряпичный чат-бот, и как данные могут быть защищены в рамках рабочей нагрузки на основе Геная. Тем не менее, все сценарии являются автономными и идентифицирующими и не нужно запускать последовательно.
Некоторые из сценариев Python, предоставленных здесь, должны быть изменены перед тем, как они запускаются. Сценарии хранятся здесь точно так же, как они показаны в презентации Re: Inforce для последовательности. Случаи, когда вы должны обновить скрипт, аннотированы #UPDATE_TO_RUN_YOURSELF .
Ресурсы AWS, необходимые для запуска примеров Python, например, индекс Amazon Kendra, примеры данных и т. Д., Может быть предоставлен пользователем этого репозитория, но ниже приведены инструкции о том, как могут быть созданы эти ресурсы.
Основными ресурсами AWS, которые необходимо создать и ссылаться на сценарии Python, являются индекс Amazon Kendra и сопровождающий источник данных Kendra, который указывает на данные на ведре Amazon S3. Обратите внимание, что индекс Amazon Kendra имеет негласенную стоимость, и следует позаботиться о том, чтобы понять эти затраты, прежде чем вы разверните это решение.
Код, предоставленный в этом хранилище, предназначен для дополнения к развертыванию генеративного строителя приложений для ИИ на AWS. Если вы развернете генеративное создание приложений для AI на AWS и приходите к развертыванию развертывания «текстовое» варианта использования с включенной опцией «RAG», для вас может быть создан индекс Kendra, как показано в следующем разделе:
Развернуть генеративный строитель приложений AI на решении AWS в соответствии с руководством по развертыванию.
Поскольку это связано с защитой данных, рассмотрите возможность развертывания решения с помощью опции VPC, которая минимизирует трафик по сравнению с общедоступным Интернетом, используя конечные точки VPC.
После развертывания панели управления развертыванием вы сможете развернуть вариант использования.
При развертывании варианта использования выберите опцию text . В разделе Select knowledge base выберите yes », выберите Kendra в качестве базы знаний, и, если у вас еще нет индекса Kendra, выберите no , чтобы: «Есть ли у вас существующий индекс Кендры?» создать один для вас. Все остальные значения по умолчанию в порядке, но отрегулируйте, если/по мере необходимости для удовлетворения ваших потребностей.
После того, как ваш генеральный застройщик приложений для ИИ будет развернут, у вас будет индекс Amazon Kendra. Теперь вам нужно добавить в этот индекс источник данных Kendra. Во-первых, создайте или повторно используйте существующее ведро Amazon S3 для хранения данных. Загрузите содержимое каталога data , а также src/kendra-acl.json в этом репозитории в это ведро S3 так, чтобы результирующая структура выглядит следующей:
engineering/rootrunner3k-techspecs.txt
wiki/ecorobopotato.txt
kendra-acl.json
Перейдите к своему индексу Amazon Kendra в консоли управления AWS и выберите опцию Add Data Sources . Выберите опцию Amazon S3 connector . Дайте источнику данных имя. Создайте роль IAM или используйте существующий по желанию. В Configure sync settings введите местоположение своего ковша S3, установите файл kendra-acl.json в настройке Access control list configuration file location , разверните Additional configuration и добавьте engineering и marketing в качестве префиксов, которые должны быть индексированы. Все другие значения по умолчанию достаточно для создания и развертывания вашего источника данных Kendra. После создания источника данных вы должны инициировать операцию sync источника данных хотя бы один раз и дождаться завершения этой синхронизации, прежде чем запустить какие -либо сценарии Python.
Прежде чем вы сможете вызвать какие -либо модели Amazon Bedrock, вы должны включить доступ к модели. В этом хранилище используется сонет Claude 3, поэтому, по крайней мере, эта модель должна быть включена.
Чтобы конкретно запустить файл Python CloudWatch, необходимо включить журнал вызова модели Amazon Bedrock, в частности, с пунктом назначения журналов Amazon CloudWatch.
В рамках этого процесса вы создадите группу журналов CloudWatch, которая должна быть обновлена в сопровождающем скрипте Python.
Чтобы запустить сценарии Python, связанные с Guardrails, вы должны создать ограждение по породе. Чтобы сделать это с помощью консоли управления AWS, перейдите к сервису Amazon Bedrock и выберите раздел Guardrails. Выберите Create guardrail . Дайте ему имя и установите его по умолчанию или любые варианты, которые вы предпочитаете. Тем не менее, убедитесь, что в разделе Add sensitive information filters вы добавляете Address PII и выбираете Mask в качестве поведения ограждения. Это гарантирует, что ваш ограждение будет воспроизводить поведение, которое предназначено для продемонстрирования в сценариях Python в этом проекте.
Файлы разметки, изображения и файл кода Python в каталоге src предназначены для просмотра и выполнения в порядке, указанном в схеме нумерации. Следующим образом является объяснением каждого файла, чтобы помочь читателю через намерение презентации, которая сопровождает эти образцы кода.
Дает основной момент этих фрагментов кода, который состоит в том, чтобы показать вам очень упрощенный код Python, который читается и демонстрирует, как RAG работает на базовом уровне, а также выделяет соображения защиты данных для рабочей нагрузки Genai более широко.
Изображение, используемое для представления условного продукта и организации, чьи данные мы используем. Данные преднамеренно абсурден, так что LLMS не будет случайным образом иметь никаких учебных данных, связанных с этим условным продуктом или организацией. Однако, поскольку этот сопровождающий репозиторий в настоящее время является открытым исходным кодом, возможно, что LLM может в конечном итоге использовать этот репозиторий в качестве источника обучающих данных, что в конечном итоге может сломать это предположение!
Просто показывает содержимое ведра Amazon S3, которое мы настроили, которое содержит наши исходные данные. Он также подчеркивает тип шифрования для этих данных на S3, чтобы подчеркнуть важность шифрования данных в состоянии покоя.
Распечатает некоторую основную информацию о нашем индексе Amazon Kendra, чтобы представить концепцию Kendra и о том, как она может выполнять семантические поиски по сравнению с нашими источниками данных.
Демонстрирует простой вызов API retrieve против нашего индекса Kendra, который извлекает контекст на основе вопроса, который мы задаем.
Называет Amazon Bedrock и задает вопрос, не связанный с нашими условно -проприетарными данными. Это предназначено для того, чтобы продемонстрировать, как LLM может ответить на многие вопросы о вещах, которые общедоступны, потому что LLM часто обучаются в отношении огромных объемов данных, соскобавшихся из открытого Интернета.
Называет Bedrock и задает вопрос о наших проприетарных данных. Демонстрирует, как LLM не может ответить на вопросы о данных, которые являются собственными и не были частью его набора данных.
Сначала звонит Кендре получить соответствующий контекст из наших проприетарных данных, а затем использует этот контекст при вызове LLM в Bedrock Amazon. Этот шаблон называется поисковым добытым поколением, или тряпкой.
Добавляет в список управления доступом в вызове Amazon Kendra. Поскольку нашей «маркетинговой» группе не разрешается получить доступ к документу технических спецификаций от Kendra, наш ответ не включает подробную информацию о контенте, которые маркетинг не разрешается просмотреть. Это демонстрирует, как мы можем достичь авторизации на уровне документов при использовании подхода на основе RAG. Стоит отметить, что если вы вместо этого используете свои проприетарные данные для выполнения точной настройки или продолжения предварительного обучения для настройки LLM, вы теряете эту способность выполнять мелкозернистое разрешение на уровне документа; Ваши пользователи либо имеют доступ к этой индивидуальной модели, либо нет.
Выполняет тряпичный запрос, который включает в себя конкретный адрес. Но, возможно, мы не хотим, чтобы адреса или другие типы PII или чувствительного/вредного контента были включены в наш чат -бот ...
Просто перечисляет наши некоторые из атрибутов предварительно обработанного Amazon Bedrock Guardrail, которые мы будем использовать на следующем шаге. В частности, мы видим, что наш Guardrail отредактирует типы данных.
Выполняет тот же вызов на основе тряпки, что и 09_Rag_Address.py, но добавляет в ограждение по породе как часть вызова к Bedrock. Это, в свою очередь, отредактирует конкретный адрес PII данных из ответа.
Перечисляет 3 недавних экземпляра Cloudtrail, вызывая Bedrock. Это просто демонстрирует, как CloudTrail может использовать B для аудита использования сервиса Amazon Bedrock. Другие сервисы AWS также генерируют события CloudTrail, и эти данные могут использоваться для аудита и защиты ваших ресурсов AWS.
Перечисляет 3 недавние журналы вызов модели CloudWatch. Это демонстрирует, как ваши данные могут быть включены в журналы вызова модели CloudWatch. Поэтому, если вы включите журналы вызова моделей, вы должны защитить их с тем же уровнем ухода, что вы защищаете сам источник данных.
После запуска сценариев Python вы будете руководствоваться некоторыми примерами, которые демонстрируют соображения защиты данных для генеративных рабочих нагрузок искусственного интеллекта. Некоторые из ключевых выпусков:
Основы защиты данных все еще применяются.
Генеративный ИИ представляет некоторые новые соображения
Смотрите Anploying для получения дополнительной информации.
Эта библиотека лицензирована по лицензии MIT-0. Смотрите файл лицензии.