Roteiros de Viagem Seguros em Minutos com IA e Python A developer has created a Python-based travel itinerary generator that uses FastAPI and multiple APIs to produce personalized travel plans in under 30 seconds. The system integrates Skyscanner, Booking.com, OpenWeather, and WHO/CDC APIs, and leverages large language models to interpret user requests. The project aims to replace traditional travel agencies by offering faster, more flexible, and cost-effective itinerary planning. A pandemia acabou, as fronteiras reabriram e a ansiedade por viagens seguras está em alta. Hoje, basta digitar um pedido e, em poucos cliques, um assistente de IA entrega um roteiro completo, com voos, hotéis, clima e requisitos de saúde atualizados. Neste guia prático você aprenderá a montar itinerários instantâneos usando Python, FastAPI e as principais APIs de viagem, além de receber dicas de custo, privacidade e um checklist de documentos. | Motivo | Dados atuais | |---|---| Fronteiras abertas | Em 2025, 92 % dos países dispensam restrições para viajantes vacinados, exigindo apenas teste PCR ou comprovante de vacinação. | Prioridade na segurança sanitária | 68 % dos viajantes escolhem destinos com boas avaliações de higiene Expedia Travel Trends 2026 . | APIs acessíveis | Skyscanner, Booking.com, OpenWeather, OMS/CDC oferecem planos gratuitos que respondem em milissegundos. | LLMs avançados | GPT‑4o, Claude‑3 e LLaMA‑2 70B interpretam solicitações complexas e geram código pronto para consumo de APIs. | Esses fatores tornam o planejamento instantâneo, personalizado e confiável , eliminando a necessidade de horas de pesquisa ou de agentes de viagem. php flowchart TD A Usuário -- B Prompt B -- C LLM GPT‑4o C -- D FastAPI Orquestrador D -- E Skyscanner API D -- F Booking.com API D -- G OpenWeather API D -- H OMS/CDC API E & F & G & H -- I Agregador I -- J Resposta ao usuário pip install fastapi uvicorn httpx python-dotenv .env SKYSCANNER KEY=suachave sky BOOKING KEY=suachave booking OPENWEATHER KEY=suachave weather OMS KEY=suachave oms main.py python from fastapi import FastAPI, HTTPException import httpx, os from dotenv import load dotenv load dotenv app = FastAPI SKYSCANNER = os.getenv "SKYSCANNER KEY" BOOKING = os.getenv "BOOKING KEY" WEATHER = os.getenv "OPENWEATHER KEY" OMS = os.getenv "OMS KEY" async def fetch url, params : async with httpx.AsyncClient as client: resp = await client.get url, params=params, timeout=10 resp.raise for status return resp.json @app.post "/itinerario" async def criar itinerario pedido: dict : destino = pedido.get "destino" dias = int pedido.get "dias", 5 1️⃣ Voo voos = await fetch "https://partners.api.skyscanner.net/apiservices/browsequotes/v1.0/BR/BRL/pt-BR/GRU-sky/", {"apiKey": SKYSCANNER, "destination": destino, "duration": dias} 2️⃣ Hotel hoteis = await fetch "https://api.booking.com/v1/hotels", {"apikey": BOOKING, "city": destino, "filter": "sanitary rating:A"} 3️⃣ Clima clima = await fetch "https://api.openweathermap.org/data/2.5/forecast", {"appid": WEATHER, "q": destino, "cnt": 8} 4️⃣ Saúde saude = await fetch f"https://api.who.int/v1/countries/{destino}/travel-requirements", {"apikey": OMS} Agregação simples itinerario = { "voo": voos "Quotes" 0 , "hotel": hoteis "result" 0 , "clima": clima "list" :3 , "saude": saude "requirements" } return itinerario uvicorn main:app --reload Acesse http://127.0.0.1:8000/docs e envie um JSON como: { "destino": "Bali", "dias": 5 } Render.yaml exemplo services: - type: web name: travel-ai-bot env: python buildCommand: pip install -r requirements.txt startCommand: uvicorn main:app --host 0.0.0.0 --port $PORT | Item | Agência tradicional | Travel‑AI Bot cloud | |---|---|---| Taxa de serviço | 10‑15 % do valor total | < 5 USD/mês hosting + consumo de APIs | Tempo de resposta | 2‑5 dias úteis | < 30 segundos | Flexibilidade | Pacotes fixos | Personalização total por parâmetro | Privacidade | Dados armazenados por terceiros | Controle total via seu backend | python Exemplo de criptografia simples from cryptography.fernet import Fernet key = Fernet.generate key cipher = Fernet key def encrypt data: str - str: return cipher.encrypt data.encode .decode def decrypt token: str - str: return cipher.decrypt token.encode .decode | Documento | Onde obter | Validade mínima | |---|---|---| | Passaporte | Consulado/Embaixada | +6 meses | | Visto se necessário | Embaixada do destino | Conforme exigência | | Certificado de vacinação COVID‑19 | Ministério da Saúde | 14 dias antes da viagem | | Teste PCR negativo | Laboratório credenciado | 72 h antes da partida | | Seguro viagem cobertura sanitária | Seguradora | Até o último dia da viagem |