Сегодня геопространственные рабочие процессы обычно состоят из загрузки данных, их преобразования и последующего создания визуальной информации, такой как карты, текст или диаграммы. Генеративный ИИ может автоматизировать эти задачи посредством автономного управления. агенты. В этом посте мы обсудим, как использовать модели фундамента из Amazon Bedrock в качестве агентов для выполнения геопространственных задач. Эти агенты могут выполнять различные задачи и отвечать на вопросы, используя службы определения местоположения, такие как геокодирование, доступные через Amazon Location Service. Мы также делимся примером кода, который использует агент для объединения возможностей Amazon Bedrock с Amazon Location. Кроме того, мы обсуждаем конструктивные соображения, которые были учтены при его создании.
Amazon Bedrock — это полностью управляемый сервис, предлагающий простой в использовании API для доступа к базовым моделям для текста, изображений и встраивания. Amazon Location предлагает API для карт, мест и маршрутизации с данными, предоставленными доверенными третьими сторонами, такими как Esri, HERE, Grab и OpenStreetMap. Если вам нужен полный контроль над своей инфраструктурой, вы можете использовать Amazon SageMaker JumpStart, который дает вам возможность развертывать базовые модели и имеет доступ к сотням моделей.
Обзор решения
В области больших языковых моделей (LLM) агент – это организация, которая может автономно рассуждать и выполнять задачи с помощью LLM. Это позволяет LLM выходить за рамки генерации текста, вести беседы и выполнять задачи, специфичные для предметной области. Чтобы управлять этим поведением, мы используем модели рассуждения. Согласно исследовательской работе Большие языковые модели — это бесполезные рассужденияLLM преуспевают в рассуждениях высокого уровня, несмотря на нехватку знаний.
Мы выбрали Claude 2 в качестве базовой модели Amazon Bedrock с целью создания геопространственного агента, способного решать геопространственные задачи. Общая концепция была простой: думайте как специалист по геопространственным данным. Задача заключалась в написании кода Python для чтения данных, их преобразования и последующей визуализации на интересной карте. Мы использовали шаблон подсказок, известный как Подсказки «Планируй и решай» для этой цели.
Использование стратегии «Планируй и решай» позволяет проводить многоэтапные рассуждения и разрабатывать общий план в качестве первой задачи. Это хорошо подходит для нашего рабочего процесса загрузки, преобразования и визуализации и является высокоуровневым планом, который будет использовать наш агент. Каждая из этих подзадач отправляется Клоду 2 для решения отдельно.
Мы разработали пример задачи по созданию тепловой карты цен Объявления Airbnb в Нью-Йорке. Чтобы спланировать путь выполнения задачи, агенту необходимо понять набор данных. Агенту необходимо знать столбцы в наборе данных и тип данных в этих столбцах. Мы генерируем сводку из набора данных, чтобы агент мог планировать задачу, предоставленную пользователем, в данном случае создавая тепловую карту.
Предварительные условия
Есть несколько предварительных условий для развертывания демо-версии. Вам понадобится доступ к учетной записи AWS с ключом доступа или ролью AWS Identity and Access Management (IAM) с разрешениями на Amazon Bedrock и Amazon Location. Вам нужно будет создать карту, указатель места и ключ Amazon Location API с помощью консоли Amazon Location. Вам также понадобится доступ к локальной или виртуальной среде, где установлен Docker. В нашей демонстрации мы используем экземпляр Amazon Elastic Compute Cloud (Amazon EC2) под управлением Amazon Linux с установленным Docker.
Прочтите и обобщите данные.
Чтобы предоставить агенту контекст набора данных, мы предлагаем Клоду 2 написать код Python, который считывает данные и предоставляет сводку, соответствующую нашей задаче. Ниже приведены некоторые из включенных нами подсказок. Полный список доступен в prompts.py
файл в проекте.
Из этих подсказок Клод 2 сгенерировал следующий код Python:
agent://
Префикс сообщает нашему CLI, что этот файл хранится в папке хранения сеанса. После запуска CLI он создаст папку геопространственного агента-сессии-хранилища для хранения локальных данных. Теперь агент распознает загруженные данные Airbnb и имена их столбцов. Далее, давайте попросим Клода дать несколько советов по созданию тепловой карты с использованием этих столбцов. Мы передадим следующие подсказки.
Клод 2 отвечает с подсказкой
Спланируйте решение
Теперь мы можем попросить Клода 2 составить общий план. Мы можем использовать графовую библиотеку для Python под названием СетьX наметить шаги решения нашей проблемы.
Как и в нашей последней подсказке, мы передаем несколько требований для руководства Клода 2:
Из этих подсказок Клод 2 сгенерировал следующий код Python:
На этом графике NetworkX Клауд 2 разбивает процесс на три основных сегмента:
- Загрузка данных – Импорт цен объявлений Airbnb с заданного URL-адреса в DataFrame Pandas.
- Преобразование данных – Создание столбца геометрии на основе координат широты и долготы.
- Визуализация данных – Создание тепловой карты для отображения цен на объявления Airbnb.
Такой подход позволяет четко и просто реализовать поставленную геопространственную задачу. Мы можем использовать GraphViz для визуализации следующего рабочего процесса.
Выполнить план
Теперь, когда Клод 2 предоставил нам план, пришло время воплотить его в жизнь. Для каждого шага мы предлагаем Клоду 2 написать соответствующий код. Чтобы сохранить фокус внимания Клауда 2, мы предоставляем высокоуровневые требования для каждой задачи. Давайте углубимся в код, который Клод 2 сгенерировал для каждой отдельной фазы.
Загрузите данные
Чтобы загрузить данные о ценах Airbnb в DataFrame Pandas, мы создаем запрос и передаем некоторые параметры. «Загрузить данные Airbnb» в Operation_task ссылается на узел «Загрузить данные» на нашем графике, который мы создали ранее.
Из этих подсказок Клод 2 сгенерировал следующий код Python:
Преобразуйте данные
Затем Клод 2 генерирует код для добавления geometry
столбец в наш DataFrame, используя latitude
и longitude
. Для этого приглашения мы передаем следующие требования:
Из этих подсказок Клод 2 сгенерировал следующий код Python:
Визуализируйте данные
Наконец, Клод 2 строит визуализацию тепловой карты, используя Пайдек, представляющая собой библиотеку Python для пространственной визуализации. Для этого приглашения мы передаем следующие требования:
Из этих подсказок Клод 2 сгенерировал следующий код Python:
Когда раздел 2 возвращает ответ, он также включает несколько полезных примечаний, объясняющих, как каждая функция соответствует предоставленным требованиям. Например, для визуализации тепловой карты Клод 2 отметил следующее:
"This function generates a heatmap of Airbnb listing prices using pydeck and saves the resulting HTML locally. It fulfills the requirements specified in the prompt."
Соберите сгенерированный код
Теперь, когда Клод 2 создал отдельные строительные блоки, пришло время собрать все это воедино. Агент автоматически собирает все эти фрагменты в один файл Python. Этот скрипт последовательно вызывает каждую из наших функций, оптимизируя весь процесс.
Последний шаг выглядит как следующий код:
После завершения сценария мы видим, что Клод 2 создал HTML-файл с кодом для визуализации нашей тепловой карты. На следующем изображении показан Нью-Йорк на базовой карте Amazon Location с тепловой картой, отображающей цены объявлений Airbnb.
Используйте местоположение Amazon с Amazon Bedrock
Хотя наш агент Plan-and-Solve может справиться с этой геопространственной задачей, нам нужно использовать немного другой подход для таких задач, как геокодирование адреса. Для этого мы можем использовать стратегию под названием Реактгде мы совмещаем рассуждения и действия с нашим LLM.
В шаблоне ReAct агент рассуждает и действует, основываясь на мнениях клиента и инструменты в его распоряжении. Чтобы снабдить этот агент на базе Claude 2 возможностью геокодирования, мы разработали инструмент геокодирования. Этот инструмент использует API Amazon Location Places, в частности SearchPlaceIndexForText
метод для преобразования адреса в его географические координаты.
В ходе этого краткого обмена агент расшифровывает ваше намерение геокодировать адрес, активирует инструмент геокодирования и возвращает широту и долготу.
Будь то построение тепловой карты или геокодирование адреса, Claude 2 в сочетании с такими агентами, как ReAct и Plan and Solve, может упростить геопространственные рабочие процессы.
Развертывание демо-версии
Для начала выполните следующие шаги:
- Клонируйте следующий репозиторий либо на свой локальный компьютер, либо в экземпляр EC2. Возможно, вам придется бежать
aws configure --profile <profilename>
и установите регион по умолчанию; это приложение было протестировано с использованиемus-east-1
.
Теперь, когда у нас есть клонированный репозиторий, мы настраиваем переменные среды.
- Перейдите в папку клонированного проекта:
- Отредактируйте
.env
файл с помощью предпочитаемого вами текстового редактора:
- Добавьте название карты, имя индекса места и ключ API:
- Запустите следующую команду, чтобы создать контейнер:
- Выполните следующую команду, чтобы запустить и подключиться к вашему контейнеру Docker:
- Возьмите набор данных Airbnb:
- Запустите следующую команду, чтобы создать сеанс. Мы используем сеансы для изоляции уникальных чатов.
Теперь вы готовы запустить приложение.
- Выполните следующую команду, чтобы запустить приложение чата:
Вас встретит приглашение в чат.
- Вы можете начать, задав следующий вопрос:
Агент хватает Airbnb_listings_price.csv
файл, который мы загрузили в /data
папку и анализирует ее в геопространственный DataFrame. Затем он генерирует код для преобразования данных, а также код для визуализации. Наконец, он создает HTML-файл, который будет записан в формате /data
папку, которую вы можете открыть для визуализации тепловой карты в браузере.
В другом примере используется API Amazon Location Places для геокодирования адреса. Если мы попросим агента геокодировать адрес 112 E 11th St, Austin, TX 78701, мы получим ответ, как показано на следующем изображении.
Заключение
В этом посте мы представили краткий обзор Amazon Bedrock и Amazon Location, а также то, как вы можете использовать их вместе для анализа и визуализации геопространственных данных. Мы также рассмотрели Plan-and-Solve и ReAct и то, как мы использовали их в нашем агенте.
Наш пример лишь царапает поверхность. Попробуйте загрузить наш пример кода и добавить собственные агенты и инструменты для геопространственных задач.
Об авторах
Джефф Демут — архитектор решений, который присоединился к Amazon Web Services (AWS) в 2016 году. Он специализируется на геопространственном сообществе и увлечен географическими информационными системами (ГИС) и технологиями. Помимо работы Джефф любит путешествовать, создавать приложения Интернета вещей (IoT) и возиться с новейшими гаджетами.
Свагата Пратик — старший инженер-программист, работающий в службе местоположения Amazon в Amazon Web Services (AWS), где он специализируется на генеративном искусственном интеллекте и геопространственных данных.