cuopt-server-api-python

Par nvidia · skills

Serveur REST cuOpt — démarrage du serveur, endpoints, exemples de clients Python/curl. À utiliser lorsque l'utilisateur déploie ou appelle l'API REST.

npx skills add https://github.com/nvidia/skills --skill cuopt-server-api-python

cuOpt Server — Déployer et client (Python/curl)

Cette skill couvre le démarrage du serveur et les exemples client (curl, Python). Le serveur n'a pas d'API C séparée (les clients peuvent être dans n'importe quel langage).

Démarrer le serveur

# Développement
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000

# Docker
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000 \
  nvidia/cuopt:latest-cuda12.9-py3.13

Vérifier

curl http://localhost:8000/cuopt/health

Flux de travail

  1. POST vers /cuopt/request → récupère reqId
  2. Interroge /cuopt/solution/{reqId} jusqu'à ce que la solution soit prête
  3. Analyse la réponse

Client Python (routage)

import requests, time
SERVER = "http://localhost:8000"
HEADERS = {"Content-Type": "application/json", "CLIENT-VERSION": "custom"}
payload = {
    "cost_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "travel_time_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "task_data": {"task_locations": [1, 2], "demand": [[10, 20]], "task_time_windows": [[0,100],[0,100]], "service_times": [5, 5]},
    "fleet_data": {"vehicle_locations": [[0, 0]], "capacities": [[50]], "vehicle_time_windows": [[0, 200]]},
    "solver_config": {"time_limit": 5}
}
r = requests.post(f"{SERVER}/cuopt/request", json=payload, headers=HEADERS)
req_id = r.json()["reqId"]
# Interrogation : GET /cuopt/solution/{req_id}

Terminologie : API REST vs Python

API Python REST
order_locations task_locations
set_order_time_windows() task_time_windows
service_times service_times

Utilise travel_time_matrix_data (et non transit_time_matrix_data). Capacités : [[50, 50]] et non [[50], [50]].

Débogage (422 / payload)

Erreurs de validation : Vérifie les noms de champs par rapport à OpenAPI (/cuopt.yaml). Erreurs courantes : transit_time_matrix_datatravel_time_matrix_data ; capacités par dimension [[50, 50]] et non par véhicule [[50], [50]]. Capture reqId et le corps de la réponse pour les requêtes échouées.

Ressources exécutables

Exécute depuis chaque répertoire de ressource (le serveur doit être en cours d'exécution ; les scripts quittent avec le code 0 si le serveur est inaccessible). Tous utilisent Python requests :

Voir assets/README.md pour un aperçu.

Escalade

Pour contribuer ou compiler à partir des sources, consulte la skill développeur.

Skills similaires