Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как создать автономный агент ИИ, который обрабатывает запросы путешественников и бронирование для круизной линии. Агент ИИ использует платформу агента LangChain для планирования, использования инструментов и восприятия. Затем агент объединяет эти функции с векторной базой данных Azure DocumentDB и возможностями хранилища документов для единой системы памяти.
Пример агента работает в серверной части Python FastAPI и поддерживает взаимодействие пользователей с помощью пользовательского интерфейса React JavaScript. Эта реализация демонстрирует, как агенты ИИ выходят за рамки базовых чат-ботов для выполнения сложных задач на основе естественного языка, которые традиционно требуют закодированную логику.
В этом руководстве вы узнаете, как:
- Настройка Azure DocumentDB с помощью возможностей поиска векторов
- Загрузка путевых документов и создание векторных встраиваний
- Создание агента ИИ с помощью Python FastAPI и LangChain
- Реализация средств агента для поиска отпусков, поиска маршрутов и резервирования
- Создание веб-интерфейса React для взаимодействия с пользователем
- Протестируйте комплектное решение ИИ агента
Предпосылки
подписка Azure
- Если у вас нет подписки Azure, создайте бесплатную учетную запись.
Существующий кластер Azure DocumentDB
- Если у вас нет кластера, создайте новый кластер
Учетная запись ДЛЯ API OpenAI или Службы Azure OpenAI.
Интегрированная среда разработки, например Visual Studio Code.
Python 3.11.4 или более поздней версии, установленный в среде разработки.
Node.js установлен для интерфейса React.
Скачивание примера проекта
Весь код и примеры наборов данных доступны в репозитории GitHub Travel AI Agent.
Клонируйте или скачайте репозиторий (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) в локальную среду разработки.
Перейдите в каталог проекта и изучите структуру:
/loader: содержит код Python для загрузки примеров документов и внедрения векторов в Azure DocumentDB/api: содержит проект на основе Python FastAPI для размещения агента ИИ по путешествиям/web: содержит код для веб-интерфейса React
Загрузка документов для путешествий в Azure DocumentDB
Каталог /loader содержит проект на Python для загрузки примеров туристических документов в Azure DocumentDB и создания необходимых векторных встраиваний.
Перейдите к каталогу в терминале
/loader.Создайте виртуальную среду Python:
python -m venv venvАктивируйте виртуальную среду:
# On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activateУстановите необходимые зависимости:
python -m pip install -r requirements.txtСоздайте файл в каталоге
.env/loaderсо сведениями о подключении:OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"Файл
main.pyслужит центральной точкой входа для загрузки данных. Он обрабатывает примеры данных о путешествиях, включая сведения о доставке и назначении, а затем создает пакеты маршрутов для путешествий.Запустите скрипт загрузки данных из
/loaderкаталога. Скрипт выполняет следующие операции:Считывает данные о доставке и назначении из JSON-файлов
Создает пять пакетов маршрутов с помощью
ItineraryBuilderСохраняет пакеты маршрутов в коллекцию
itineraryСохраняет пункты назначения в
destinationsколлекциюСоздает векторные встраивания для кораблей в
shipsколлекцииДобавляет индекс поиска по тексту для названий кораблей.
python main.pyУбедитесь, что выходные данные показывают успешное завершение:
--build itinerary-- --load itinerary-- --load destinations-- --load vectors ships--
Создать API туристического агента на базе ИИ
Агент путешествий ИИ размещается через серверную часть Python FastAPI, которая интегрируется с фронтендом и обрабатывает запросы агента путем сопоставления данных Azure DocumentDB с запросами, использующими большие языковые модели (LLM).
Перейдите к каталогу в терминале
/api.Создайте и активируйте виртуальную среду Python:
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activateУстановите необходимые зависимости:
python -m pip install -r requirements.txt.envСоздайте файл в каталоге/api:OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"Запустите приложение FastAPI из
/apiкаталога:python app.pyСервер запускается на
http://127.0.0.1:8000по умолчанию.Доступ к интерактивной документации Swagger по адресу
http://127.0.0.1:8000/docsпозволит вам более подробно изучить конечные точки API.
Тестирование функциональных возможностей агента ИИ
Проверьте, работает ли агент ИИ должным образом.
В интерфейсе Swagger проверьте конечную точку сеанса:
Перейдите к разделу
/session/и выберите "Попробовать"Выполните запрос, чтобы получить идентификатор сеанса для отслеживания журнала бесед
Проверьте функциональные возможности чата агента:
Перейдите к разделу
/agent/agent_chatи выберите "Попробовать"Используйте этот пример входных данных для тестирования агента:
{ "input": "I want to take a relaxing vacation.", "session_id": "your-session-id-from-step-1" }Агент должен отвечать с рекомендациями по круизам на основе векторного поиска по сходству, демонстрируя интеграцию между моделью LLM и Azure DocumentDB.
Создание веб-интерфейса React
Веб-интерфейс предоставляет удобный способ взаимодействия с агентом по путешествиям ИИ через диалоговый интерфейс.
Настройка среды React
Перейдите в каталог
/webв терминале.Установите зависимости проекта:
npm ci.envСоздайте файл в каталоге/web:REACT_APP_API_HOST=http://127.0.0.1:8000
Запуск веб-приложения
Запустите сервер разработки React:
npm startПриложение автоматически открывается в браузере по умолчанию, как правило, в
http://localhost:3000.В интерфейсе показан веб-сайт путешествия с круизными кораблями и изображениями назначения.
Тестирование полного решения
На главной странице выберите Легкое планирование путешествия, чтобы открыть интерфейс чата помощника по путешествиям.
Интерфейс чата открывается в диалоговом окне с предварительно заполненным сообщением: "Я хочу принять отдых".
Нажмите кнопку "Отправить ", чтобы отправить сообщение агенту ИИ.
Агент отвечает с рекомендациями круиза на основе входных данных, демонстрируя следующее:
Обработка естественного языка
Поиск сходства векторов в Azure DocumentDB
Память беседы во время сессии
Ответы в формате HTML в интерфейсе чата
Просмотрите полный спектр возможностей агента, продолжая беседу. Спросите о конкретных кораблях, маршрутах или о заказе.
Общие сведения об архитектуре агента ИИ
Реализация агента ИИ следует многоуровневой архитектуре, которая разделяет проблемы и обеспечивает удобство обслуживания.
Компоненты уровня служб
Уровень служб содержит основную бизнес-логику и реализацию агента LangChain:
Инициализация агента:
init.pyмодуль настраивает модель ChatOpenAI, средства агента и журнал бесед.Средства агента: три основных средства обработки поиска отпусков, поиска маршрутов и круизного бронирования.
Управление памятью. Журнал бесед хранится в Azure DocumentDB с помощью идентификаторов сеанса.
Функциональные возможности средств агента
Агент ИИ использует три специализированных средства.
vacation_lookup. Проводит векторный поиск по Azure DocumentDB, чтобы найти соответствующие сведения о путешествиях.
itinerary_lookup: извлекает сведения о круизных пакетах и расписаниях для конкретных кораблей.
book_cruise: обрабатывает бронирование круизных пакетов с помощью проверки информации о пассажирах.
Интеграция уровня данных
Уровень данных обрабатывает все взаимодействия с Azure DocumentDB.
Векторный поиск: поиск сходства с оценкой рекомендаций по путешествиям.
Хранилище документов: структурированные данные для кораблей, назначений и маршрутов.
Журнал бесед: хранилище сообщений чата на основе сеансов.
Очистите ресурсы
Если ресурсы, созданные в этом руководстве, больше не нужны, их можно удалить, чтобы избежать текущих расходов.
На портале Azure перейдите к учетной записи Azure DocumentDB.
Если вы создали выделенную группу ресурсов для этого руководства, удалите всю группу ресурсов.
В противном случае удалите определенные коллекции, созданные:
travel.itinerarytravel.destinationstravel.shipstravel.history