Поделиться через


Руководство по созданию агента по путешествиям ИИ с помощью Azure DocumentDB и LangChain

В этом руководстве показано, как создать автономный агент ИИ, который обрабатывает запросы путешественников и бронирование для круизной линии. Агент ИИ использует платформу агента LangChain для планирования, использования инструментов и восприятия. Затем агент объединяет эти функции с векторной базой данных Azure DocumentDB и возможностями хранилища документов для единой системы памяти.

Пример агента работает в серверной части Python FastAPI и поддерживает взаимодействие пользователей с помощью пользовательского интерфейса React JavaScript. Эта реализация демонстрирует, как агенты ИИ выходят за рамки базовых чат-ботов для выполнения сложных задач на основе естественного языка, которые традиционно требуют закодированную логику.

В этом руководстве вы узнаете, как:

  • Настройка Azure DocumentDB с помощью возможностей поиска векторов
  • Загрузка путевых документов и создание векторных встраиваний
  • Создание агента ИИ с помощью Python FastAPI и LangChain
  • Реализация средств агента для поиска отпусков, поиска маршрутов и резервирования
  • Создание веб-интерфейса React для взаимодействия с пользователем
  • Протестируйте комплектное решение ИИ агента

Предпосылки

  • Существующий кластер Azure DocumentDB

  • Учетная запись ДЛЯ API OpenAI или Службы Azure OpenAI.

  • Интегрированная среда разработки, например Visual Studio Code.

  • Python 3.11.4 или более поздней версии, установленный в среде разработки.

  • Node.js установлен для интерфейса React.

Скачивание примера проекта

Весь код и примеры наборов данных доступны в репозитории GitHub Travel AI Agent.

  1. Клонируйте или скачайте репозиторий (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) в локальную среду разработки.

  2. Перейдите в каталог проекта и изучите структуру:

    • /loader: содержит код Python для загрузки примеров документов и внедрения векторов в Azure DocumentDB

    • /api: содержит проект на основе Python FastAPI для размещения агента ИИ по путешествиям

    • /web: содержит код для веб-интерфейса React

Загрузка документов для путешествий в Azure DocumentDB

Каталог /loader содержит проект на Python для загрузки примеров туристических документов в Azure DocumentDB и создания необходимых векторных встраиваний.

  1. Перейдите к каталогу в терминале /loader .

  2. Создайте виртуальную среду Python:

    python -m venv venv
    
  3. Активируйте виртуальную среду:

    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  4. Установите необходимые зависимости:

    python -m pip install -r requirements.txt
    
  5. Создайте файл в каталоге .env/loader со сведениями о подключении:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  6. Файл main.py служит центральной точкой входа для загрузки данных. Он обрабатывает примеры данных о путешествиях, включая сведения о доставке и назначении, а затем создает пакеты маршрутов для путешествий.

  7. Запустите скрипт загрузки данных из /loader каталога. Скрипт выполняет следующие операции:

    • Считывает данные о доставке и назначении из JSON-файлов

    • Создает пять пакетов маршрутов с помощью ItineraryBuilder

    • Сохраняет пакеты маршрутов в коллекцию itinerary

    • Сохраняет пункты назначения в destinations коллекцию

    • Создает векторные встраивания для кораблей в ships коллекции

    • Добавляет индекс поиска по тексту для названий кораблей.

    python main.py
    
  8. Убедитесь, что выходные данные показывают успешное завершение:

    --build itinerary--
    --load itinerary--
    --load destinations--
    --load vectors ships--
    

Создать API туристического агента на базе ИИ

Агент путешествий ИИ размещается через серверную часть Python FastAPI, которая интегрируется с фронтендом и обрабатывает запросы агента путем сопоставления данных Azure DocumentDB с запросами, использующими большие языковые модели (LLM).

  1. Перейдите к каталогу в терминале /api .

  2. Создайте и активируйте виртуальную среду Python:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Установите необходимые зависимости:

    python -m pip install -r requirements.txt
    
  4. .env Создайте файл в каталоге/api:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  5. Запустите приложение FastAPI из /api каталога:

    python app.py
    
  6. Сервер запускается на http://127.0.0.1:8000 по умолчанию.

  7. Доступ к интерактивной документации Swagger по адресу http://127.0.0.1:8000/docs позволит вам более подробно изучить конечные точки API.

