# Roteiros de Viagem Seguros em Minutos com IA e Python

> Source: <https://dev.to/leojulieta/roteiros-de-viagem-seguros-em-minutos-com-ia-e-python-39hl>
> Published: 2026-08-18 08:36:10+00:00

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 |

```
<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*
