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.
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
)
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))
voos = await fetch(
"https://partners.api.skyscanner.net/apiservices/browsequotes/v1.0/BR/BRL/pt-BR/GRU-sky/",
{"apiKey": SKYSCANNER, "destination": destino, "duration": dias}
)
hoteis = await fetch(
"https://api.booking.com/v1/hotels",
{"apikey": BOOKING, "city": destino, "filter": "sanitary_rating:A"}
)
clima = await fetch(
"https://api.openweathermap.org/data/2.5/forecast",
{"appid": WEATHER, "q": destino, "cnt": 8}
)
saude = await fetch(
f"https://api.who.int/v1/countries/{destino}/travel-requirements",
{"apikey": OMS}
)
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
}
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 |
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 |
<div id="travel-ai-widget"></div>
<script>
async function gerarItinerario() {
const resp = await fetch('https://seu-bot.com/itinerario', {
method: 'POST',
headers: {'Content-Type':'application/json'},
body: JSON.stringify({destino: 'Lisboa', dias:7})
});
const data = await resp.json();
document.getElementById('travel-ai-widget').innerHTML = `
<h3>Roteiro Lisboa – 7 dias</h3>
<p>Voo: ${data.voo.Price} BRL</p>
<p>Hotel: ${data.hotel.name} – ${data.hotel.price} BRL/noite</p>
<p>Clima: ${data.clima.map(c=>c.weather[0].description).join(', ')}</p>
<p>Requisitos de saúde: ${data.saude}</p>
`;
}
gerarItinerario();
</script>
Com as APIs certas, um LLM potente e um pequeno backend em FastAPI, você cria um Travel‑AI Bot que gera itinerários seguros
Herramienta mencionada: Groq Cloud