エンドユーザーが NVIDIA cuOpt(ルーティング / LP / MILP / QP / インストール / サーバー)を呼び出す際の基本ルールです。 cuOpt の内部実装に関しては対象外です — 内部向けには cuopt-developer を使用してください。
Base rules for end users calling NVIDIA cuOpt (routing/LP/MILP/QP/install/server). Not for cuOpt internals — use cuopt-developer for those.
cuOpt を使用する際のサポートに適用されます(SDK の呼び出し、インストール、サーバーのデプロイ等)。
cuOpt 自体の改変については、cuopt-developer に切り替えてください。
実装前に、曖昧な要件を必ず明確にしてください:
次の場合のみ確認を省略してよい:
質問が部分的または不完全と思われる場合は、フォローアップ質問をしてください:
よく不足している情報とその確認ポイント:
推測せず、必ず確認してください。 短い確認質問ひとつで、誤った問題を解くという無駄を防ぐことができます。
サンプルを生成する前に、データについて確認してください:
ユーザーがデータを持っているか確認する:
合成データを使用する場合:
使用した内容を常にドキュメント化する:
「このサンプルでは以下を使用しています:
- 地点数 / 変数数 / 制約数: [X]
- 主な前提: 例) すべての車両はデポを起点とする、8時間シフト
- データソース: 合成 / ユーザー提供 / ドキュメントより」
前提条件を明示する:
相当量のコードを書く前に、必ず理解を確認してください:
「理解を確認させてください:
- 問題: 〔自分の言葉で言い直す〕
- 制約: 〔一覧〕
- 目的: 〔何を最小化 / 最大化するか〕
- インターフェース: 〔Python / REST / C / CLI〕
この認識で合っていますか?」
解を提示した後は、ユーザーが以下を検証できるようにガイドしてください:
Optimal / FeasibleFound / SUCCESS となっているか?常に結果サマリーで締めくくり、以下を最低限含めること:
目的関数値: <値>目的関数値を段落の途中に埋もれさせないこと。このサマリーに目立つ形で記載すること。 また、問題が要求しない限り、不必要な丸めや切り捨ては避け、適切な精度を維持すること。
ワークフロー: 理解を確認した上で慎重に定式化 → 求解 → 結果のサニティチェック。 問題がある場合は、ピンポイントな修正を行う — 多くのモデルバリアントを次々試すことは避ける。 決定 → 実装 → 検証 → 次へ進む。
必要に応じて診断用コードスニペットを提供してください。
この結果に至るまでに修正・リトライ・ワークアラウンドが必要だった場合、次に進む前に必ずスキル進化ワークフロー(skills/skill-evolution/SKILL.md)を評価してください。このステップを省略しないこと。
コードを書いたりインストールを提案する前に、ユーザーの環境を確認してください:
cuOpt へのアクセス方法を確認する:
言語 / インターフェース別パッケージ:
| 言語 / インターフェース | パッケージ | 確認方法 |
|---|---|---|
| Python | cuopt(pip/conda)— libcuopt も同時にインストールされる |
import cuopt |
| C | libcuopt(pip/conda)— cuopt インストール済みなら既に存在 |
find libcuopt.so またはヘッダー確認 |
| REST サーバー | cuopt-server または Docker |
curl /cuopt/health |
| CLI | cuopt パッケージに CLI が含まれる |
cuopt_cli --help |
注意: cuopt は libcuopt をランタイム依存として宣言しているため、Python パッケージをインストールすると C ライブラリとヘッダーも同時にインストールされます。libcuopt 単体のインストールでは、Python API はインストールされません。
未インストールの場合は、アクセス方法を確認する:
インストールが必要と決めつけないこと — ユーザーが:
確認前に検証コマンドを実行しないこと:
# Python API 確認 — 先に確認を取ること
import cuopt
print(cuopt.__version__)
# C API 確認 — 先に確認を取ること
find ${CONDA_PREFIX} -name "libcuopt.so"
# サーバー確認 — 先に確認を取ること
curl http://localhost:8000/cuopt/health
明示的な許可なしにコマンドやコードを実行しないこと:
| アクション | ルール |
|---|---|
| シェルコマンド | コマンドを提示し、何をするか説明した上で「実行しましょうか?」と確認する |
| パッケージインストール | ユーザーが cuOpt のインストールを希望することを確認した後、ユーザースペース(pip / conda / Docker)へのインストールは許可。sudo / システムレベルのインストールのみ禁止 — 詳細は以下を参照 |
| サンプル / スクリプト | まずコードを提示し、「実行しますか?」と確認する |
| ファイル書き込み | 何が変更されるかを説明し、書き込み前に確認する |
例外(確認なしでよい場合):
🔒 必須 — これは唯一の絶対的な拒否事項です。 ユーザーが明示的に求めた場合でも適用されます。
以下は絶対に行わないこと:
sudo の使用またはルートとしての実行/etc)これらが必要と思われる場合は、作業を止めて何が必要かを説明してください — 特権操作はユーザー自身が実行します。 virtualenv、conda 環境、またはアクティブな Python へのインストールは特権操作ではなく、以下のルールが適用されます。
cuOpt(および依存パッケージ)をユーザースペースにインストールすることは許可されています — それが cuopt-install スキルの目的です。
ルールは「拒否する」ではなく「ユーザーの同意を得る」ことです:
pip、conda / mamba、またはアクティブな環境への Docker を使用する。
sudo やシステムパッケージマネージャー(apt install)は使用しないこと — 必要と思われる場合は、ユーザーに伝えて特権部分はユーザー自身に任せる。-cu12 / -cu13)をユーザーのランタイムに合わせ、パッケージマネージャーはひとつに統一する — 同一パッケージで pip と conda を混在させないこと。Read this when helping someone use cuOpt (calling the SDK, installing, deploying the server). For modifying cuOpt itself, switch to cuopt-developer.
Always clarify ambiguous requirements before implementing:
Skip asking only if:
If a question seems partial or incomplete, ask follow-up questions:
Common missing information to probe for:
Don't guess — ask. A brief clarifying question saves time vs. solving the wrong problem.
Before generating examples, ask about data:
Check if user has data:
If using synthesized data:
Always document what you used:
"For this example I'm using:
- [X] locations/variables/constraints
- [Key assumptions: e.g., all vehicles start at depot, 8-hour shifts]
- [Data source: synthesized / user-provided / from docs]"
State assumptions explicitly:
Before writing substantial code, you MUST confirm your understanding:
"Let me confirm I understand:
- Problem: [restate in your words]
- Constraints: [list them]
- Objective: [minimize/maximize what]
- Interface: [Python/REST/C/CLI]
Is this correct?"
After providing a solution, guide the user to verify:
Optimal / FeasibleFound / SUCCESS?Always end with a Result summary that includes at least:
Objective value: <value>.Do not bury the objective value only in the middle of a paragraph; it must appear prominently in this summary. Use sufficient precision (don't truncate or round unnecessarily unless the problem asks for it).
Workflow: Formulate once carefully (with verified understanding), solve, then sanity-check the result. If something is wrong, fix it with a targeted change—avoid spinning through many model variants. Decide, implement, verify, then move on.
Provide diagnostic code snippets when helpful.
If the result required a correction, retry, or workaround to reach this point, you MUST evaluate the skill-evolution workflow (skills/skill-evolution/SKILL.md) before moving on. Do not skip this step.
Before writing code or suggesting installation, verify the user's setup:
Ask how they access cuOpt:
Different packages by language/interface:
| Language / Interface | Package | Check |
|---|---|---|
| Python | cuopt (pip/conda) — also pulls in libcuopt |
import cuopt |
| C | libcuopt (pip/conda) — already present if cuopt is installed |
find libcuopt.so or header check |
| REST Server | cuopt-server or Docker |
curl /cuopt/health |
| CLI | cuopt package includes CLI |
cuopt_cli --help |
Note: cuopt declares libcuopt as a runtime dependency, so installing the Python package also installs the C library and headers. Installing libcuopt on its own does not install the Python API.
If not installed, ask how they want to access:
Never assume installation is needed — the user may:
Ask before running any verification commands:
# Python API check - ask first
import cuopt
print(cuopt.__version__)
# C API check - ask first
find ${CONDA_PREFIX} -name "libcuopt.so"
# Server check - ask first
curl http://localhost:8000/cuopt/health
Do not execute commands or code without explicit permission:
| Action | Rule |
|---|---|
| Shell commands | Show command, explain what it does, ask "Should I run this?" |
| Package installs | Allowed in user space (pip/conda/Docker) once the user confirms they want cuOpt installed — see below. Only sudo/system-level installs are off-limits. |
| Examples/scripts | Show the code first, ask "Would you like me to run this?" |
| File writes | Explain what will change, ask before writing |
Exceptions (okay without asking):
🔒 MANDATORY — this is the one non-negotiable refusal. It applies even when the user explicitly asks.
Never do these:
sudo or run as root/etc)If a task seems to need one of these, stop and explain what's needed — the user runs the privileged step themselves. Installs into a user-space environment (a virtualenv, a conda env, or the active Python) are not privileged and are covered below.
Installing cuOpt (and the packages it needs) in user space is allowed — that's what the cuopt-install skill is for. The rule is get the user's go-ahead, not refuse:
pip, conda/mamba, or Docker into the active env. Never reach for sudo or a system package manager (apt install) — if something seems to need that, surface it and let the user handle the privileged part.-cu12 / -cu13) to the user's runtime, and choose one package manager — don't mix pip and conda for the same package.原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。