Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

🌍 Travel Planner Agent

Travel Planner Agent — это интеллектуальный сервис для планирования путешествий.
Он объединяет поиск отелей, прогноз погоды и диалог с чат-агентом в одном API.

Проект реализован на FastAPI и интегрирует современные технологии RAG, LLM и LangGraph, чтобы выдавать полезные ответы в формате «одним кликом».


✨ Возможности

  • 💬 Чат с агентом — задайте вопрос, и агент предложит отели и прогноз погоды.
  • 🏨 Поиск отелей — подборка отелей по выбранному городу.
  • ☀️ Прогноз погоды — до 7 дней вперёд.
  • 🔎 RAG-пайплайн — векторный поиск по данным отелей.

🛠 Технологии

🚀 Core stack

🤖 AI / ML stack


📂 Архитектура проекта

TravelPlannerAgent/
│── app.py # Точка входа FastAPI 
│── docs/ # OpenAPI спецификация
│── src/ # Исходный код 
│ ├── agents/ # Агент + инструменты (RAG, погода) 
│ ├── api/ # Роуты и схемы FastAPI 
│ ├── graph/ # LangGraph агент 
│ ├── retrieval/ # Векторный поиск 
│ ├── utils/ # Конфиги, загрузка данных, промпты 
│ └── logs/ # Логирование
│── tests/ # Unit и integration тесты
│── chroma_db/ # Векторная база (ChromaDB) в .gitignore
│── models_cache/ # Кэш моделей (SentenceTransformers) в .gitignore
│── requirements.txt # Зависимости 
│── LICENSE # Лицензия
│── README.md # Документация проекта

⚙️ Установка и запуск

  1. Клонировать репозиторий:
    git clone https://github.com/zachhew/travel-planner-agent.git
    cd travel-planner-agent
  2. Создать виртуальное окружение:
    python3 -m venv .venv
    source .venv/bin/activate # Linux / Mac
    .venv\Scripts\activate # Windows
  3. Установить зависимости:
    pip install -r requirements.txt
  4. Создать файл .env:
     USER_CSV_FOLDER=./data/raw/hotels-2.csv
     EMBEDDING_DEVICE=mps # cuda/cpu
     EMBEDDING_MODEL_NAME=all-MiniLM-L6-v2
     LLM_MODEL_NAME=openai/gpt-4o
     LLM_API_KEY=sk-xxxxxx
     LLM_BASE_URL=https://openrouter.ai/api/v1
     LOG_LEVEL=INFO
     # Дополнительные параметры (по умолчанию)
     TEMPERATURE=0.2
     MAX_TOKENS=200
     CHUNK_SIZE=800
     CHUNK_OVERLAP=50
     RETRIEVER_K=5
     PERSIST_DIRECTORY=./chroma_db
     CACHE_FOLDER=./models_cache
     LOG_FILE=app.log
     PROMPT_PATH=./src/utils/prompts.json
    
  5. Запуск сервера
    uvicorn app:app --reload
    

После запуска Swagger-документация доступна по адресу:
👉 http://127.0.0.1:8000/docs


📡 API Эндпоинты

Метод Путь Описание
POST /chat Чат с агентом
POST /hotels Поиск отелей
POST /weather Прогноз погоды

Подробности смотри в docs/docs.yaml


📝 Пример запроса

Запрос к чату

curl -X POST "http://127.0.0.1:8000/chat" \
 -H "Content-Type: application/json" \
 -d '{
 "question": "Хочу слетать в Сочи на 3 дня"
 }'

Пример ответа

{
 "answer": "Прогноз погоды в Сочи на ближайшие три дня:\n
 Дата | Tmin | Tmax | Осадки (мм)\n
 2025年09月07日 | 18 | 25 | 0.0\n
 2025年09月08日 | 19 | 26 | 0.1\n
 2025年09月09日 | 20 | 27 | 0.0\n\n
 Вот подборка отелей в Сочи:\n
 - Hyatt Regency Sochi, *описание*\n
 - Radisson Blu Resort & Congress Centre, *описание*\n
 - Pullman Sochi Centre, *описание*"
}

🧪 Тестирование

Запуск unit и integration тестов:

PYTHONPATH=./ pytest -v

Пример интеграционного теста (файл tests/integration/test_routes.py):

@pytest.mark.asyncio
async def test_chat_endpoint(monkeypatch):
 async def fake_invoke(_):
 return {"recent_messages": [{"role": "assistant", "content": "Hello test!"}]}
 ...

📜 Лицензия

MIT — свободно используйте и модифицируйте проект.

About

FastAPI travel assistant with LangGraph orchestration, RAG hotel search, weather API integration, ChromaDB vector store and OpenRouter LLM.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /