option
MaisonMaison Skill Développement d'API cuopt-server-api-python

cuopt-server-api-python

NVIDIA/skills NVIDIA/skills

Déployez un serveur REST cuOpt et résolvez des problèmes d'optimisation de routage à l'aide de Python ou de curl.

...Développer tout
5
Heure mise à jour 25 septembre 2026

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

Cette compétence porte sur le démarrage du serveur et des exemples de clients (curl, Python). Le serveur ne dispose pas d'API C distincte (les clients peuvent être écrits 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érification

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

Flux de travail

  1. Envoi d’une requête POST vers /cuopt/request → obtention du reqId
  2. Interroger /cuopt/solution/{reqId} jusqu’à ce que la solution soit prête
  3. Analyser 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 : REST vs API Python

API Python REST
order_locations task_locations
set_order_time_windows() fentes_horaires_tâches
horaires_de_service horaires_de_service

Utilisez 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érifiez les noms de champs par rapport à l'OpenAPI (/cuopt.yaml). Erreurs courantes : transit_time_matrix_data → travel_time_matrix_data; capacités par dimension [[50, 50]] et non par véhicule [[50], [50]]. Enregistrez le reqId et le corps de la réponse pour les requêtes ayant échoué.

Ressources exécutables

Exécutez depuis chaque répertoire d’actifs (le serveur doit être en cours d’exécution ; les scripts se terminent avec le code 0 si le serveur est inaccessible). Tous utilisent Python requests:

  • assets/vrp_simple/ — VRP de base (sans fenêtres temporelles)
  • assets/vrp_basic/ — VRP avec fenêtres temporelles
  • assets/pdp_basic/ — Enlèvement et livraison
  • assets/lp_basic/ — LP via REST (format CSR)
  • assets/milp_basic/ — MILP via REST

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

Escalade

Pour contribuer ou compiler à partir du code source, consultez la section « Compétences de développeur ».

Voir sur GitHub
---
name: cuopt-server-api-python
description: Deploy a cuOpt REST server and solve routing optimization problems using Python or curl.
license: Apache-2.0
---



# cuOpt Server — Deploy and client (Python/curl)

This skill covers **starting the server** and **client examples** (curl, Python). Server has no separate C API (clients can be any language).

## Start server

```bash
# Development
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
```

## Verify

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

## Workflow

1. POST to `/cuopt/request` → get `reqId`
2. Poll `/cuopt/solution/{reqId}` until solution ready
3. Parse response

## Python client (routing)

```python
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"]
# Poll: GET /cuopt/solution/{req_id}
```

## Terminology: REST vs Python API

| Python API | REST |
|------------|------|
| order_locations | task_locations |
| set_order_time_windows() | task_time_windows |
| service_times | service_times |

Use `travel_time_matrix_data` (not transit_time_matrix_data). Capacities: `[[50, 50]]` not `[[50], [50]]`.

## Debugging (422 / payload)

**Validation errors:** Check field names against OpenAPI (`/cuopt.yaml`). Common mistakes: `transit_time_matrix_data` → `travel_time_matrix_data`; capacities per dimension `[[50, 50]]` not per vehicle `[[50], [50]]`. Capture `reqId` and response body for failed requests.

## Runnable assets

Run from each asset directory (server must be running; scripts exit 0 if server unreachable). All use Python `requests`:

- [assets/vrp_simple/](assets/vrp_simple/) — Basic VRP (no time windows)
- [assets/vrp_basic/](assets/vrp_basic/) — VRP with time windows
- [assets/pdp_basic/](assets/pdp_basic/) — Pickup and delivery
- [assets/lp_basic/](assets/lp_basic/) — LP via REST (CSR format)
- [assets/milp_basic/](assets/milp_basic/) — MILP via REST

See [assets/README.md](assets/README.md) for overview.

## Escalate

For contribution or build-from-source, see the developer skill.

Installer cuopt-server-api-python

Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.

Télécharger le ZIP

Clonez le dépôt et copiez les fichiers de compétence dans votre projet.

git clone https://github.com/NVIDIA/skills/tree/main/skills/cuopt-server-api-python # Copy SKILL.md to your .claude/skills/ directory

Copier Copier
Configuration rapide: Copiez le dossier de la compétence dans .claude/skills/ Claude détectera automatiquement la compétence et l'utilisera
Dépôt NVIDIA/skills

Compétences similaires

agentwallet
Heure mise à jour 7 juillet 2026
brightdata-cli
Heure mise à jour 29 juin 2026
humanize
Heure mise à jour 7 juillet 2026
korean-stock-search
Heure mise à jour 8 juillet 2026
OR