Введение
Предварительные условия
Целевой технологический стек
Развертывание
Полезные команды CDK
Структура кода
Настройте чат-бота, используя свои собственные данные
Это приложение GenAI ChatBot было создано с помощью Amazon Bedrock, который включает в себя базу знаний, агент и дополнительные бессерверные решения AWS GenAI. Предоставленное решение демонстрирует чат-бота, который использует свое понимание инстансов EC2 и цен на инстансы EC2. Этот чат-бот служит иллюстрацией возможностей Amazon Bedrock по преобразованию естественного языка в запросы Amazon Athena, а также по обработке и использованию сложных наборов данных. Инструменты с открытым исходным кодом, такие как LLamaIndex, используются для расширения возможностей системы по обработке и поиску данных. В решении также сделан упор на интеграцию нескольких ресурсов AWS. Эти ресурсы включают Amazon S3 для хранения данных, базу знаний Amazon Bedrock для облегчения извлечения дополненной генерации (RAG), агент Amazon Bedrock для выполнения многоэтапных задач между источниками данных, AWS Glue для подготовки данных, Amazon Athena для выполнения эффективных запросов, Amazon Lambda для управлять контейнерами и Amazon ECS для контроля за контейнерами. Совместное использование этих ресурсов позволяет чат-боту эффективно извлекать и администрировать контент из баз данных и документов, тем самым демонстрируя возможности Amazon Bedrock в разработке продвинутых приложений чат-бота.
Докер
AWS CDK Toolkit 2.114.1+, установлен и настроен. Дополнительную информацию см. в разделе «Начало работы с AWS CDK» документации AWS CDK.
Python 3.11+, установлен и настроен. Дополнительную информацию см. в разделе «Руководство для начинающих»/загрузка в документации Python.
Активная учетная запись AWS
Учетная запись AWS, загруженная с помощью AWS CDK в us-east-1 или us-west-2. Включите доступ к модели Claude и модели Titan Embedding в сервисе Bedrock.
Амазонка
Amazon OpenSearch без сервера
Amazon ECS
Клей AWS
AWS Лямбда
Амазонка S3
Амазонка Афина
Эластичный балансировщик нагрузки
Чтобы запустить приложение локально, сначала добавьте файл .env в папку «code/streamlit-app», содержащий следующее:
ACCOUNT_ID = <ID вашей учетной записи>AWS_REGION = <Ваш регион>LAMBDA_FUNCTION_NAME = ignoreAgentLambda # Устанавливает имя для лямбда-функции, вызываемойstreamlit для ответа. В настоящее время вызывает агент.
Файл cdk.json
сообщает набору инструментов CDK, как выполнять ваше приложение.
Этот проект настроен как стандартный проект Python. Процесс инициализации также создает виртуальную среду внутри этого проекта, хранящуюся в каталоге .venv
. Для создания virtualenv предполагается, что на вашем пути есть исполняемый файл python3
(или python
для Windows) с доступом к пакету venv
. Если по какой-либо причине автоматическое создание virtualenv не удалось, вы можете создать virtualenv вручную.
Чтобы вручную создать виртуальную среду в MacOS и Linux:
$ python3 -m венв .venv
После завершения процесса инициализации и создания виртуального окружения вы можете использовать следующий шаг для активации вашего виртуального окружения.
$ источник .venv/bin/activate
Если вы используете платформу Windows, вы должны активировать virtualenv следующим образом:
%.venvScriptsactivate.bat
После активации virtualenv вы можете установить необходимые зависимости.
$ pip install -r требования.txt
Чтобы добавить дополнительные зависимости, например другие библиотеки CDK, просто добавьте их в файл setup.py
и повторно запустите команду pip install -r requirements.txt
.
На этом этапе вы можете синтезировать шаблон CloudFormation для этого кода.
$ cdk синтезатор
Чтобы добавить дополнительные зависимости, например другие библиотеки CDK, просто добавьте их в файл setup.py
и повторно запустите команду pip install -r requirements.txt
.
Вам нужно будет запустить его, если вы впервые запускаете cdk в определенной учетной записи и регионе.
$ cdk загрузочный файл
После загрузки вы можете приступить к развертыванию cdk.
$ cdk развернуть
Если вы развертываете его впервые, процесс создания нескольких образов Docker в ECS (Amazon Elastic Container Service) может занять примерно 30–45 минут. Пожалуйста, будьте терпеливы, пока все не будет завершено. После этого начнется развертывание стека чат-бота, что обычно занимает около 5-8 минут.
После завершения процесса развертывания вы увидите выходные данные cdk в терминале, а также сможете проверить статус в консоли CloudFormation.
Вы можете протестировать агент в консоли AWS или через URL-адрес приложения с потоковым освещением, указанный в выходных данных стека чат-бота в CloudFormation.
Чтобы удалить компакт-диск после завершения его использования и избежать будущих затрат, вы можете либо удалить его через консоль, либо выполнить следующую команду в терминале.
$ cdk уничтожить
Вам также может потребоваться вручную удалить корзину S3, созданную cdk. Обязательно удалите все сгенерированные ресурсы, чтобы избежать затрат.
cdk ls
выводит список всех стеков в приложении
cdk synth
генерирует синтезированный шаблон CloudFormation
cdk deploy
разверните этот стек в своей учетной записи/регионе AWS по умолчанию
cdk diff
сравнить развернутый стек с текущим состоянием
cdk docs
открыть документацию CDK
cdk destroy
dstroys один или несколько указанных стеков
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
Чтобы интегрировать свои пользовательские данные для развертывания решения, следуйте этим структурированным рекомендациям, адаптированным к вашим требованиям:
Найдите каталог assets/knowledgebase_data_source/
.
Поместите свой набор данных в эту папку.
Откройте файл cdk.json
.
Перейдите к полю context/configure/paths/knowledgebase_file_name
и обновите его соответствующим образом.
Кроме того, измените поле bedrock_instructions/knowledgebase_instruction
в файле cdk.json
, чтобы точно отразить нюансы и контекст вашего нового набора данных.
В каталоге assets/data_query_data_source/
создайте подкаталог, например tabular_data.
Поместите свой структурированный набор данных (допустимые форматы включают CSV , JSON , ORC и Parquet ) в эту вновь созданную подпапку.
Если вы подключаетесь к существующей базе данных , обновите функцию create_sql_engine()
в code/lambda/action-lambda/build_query_engine.py
чтобы подключиться к вашей базе данных.
Обновите поле context/configure/paths/athena_table_data_prefix
файла cdk.json
, чтобы оно соответствовало новому пути к данным.
Пересмотрите code/lambda/action-lambda/dynamic_examples.csv
, включив новый текст в примеры SQL, соответствующие вашему набору данных.
Измените code/lambda/action-lambda/prompt_templates.py
чтобы отразить атрибуты ваших новых табличных данных.
Измените поле context/configure/bedrock_instructions/action_group_description
файла cdk.json
, чтобы прояснить назначение и функциональность лямбды действия, адаптированной для вашего набора данных.
Отразите новые функциональные возможности вашего лямбда-действия в файле assets/agent_api_schema/artifacts_schema.json
.
В файле cdk.json
в context/configure/bedrock_instructions/agent_instruction section
предоставьте подробное описание предполагаемой функциональности и цели разработки агента Amazon Bedrock с учетом новых интегрированных данных.
Эти шаги предназначены для обеспечения плавного и эффективного процесса интеграции, что позволит вам эффективно развернуть решение с вашими индивидуальными данными.