cuopt-server-api-python について
cuOpt Serverのデプロイと、PythonまたはcurlからREST APIを呼び出すためのスキルです。ルーティング例に加え、ルーティング、LP、MILPの実行可能なサンプルや、リクエストのポーリングとペイロード検証を扱います。
主な機能
- 01サーバーの起動とヘルスチェック
- 02PythonとcurlのREST例
- 03ルーティング要求と解のポーリング
- 04VRP、集配、LP、MILPのサンプル
- 05ペイロード検証とデバッグ
活用シーン
- 01ローカルまたはDockerでcuOpt Serverを起動
- 02Pythonまたはcurlからルーティング問題を送信
- 03VRP、集配、LP、MILPのサンプル要求を実行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill cuopt-server-api-pythonインストール後、Claude Code で/cuopt-server-api-pythonを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigassets/README.mdassets/lp_basic/client.pyREADME.mdassets/milp_basic/client.pyREADME.mdassets/pdp_basic/client.pyREADME.mdassets/vrp_basic/client.pyREADME.mdassets/vrp_simple/client.pyREADME.mdevals/evals.json詳細
cuOpt Server — デプロイとクライアント(Python/curl)
このスキルでは、サーバーの起動とクライアントの例(curl、Python)を説明します。サーバーには独立した C API はありません(クライアントには任意の言語を使用できます)。
サーバーを起動する
# 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
確認する
curl http://localhost:8000/cuopt/health
ワークフロー
/cuopt/requestに POST し、reqIdを取得します- 解が準備できるまで
/cuopt/solution/{reqId}をポーリングします - レスポンスを解析します
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}
用語:REST と Python API
| Python API | REST |
|---|---|
| order_locations | task_locations |
| set_order_time_windows() | task_time_windows |
| service_times | service_times |
transit_time_matrix_data ではなく、travel_time_matrix_data を使用してください。容量は [[50], [50]] ではなく [[50, 50]] です。
デバッグ(422 / ペイロード)
検証エラー: OpenAPI(/cuopt.yaml)でフィールド名を確認してください。よくある間違い:transit_time_matrix_data を travel_time_matrix_data にすること、車両ごとではなく次元ごとの容量を [[50], [50]] ではなく [[50, 50]] にすることです。リクエストが失敗した場合は、reqId とレスポンス本文を記録してください。
実行可能なアセット
各アセットのディレクトリから実行してください(サーバーが起動している必要があります。サーバーに接続できない場合、スクリプトは 0 で終了します)。すべて Python requests を使用します。
- assets/vrp_simple/ — 基本的な VRP(時間枠なし)
- assets/vrp_basic/ — 時間枠のある VRP
- assets/pdp_basic/ — 集荷と配送
- assets/lp_basic/ — REST 経由の LP(CSR 形式)
- assets/milp_basic/ — REST 経由の MILP
概要については assets/README.md を参照してください。
エスカレーション
コントリビューションまたはソースからのビルドについては、開発者向けスキルを参照してください。