Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions skills/cuopt-server-api-python/assets/pdp_basic/client.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""
REST client: Pickup and delivery (PDP). Pairs (0,1) and (2,3); pickup before delivery.
Requires cuOpt server running. Exits 0 if server unreachable.
"""
"""REST client for the cuOpt pickup-and-delivery (PDP) example. See README.md."""

import os
import sys
Expand Down
14 changes: 14 additions & 0 deletions skills/cuopt-server-api-python/evals/evals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"id": "srv-py-eval-001-rest-routing-workflow",
"question": "I have the cuOpt REST server running locally. List the HTTP endpoints I need to call to submit a routing problem and retrieve the solution, and the key payload field names for VRP with time windows. No full client script.",
"expected_skill": "cuopt-server-api-python",
"expected_script": null,
"ground_truth": "The agent describes the asynchronous submit-then-poll pattern: POST /cuopt/request returns a reqId, then GET /cuopt/solution/{reqId} until the solution is ready. The top-level VRPTW payload fields are cost_matrix_data, travel_time_matrix_data (note: REST uses travel_time_matrix_data, not the Python-API name transit_time_matrix_data), task_data, fleet_data, and solver_config. Does not produce a runnable client script.",
"expected_behavior": [
"Describes the POST /cuopt/request → reqId → GET /cuopt/solution/{reqId} polling flow",
"Names cost_matrix_data, travel_time_matrix_data, task_data, fleet_data, solver_config as the VRPTW payload fields and flags the travel_time_matrix_data (REST) vs transit_time_matrix_data (Python) naming",
"Does not produce a full runnable client script"
]
}
]
4 changes: 2 additions & 2 deletions skills/cuopt-server-api-python/skill-card.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This skill is ready for commercial/non-commercial use. <br>
### License/Terms of Use: <br>
Apache 2.0 <br>
## Use Case: <br>
Developers and engineers deploying the cuOpt REST server and building client applications that submit optimization requests (routing, LP, MILP) via HTTP endpoints. <br>
Developers and engineers deploying or integrating with the NVIDIA cuOpt REST server for GPU-accelerated optimization (routing, LP, MILP), using Python or curl client examples to submit problems and retrieve solutions. <br>

### Deployment Geography for Use: <br>
Global <br>
Expand All @@ -24,7 +24,7 @@ Mitigation: Review and scan skill before deployment. <br>

## Skill Output: <br>
**Output Type(s):** [API Calls, Code, Shell commands, Configuration instructions] <br>
**Output Format:** [Markdown with inline code blocks] <br>
**Output Format:** [Markdown with inline code blocks (Python and bash)] <br>
**Output Parameters:** [1D] <br>
**Other Properties Related to Output:** [None] <br>

Expand Down
2 changes: 1 addition & 1 deletion skills/cuopt-server-api-python/skill.oms.sig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtc2VydmVyLWFwaS1weXRob24iLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWM4MGIxNjM1ZTY3N2FhMWVlZGRhMTY3Mzk5ZDVkMDMzNDgyN2UwNTY1YjNmODFkMmE1NzNlYTIyYjllOWY2NyIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlLAogICAgICAibWV0aG9kIjogImZpbGVzIiwKICAgICAgImhhc2hfdHlwZSI6ICJzaGEyNTYiLAogICAgICAiaWdub3JlX3BhdGhzIjogWwogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGlnbm9yZSIsCiAgICAgICAgIi5naXRhdHRyaWJ1dGVzIiwKICAgICAgICAiLmdpdGh1YiIKICAgICAgXQogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjgzYmIyMWRlYzY2YjMzY2M1NTRiNjdjYjc4NjNhNDhmNWM0ZGQwOTJjYWU1OTdlNDg0MzVlMmViNzZlYmUzMDQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiYTgzY2NlYjEwMWZlYjI4OTUzYmU5ZmEwNjg5ZjczMTc0Njc0OTE0ZTZlY2FhMmNlYTkzZGYxMDJlMDAxMTRmZiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9SRUFETUUubWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjFjNmU4OWVlZWU4OGRlN2QyOTY4YzY4NGNmOGI0NWJhOWJlMGMyZTQyNDFlMDk0ZjMwZjcyYzY3MDM0ZjFmN2IiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvbHBfYmFzaWMvUkVBRE1FLm1kIgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICI2YTZmZjUyZmVjNWM4ZmMyZDVjNTJmMjhiOTBkNjNiODU1YjQ1OTVlODQ3MWZlNWQyOGE1MDcxOTAwMDc2ZWViIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL2xwX2Jhc2ljL2NsaWVudC5weSIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiZmFhNGVlMTBhNjU4NTgzOWFlYjQ0OTJlMDc3MTM2MDM4ZWVlYjBiY2RlYmI5MmExOGIyNGVhYTVkZWQyZTY1OSIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9taWxwX2Jhc2ljL1JFQURNRS5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiZTZkY2VkMWVjNWRjNjcyZDMzYjI4M2UwOTJiMzkwNGE0ODcwYWUxMDVmYjE3ZTM5MDQzMGQ1ODNmNzI0MDlhNyIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9taWxwX2Jhc2ljL2NsaWVudC5weSIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiNWMwYjdlM2MzNWViMTExZjkyNDZkNDlhODAyMjEwOGI0ZDRlNGVlMjg0YmVmMjgzZjVhYTIxMjBmYmMzZWQwZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9wZHBfYmFzaWMvUkVBRE1FLm1kIgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICJhN2I1OGVhZDkzYjBhNTNlYTQ4N2FlOWZiM2RhNzcxYjhiN2FiZTlkY2Q5MjBiNTkzZTA1OTMxODRlY2Q1NDc4IiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL3BkcF9iYXNpYy9jbGllbnQucHkiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjY5MjgwNzQ0MTNkZmUxZWE0MTViZjFkZWU3OWNlYmMxODY1NDZmZWNhOGRjNDBmZWUxZTQyYTI5NjUxZTUxNjQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvdnJwX2Jhc2ljL1JFQURNRS5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiNjNkMWViNmRmMGM4NDE3NzA5MzgwNGE2NjE4OWZiNmFhZTUwYTdlYTRkN2NkYjc0MjVlN2E2MTljY2MwYjEzNiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy92cnBfYmFzaWMvY2xpZW50LnB5IgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICI2ZWM0NWJiNWE1ZTBmMWExMjJmMjQxMTc5MTg3YzRlNjA4Y2JjYTg4ZDgwODFkYTQyMjkxNjRkMjgxMzE2YjVjIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL3ZycF9zaW1wbGUvUkVBRE1FLm1kIgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICJmN2UxYWU0OTYwN2M5NGUzYzgxOGIxNjkwMDZhMzgzNGM3NjJjMTU4ZmZjMmY0MzYyOTVkMTgwYzgyNTllZTU5IiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL3ZycF9zaW1wbGUvY2xpZW50LnB5IgogICAgICB9LAogICAgICB7CiAgICAgICAgImRpZ2VzdCI6ICI1N2UyNDZhN2Q4NDBkOWFjYjgxOTcwODQ2MDk0MDBhMTY4NmYzM2I4Yzc2ZjNmMjEwYjUzZTAxYzIzMzQ4MzUzIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAic2tpbGwtY2FyZC5tZCIKICAgICAgfQogICAgXQogIH0KfQ==","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGUCMG5NlHFEEkhL/JUJ7imRrcMs6kEh9urr2mFPYGuqFYxbMWxGSh8xNpmAfCxZ2R4/nwIxAK7FwRomfRdc7J4FpewRt8MrWgSBUyVupUdt1aurDvdP22i97e3VE09kuePY9CFMsQ==","keyid":""}]}}
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiY3VvcHQtc2VydmVyLWFwaS1weXRob24iLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDYyNGY3ZDBiY2E5ZTIwYmZjMDViNDMzZmYzYzc4MWFlMGJjNmYxYjgzNjM0ZDMyZjJmN2Y1MmE4MjRkOTkzYiIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlLAogICAgICAiaWdub3JlX3BhdGhzIjogWwogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGh1YiIsCiAgICAgICAgIi5naXRhdHRyaWJ1dGVzIiwKICAgICAgICAiLmdpdGlnbm9yZSIKICAgICAgXSwKICAgICAgIm1ldGhvZCI6ICJmaWxlcyIsCiAgICAgICJoYXNoX3R5cGUiOiAic2hhMjU2IgogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiU0tJTEwubWQiLAogICAgICAgICJkaWdlc3QiOiAiODNiYjIxZGVjNjZiMzNjYzU1NGI2N2NiNzg2M2E0OGY1YzRkZDA5MmNhZTU5N2U0ODQzNWUyZWI3NmViZTMwNCIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvUkVBRE1FLm1kIiwKICAgICAgICAiZGlnZXN0IjogImE4M2NjZWIxMDFmZWIyODk1M2JlOWZhMDY4OWY3MzE3NDY3NDkxNGU2ZWNhYTJjZWE5M2RmMTAyZTAwMTE0ZmYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL2xwX2Jhc2ljL1JFQURNRS5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICIxYzZlODllZWVlODhkZTdkMjk2OGM2ODRjZjhiNDViYTliZTBjMmU0MjQxZTA5NGYzMGY3MmM2NzAzNGYxZjdiIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9scF9iYXNpYy9jbGllbnQucHkiLAogICAgICAgICJkaWdlc3QiOiAiNmE2ZmY1MmZlYzVjOGZjMmQ1YzUyZjI4YjkwZDYzYjg1NWI0NTk1ZTg0NzFmZTVkMjhhNTA3MTkwMDA3NmVlYiIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvbWlscF9iYXNpYy9SRUFETUUubWQiLAogICAgICAgICJkaWdlc3QiOiAiZmFhNGVlMTBhNjU4NTgzOWFlYjQ0OTJlMDc3MTM2MDM4ZWVlYjBiY2RlYmI5MmExOGIyNGVhYTVkZWQyZTY1OSIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvbWlscF9iYXNpYy9jbGllbnQucHkiLAogICAgICAgICJkaWdlc3QiOiAiZTZkY2VkMWVjNWRjNjcyZDMzYjI4M2UwOTJiMzkwNGE0ODcwYWUxMDVmYjE3ZTM5MDQzMGQ1ODNmNzI0MDlhNyIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvcGRwX2Jhc2ljL1JFQURNRS5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICI1YzBiN2UzYzM1ZWIxMTFmOTI0NmQ0OWE4MDIyMTA4YjRkNGU0ZWUyODRiZWYyODNmNWFhMjEyMGZiYzNlZDBkIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy9wZHBfYmFzaWMvY2xpZW50LnB5IiwKICAgICAgICAiZGlnZXN0IjogIjk4MWJjYTA5NTFhYzlkODUwMDc0YmNjMzA1YmE2ZjIxYTcwOTQ1ZjA4MGM4MjkwOTQ3Y2U3ODQwMjhiZTE5ZmUiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiYXNzZXRzL3ZycF9iYXNpYy9SRUFETUUubWQiLAogICAgICAgICJkaWdlc3QiOiAiNjkyODA3NDQxM2RmZTFlYTQxNWJmMWRlZTc5Y2ViYzE4NjU0NmZlY2E4ZGM0MGZlZTFlNDJhMjk2NTFlNTE2NCIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJhc3NldHMvdnJwX2Jhc2ljL2NsaWVudC5weSIsCiAgICAgICAgImRpZ2VzdCI6ICI2M2QxZWI2ZGYwYzg0MTc3MDkzODA0YTY2MTg5ZmI2YWFlNTBhN2VhNGQ3Y2RiNzQyNWU3YTYxOWNjYzBiMTM2IgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy92cnBfc2ltcGxlL1JFQURNRS5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICI2ZWM0NWJiNWE1ZTBmMWExMjJmMjQxMTc5MTg3YzRlNjA4Y2JjYTg4ZDgwODFkYTQyMjkxNjRkMjgxMzE2YjVjIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImFzc2V0cy92cnBfc2ltcGxlL2NsaWVudC5weSIsCiAgICAgICAgImRpZ2VzdCI6ICJmN2UxYWU0OTYwN2M5NGUzYzgxOGIxNjkwMDZhMzgzNGM3NjJjMTU4ZmZjMmY0MzYyOTVkMTgwYzgyNTllZTU5IgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJkaWdlc3QiOiAiYjY5NTliYWIxMDNhNWFkM2M2ODY2NTdjZTBkNDVkNzllYWE4OTliNmYzYjk2ZDEwZDg3MjFiZmY4ZWYzNjcxOSIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIiwKICAgICAgICAiZGlnZXN0IjogImUxMmE2N2JkZTgyYzE1MjhkMGZhNTAzMWEzZWRkZTYxZjQyY2FhODcwZTFlMDQ4NzdhMmMwMGI0ZDkzYmU2NDMiCiAgICAgIH0KICAgIF0KICB9Cn0=","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGUCMQDDU76ly0g0lgLERVy4o2zjN0SJZqGTfYuatfamB7oMFZcSPlQFu4iRWVyTpYHqBBsCMHzTlk3kMwyyjDyW0mM/ydMYLHZVcVMOOiBoxsGvc0IYbSqrWh50ZirCUXjkZYWmjw==","keyid":""}]}}
14 changes: 14 additions & 0 deletions skills/numerical-optimization-formulation/evals/evals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"id": "numopt-form-eval-001-parse-production-planning",
"question": "A factory operates 3 production lines and employs 50 workers. It plans to produce products A, B, and C next month. Each product has a known per-unit cost and revenue. Determine the monthly production plan. Classify each sentence as parameter, constraint, decision, or objective, and state the (possibly implicit) objective.",
"expected_skill": "numerical-optimization-formulation",
"expected_script": null,
"ground_truth": "The agent classifies each sentence with the four-label framework (parameter / constraint / decision / objective), treats the fixed facts (3 production lines, 50 workers, known cost and revenue) as parameters and the production plan as the decision, and identifies the implicit objective as maximize profit (since both costs and revenues are given) — not minimize cost. Does not produce code.",
"expected_behavior": [
"Classifies each sentence using the four labels (parameter / constraint / decision / objective)",
"Identifies the implicit objective as maximize profit (revenue − cost), not minimize cost, since both costs and revenues are given",
"Does not produce code or an API call sequence — this skill is concepts only"
]
}
]
7 changes: 4 additions & 3 deletions skills/numerical-optimization-formulation/skill-card.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This skill is ready for commercial/non-commercial use. <br>
### License/Terms of Use: <br>
Apache 2.0 <br>
## Use Case: <br>
Developers and engineers use this skill to parse optimization problem statements, identify problem types (LP, MILP, QP), and produce correct mathematical formulations from natural-language descriptions. <br>
Developers and engineers use this skill to parse optimization problem statements, classify problem types (LP, MILP, QP), and produce structured mathematical formulations from natural-language descriptions. <br>

### Deployment Geography for Use: <br>
Global <br>
Expand All @@ -19,11 +19,12 @@ Mitigation: Review and scan skill before deployment. <br>

## Reference(s): <br>
- [cuOpt User Guide](https://docs.nvidia.com/cuopt/user-guide/latest/introduction.html) <br>
- [cuOpt API Reference](https://docs.nvidia.com/cuopt/user-guide/latest/api.html) <br>


## Skill Output: <br>
**Output Type(s):** [Analysis, Code] <br>
**Output Format:** [Markdown with mathematical formulations] <br>
**Output Type(s):** [Analysis, Formulation] <br>
**Output Format:** [Markdown with mathematical notation] <br>
**Output Parameters:** [1D] <br>
**Other Properties Related to Output:** [None] <br>

Expand Down
Loading
Loading