mcpField
C
cuopt-server-api-python

cuopt-server-api-python

github.com/promptingcompanyクラウド・DevOps039 回インストール17 週間前に更新
リポジトリ

cuopt-server-api-python について

cuOpt Serverのデプロイと、PythonまたはcurlからREST APIを呼び出すためのスキルです。ルーティング例に加え、ルーティング、LP、MILPの実行可能なサンプルや、リクエストのポーリングとペイロード検証を扱います。

主な機能

  1. 01サーバーの起動とヘルスチェック
  2. 02PythonとcurlのREST例
  3. 03ルーティング要求と解のポーリング
  4. 04VRP、集配、LP、MILPのサンプル
  5. 05ペイロード検証とデバッグ

活用シーン

  1. 01ローカルまたはDockerでcuOpt Serverを起動
  2. 02Pythonまたはcurlからルーティング問題を送信
  3. 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.md
skill-card.md
skill.oms.sig
assets/
README.md
assets/lp_basic/
client.py
README.md
assets/milp_basic/
client.py
README.md
assets/pdp_basic/
client.py
README.md
assets/vrp_basic/
client.py
README.md
assets/vrp_simple/
client.py
README.md
evals/
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

ワークフロー

  1. /cuopt/request に POST し、reqId を取得します
  2. 解が準備できるまで /cuopt/solution/{reqId} をポーリングします
  3. レスポンスを解析します

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 APIREST
order_locationstask_locations
set_order_time_windows()task_time_windows
service_timesservice_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/README.md を参照してください。

エスカレーション

コントリビューションまたはソースからのビルドについては、開発者向けスキルを参照してください。

コメント