Тестирование функциональных возможностей агента ИИ

Проверьте, работает ли агент ИИ должным образом.

  1. В интерфейсе Swagger проверьте конечную точку сеанса:

    • Перейдите к разделу /session/ и выберите "Попробовать"

    • Выполните запрос, чтобы получить идентификатор сеанса для отслеживания журнала бесед

  2. Проверьте функциональные возможности чата агента:

    • Перейдите к разделу /agent/agent_chat и выберите "Попробовать"

    • Используйте этот пример входных данных для тестирования агента:

    {
      "input": "I want to take a relaxing vacation.",
      "session_id": "your-session-id-from-step-1"
    }
    
  3. Агент должен отвечать с рекомендациями по круизам на основе векторного поиска по сходству, демонстрируя интеграцию между моделью LLM и Azure DocumentDB.

Создание веб-интерфейса React

Веб-интерфейс предоставляет удобный способ взаимодействия с агентом по путешествиям ИИ через диалоговый интерфейс.

Настройка среды React

  1. Перейдите в каталог /web в терминале.

  2. Установите зависимости проекта:

    npm ci
    
  3. .env Создайте файл в каталоге/web:

    REACT_APP_API_HOST=http://127.0.0.1:8000
    

Запуск веб-приложения

  1. Запустите сервер разработки React:

    npm start
    
  2. Приложение автоматически открывается в браузере по умолчанию, как правило, в http://localhost:3000.

  3. В интерфейсе показан веб-сайт путешествия с круизными кораблями и изображениями назначения.

Тестирование полного решения

  1. На главной странице выберите Легкое планирование путешествия, чтобы открыть интерфейс чата помощника по путешествиям.

  2. Интерфейс чата открывается в диалоговом окне с предварительно заполненным сообщением: "Я хочу принять отдых".

  3. Нажмите кнопку "Отправить ", чтобы отправить сообщение агенту ИИ.

  4. Агент отвечает с рекомендациями круиза на основе входных данных, демонстрируя следующее:

    • Обработка естественного языка

    • Поиск сходства векторов в Azure DocumentDB

    • Память беседы во время сессии

    • Ответы в формате HTML в интерфейсе чата

  5. Просмотрите полный спектр возможностей агента, продолжая беседу. Спросите о конкретных кораблях, маршрутах или о заказе.

Общие сведения об архитектуре агента ИИ

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

Компоненты уровня служб

Уровень служб содержит основную бизнес-логику и реализацию агента LangChain:

  • Инициализация агента: init.py модуль настраивает модель ChatOpenAI, средства агента и журнал бесед.

  • Средства агента: три основных средства обработки поиска отпусков, поиска маршрутов и круизного бронирования.

  • Управление памятью. Журнал бесед хранится в Azure DocumentDB с помощью идентификаторов сеанса.

Функциональные возможности средств агента

Агент ИИ использует три специализированных средства.

  1. vacation_lookup. Проводит векторный поиск по Azure DocumentDB, чтобы найти соответствующие сведения о путешествиях.

  2. itinerary_lookup: извлекает сведения о круизных пакетах и расписаниях для конкретных кораблей.

  3. book_cruise: обрабатывает бронирование круизных пакетов с помощью проверки информации о пассажирах.

Интеграция уровня данных

Уровень данных обрабатывает все взаимодействия с Azure DocumentDB.

  • Векторный поиск: поиск сходства с оценкой рекомендаций по путешествиям.

  • Хранилище документов: структурированные данные для кораблей, назначений и маршрутов.

  • Журнал бесед: хранилище сообщений чата на основе сеансов.

Очистите ресурсы

Если ресурсы, созданные в этом руководстве, больше не нужны, их можно удалить, чтобы избежать текущих расходов.

  1. На портале Azure перейдите к учетной записи Azure DocumentDB.

  2. Если вы создали выделенную группу ресурсов для этого руководства, удалите всю группу ресурсов.

  3. В противном случае удалите определенные коллекции, созданные:

    • travel.itinerary

    • travel.destinations

    • travel.ships

    • travel.history

Следующий шаг