0 / 0
Retourner à la version anglaise de la documentation
Exemple d'API REST
Dernière mise à jour : 05 déc. 2024
Déploiement de l'API REST Decision Optimization

Vous pouvez déployer un modèle d'Decision Optimization, créer et surveiller des tâches et obtenir des solutions à l'aide de l'API REST dewatsonx.ai Runtime.

Avant de commencer

Vous devez disposer d'un compteIBM Cloud Voir https://www.ibm.com/cloud/.
  1. Connectez-vous à IBM Cloud.
  2. Créez votre clé d'API. Copiez-la ou téléchargez-la à partir de la fenêtre ouverte où la clé API a été créée avec succès (vous ne pouvez plus y accéder lorsque vous fermez cette fenêtre).

  3. Facultatif : Créer un service d'exécutionwatsonx.ai
  4. Sélectionnez une instance watsonx.ai Runtime dans la liste des services AI/MachineMachine Learning la vue de liste des ressourcesIBM Cloud

    Copiez le nom, le GUID et le CRN du panneau d'information de votre instance watsonx.ai Runtime. (Pour ouvrir le panneau d'information, cliquez n'importe où dans la ligne à côté du nom de votre service watsonx.ai Runtime, mais pas sur le nom lui-même. Le volet d'information s'ouvre alors dans la même fenêtre)

  5. Facultatif : Créez un Cloud Object Storage.
  6. Sélectionnez une instance " Cloud Object Storage dans la liste des ressources " Stockage de la vue " IBM Cloud Liste des ressources.

    Copiez le nom et le CRN du panneau d'information de votre instance de stockage.

  7. Facultatif : Créez un espace de déploiement à partir de l'interface utilisateur https://dataplatform.cloud.ibm.com. Vous pouvez également créer un espace de déploiement en utilisant l'API REST. Voir Création d'un espace de déploiement à l'aide de l'API REST
  8. Sélectionnez un espace de déploiement dans la liste des déploiements.

    Copiez le " GUID de l'espace du " Gérer > onglet Général. Pour plus d'informations, reportez-vous à la page relative aux espaces de déploiement.

A propos de cette tâche

Les étapes suivantes vous montrent comment déployer un modèle d'Decision Optimization à l'aide de l'API REST du moteur d'exécutionwatsonx.ai L'exemple d'API REST utilise curl, un outil de ligne de commande et une bibliothèque pour le transfert de données à l'aide d'une syntaxe d'URL. Vous pouvez télécharger curl et en savoir plus sur le site http://curl.haxx.se. Pour plus d'informations sur les API REST pertinentes pour Decision Optimization, voir les sections suivantes:

Pour les utilisateurs Windows, utilisez ^ au lieu de \ comme séparateur multiligne et des guillemets doubles " dans ces exemples de code. Les utilisateurs Windows doivent également utiliser l'indentation d'au moins un espace de caractères dans les lignes d'en-tête.

Pour plus de clarté, certains exemples de code dans cette procédure ont été placés dans un fichier json pour rendre les commandes plus lisibles et plus faciles à utiliser.

Une fois que vous avez créé un déploiement à l'aide de l'API REST, vous pouvez également le visualiser et lui envoyer des tâches à partir de la page Déploiements > Espaces de l'interface utilisateur https://dataplatform.cloud.ibm.com.

Procédure

  1. Générez un jeton IAM à l'aide de votre clé APIIBM Cloud en procédant comme suit.
    curl "https://iam.cloud.ibm.com/identity/token" \
      -d "apikey=YOUR_API_KEY_HERE&grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -H "Authorization: Basic Yng6Yng="
    Exemple de sortie :
    {
       "access_token": "****** obtained IAM token ******************************",
       "refresh_token": "**************************************",
       "token_type": "Bearer",
       "expires_in": 3600,
       "expiration": 1554117649,
       "scope": "ibm openid"
    }

    Utilisez le jeton obtenu (valeur access_token) ajouté en préfixe par le mot Bearer dans l'en-tête Authorization et watsonx.ai Runtime service GUID dans l'en-tête ML-Instance-ID, dans tous les appels d'API.

  2. Facultatif: Si vous n'avez pas obtenu votre SPACE-ID à partir de l'interface utilisateur comme décrit précédemment, vous pouvez créer un espace à l'aide de l'API REST comme suit. Utilisez le jeton précédemment obtenu précédé du mot bearer dans l'en-tête Authorization de tous les appels API.
    curl --location --request POST \
      "https://api.dataplatform.cloud.ibm.com/v2/spaces" \
      -H "Authorization: Bearer TOKEN-HERE" \
      -H "ML-Instance-ID: MACHINE-LEARNING-SERVICE-GUID-HERE" \
      -H "Content-Type: application/json" \
      --data-raw "{
      "name": "SPACE-NAME-HERE",
      "description": "optional description here",
      "storage": {
          "resource_crn": "COS-CRN-ID-HERE"
      },
      "compute": [{
        "name": "MACHINE-LEARNING-SERVICE-NAME-HERE",
        "crn": "MACHINE-LEARNING-SERVICE-CRN-ID-HERE"
      }]
    }"
    Pour les utilisateurs Windows , placez la commande --data-raw sur une seule ligne et remplacez tous les " par \" dans cette commande comme suit :
    curl --location --request POST ^
      "https://api.dataplatform.cloud.ibm.com/v2/spaces" ^
      -H "Authorization: Bearer TOKEN-HERE" ^
      -H "ML-Instance-ID: MACHINE-LEARNING-SERVICE-GUID-HERE" ^
      -H "Content-Type: application/json" ^
      --data-raw "{\"name\": "SPACE-NAME-HERE",\"description\": \"optional description here\",\"storage\": {\"resource_crn\": \"COS-CRN-ID-HERE\"  },\"compute\": [{\"name\": "MACHINE-LEARNING-SERVICE-NAME-HERE\",\"crn\": \"MACHINE-LEARNING-SERVICE-CRN-ID-HERE\"  }]}"
    Vous pouvez également insérer les données dans un fichier séparé.
    Une ID ESPACE est renvoyée dans la zone id de la section metadata.

    Exemple de sortie :

    {
      "entity": {
        "compute": [
          {
            "crn": "MACHINE-LEARNING-SERVICE-CRN",
            "guid": "MACHINE-LEARNING-SERVICE-GUID",
            "name": "MACHINE-LEARNING-SERVICE-NAME",
            "type": "machine_learning"
          }
        ],
        "description": "string",
        "members": [
          {
            "id": "XXXXXXX",
            "role": "admin",
            "state": "active",
            "type": "user"
          }
        ],
        "name": "name",
        "scope": {
          "bss_account_id": "account_id"
        },
        "status": {
          "state": "active"
        }
      },
      "metadata": {
        "created_at": "2020-07-17T08:36:57.611Z",
        "creator_id": "XXXXXXX",
        "id": "SPACE-ID",
        "url": "/v2/spaces/SPACE-ID"
      }
    }

    Vous devez attendre que l'état de votre espace de déploiement soit "active" avant de continuer. Pour interroger le statut, procédez comme suit.

    curl --location --request GET "https://api.dataplatform.cloud.ibm.com/v2/spaces/SPACE-ID-HERE" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json"
  3. Créer un modèle nouveau Decision Optimization

    Toutes les demandes d'API requièrent un paramètre de version prenant une date au format version=YYYY-MM-DD. Cet exemple de code affiche un modèle qui utilise le fichier create_model.json. L'URL variera en fonction de la région/localisation choisie pour votre service watsonx.ai Runtime. Voir URL des points de terminaison.

    curl --location --request POST \
      "https://us-south.ml.cloud.ibm.com/ml/v4/models?version=2020-08-01" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json" \
      -d @create_model.json
    Le fichier create_model.json contient le code suivant :
    {
      "name": "ModelName",
      "description": "ModelDescription",
      "type": "do-docplex_22.1",
      "software_spec": {
        "name": "do_22.1"
      },
      "custom": {
          "decision_optimization": {
            "oaas.docplex.python": "3.11"
          }
      },
      "space_id": "SPACE-ID-HERE"
    }

    La version Python est indiquée explicitement ici dans un bloc custom. Facultatif. Sans cela, votre modèle utilisera la version par défaut qui est actuellement Python 3.11. Comme la version par défaut évoluera avec le temps, l'indication de la version Python vous permet explicitement de le modifier ultérieurement ou de continuer à utiliser une ancienne version prise en charge lorsque la version par défaut est mise à jour. Les versions actuellement prises en charge sont 3.11 et 3.10 (obsolète).

    Si vous souhaitez pouvoir exécuter des travaux pour ce modèle à partir de l'interface utilisateur, au lieu d'utiliser seulement l'API REST, vous devez définir le schéma pour les données d'entrée et de sortie. Si vous ne définissez pas le schéma lorsque vous créez le modèle, vous pouvez uniquement exécuter les travaux à l'aide de l'API REST et non à partir de l'interface utilisateur.

    Vous pouvez également utiliser le schéma spécifié pour l'entrée et la sortie dans votre modèle d'optimisation:

    {
      "name": "Diet-Model-schema",
      "description": "Diet",
      "type": "do-docplex_22.1",
      "schemas": {
        "input": [
          {
            "id": "diet_food_nutrients",
            "fields": [
              { "name": "Food",  "type": "string" },
              { "name": "Calories", "type": "double" },
              { "name": "Calcium", "type": "double" },
              { "name": "Iron", "type": "double" },
              { "name": "Vit_A", "type": "double" },
              { "name": "Dietary_Fiber", "type": "double" },
              { "name": "Carbohydrates", "type": "double" },
              { "name": "Protein", "type": "double" }
            ]
          },
          {
            "id": "diet_food",
            "fields": [
              { "name": "name", "type": "string" },
              { "name": "unit_cost", "type": "double" },
              { "name": "qmin", "type": "double" },
              { "name": "qmax", "type": "double" }
            ]
          },
          {
            "id": "diet_nutrients",
            "fields": [
              { "name": "name", "type": "string" },
              { "name": "qmin", "type": "double" },
              { "name": "qmax", "type": "double" }
            ]
          }
        ],
        "output": [
          {
            "id": "solution",
            "fields": [
              { "name": "name", "type": "string" },
              { "name": "value", "type": "double" }
            ]
          }
        ]
      },
      "software_spec": {
        "name": "do_22.1"
      },
      "space_id": "SPACE-ID-HERE"
    }
    
    Lorsque vous publiez un modèle, vous fournissez des informations sur son type de modèle et sur la spécification logicielle à utiliser.
    Les types de modèle admis sont par exemple :
    • do-opl_22.1 pour les modèles OPL
    • do-cplex_22.1 pour les modèles CPLEX
    • do-cpo_22.1 pour les modèles CP
    • do-docplex_22.1 pour les modèles Python

    La version 20.1 peut également être utilisée pour ces types de modèle.

    Pour la spécification logicielle, vous pouvez utiliser les spécifications par défaut en utilisant leurs noms do_22.1 ou do_20.1. Voir aussi Bloc-notes d'extension de spécification logicielle qui explique comment étendre la spécification logicielle Decision Optimization (environnements d'exécution avec des bibliothèques Python supplémentaires pour les modèles DOcplex).

    Une ID-MODÈLE est renvoyée dans la zone id dans metadata.

    Exemple de sortie :
    {
      "entity": {
        "software_spec": {
          "id": "SOFTWARE-SPEC-ID"
        },
        "type": "do-docplex_20.1"
      },
      "metadata": {
        "created_at": "2020-07-17T08:37:22.992Z",
        "description": "ModelDescription",
        "id": "MODEL-ID",
        "modified_at": "2020-07-17T08:37:22.992Z",
        "name": "ModelName",
        "owner": "***********",
        "space_id": "SPACE-ID"
      }
    }
  4. Téléchargez une formulation de modèle Decision Optimization prête pour le déploiement.
    Tout d'abord, compressez votre modèle dans un fichier (tar.gz, .zip or .jar) et téléchargez-le pour qu'il soit déployé par le service watsonx.ai Runtime.
    Cet exemple de code télécharge un modèle nommé diet.zip, contenant un modèle Python mais pas de données maître :
    curl --location --request PUT \
      "https://us-south.ml.cloud.ibm.com/ml/v4/models/MODEL-ID-HERE/content?version=2020-08-01&space_id=SPACE-ID-HERE&content_format=native" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/gzip" \
      --data-binary "@diet.zip"
    Vous pouvez télécharger cet exemple et d'autres modèles à partir du site DO-samples. Sélectionnez le sous-dossier correspondant au produit et à la version en question.
  5. Déploiement de votre modèle
    Créez une référence à votre modèle. Utilisez l'ID d'espace, l'ID de modèle obtenu lorsque vous avez créé votre modèle prêt pour le déploiement et la spécification matérielle. Par exemple :
    curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployments?version=2020-08-01" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json" \
      -d @deploy_model.json
    The deploy_model.json file contains the following code:
    {
      "name": "Test-Diet-deploy",
      "space_id": "SPACE-ID-HERE",
      "asset": {
        "id": "MODEL-ID-HERE"
      },
      "hardware_spec": {
        "name": "S"
      },
      "batch": {}
    }
    La zone ID-DÉPLOIEMENT est renvoyée dans la zone id dans metadata. Exemple de sortie :
    {
      "entity": {
        "asset": {
          "id": "MODEL-ID"
        },
        "custom": {},
        "description": "",
        "hardware_spec": {
          "id": "HARDWARE-SPEC-ID",
          "name": "S",
          "num_nodes": 1
        },
        "name": "Test-Diet-deploy",
        "space_id": "SPACE-ID",
        "status": {
          "state": "ready"
        }
      },
      "metadata": {
        "created_at": "2020-07-17T09:10:50.661Z",
        "description": "",
        "id": "DEPLOYMENT-ID",
        "modified_at": "2020-07-17T09:10:50.661Z",
        "name": "test-Diet-deploy",
        "owner": "**************",
        "space_id": "SPACE-ID"
      }
    }
  6. Une fois déployé, vous pouvez surveiller l'état de déploiement de votre modèle. Utilisez l'ID de déploiement.
    Par exemple :
    curl --location --request GET "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json"

    Exemple de sortie :

    {
      "entity": {
        "asset": {
          "id": "MODEL-ID"
        },
        "custom": {},
        "description": "",
        "hardware_spec": {
          "id": "HARDWARE-SPEC-ID",
          "name": "S",
          "num_nodes": 1
        },
        "name": "Test-Diet-deploy",
        "space_id": "SPACE-ID",
        "status": {
          "state": "ready"
        }
      },
      "metadata": {
        "created_at": "2020-11-04T16:22:14.442Z",
        "description": "",
        "id": "DEPLOYMENT-ID",
        "modified_at": "2020-11-04T16:22:14.442Z",
        "name": "test-Diet-deploy",
        "owner": "**************",
        "space_id": "SPACE-ID"
      }
    }
  7. Vous pouvez ensuite soumettre des travaux pour votre modèle déployé en définissant les données d'entrée et de sortie (résultats de la résolution d'optimisation) et le fichier journal.
    Par exemple, les éléments suivants montrent le contenu d'un fichier appelé myjob.json. Il contient des données d'entrée (en ligne), des paramètres de résolution et indique que la sortie doit être un fichier .csv. Pour plus d'informations, voir Decision Optimization batch deployment and model execution.
    {
    	"name":"test-job-diet",
    	"space_id": "SPACE-ID-HERE",
    	"deployment": {
    		"id": "DEPLOYMENT-ID-HERE"
    	},
    	"decision_optimization" : {
    		"solve_parameters" : {
    			"oaas.logAttachmentName":"log.txt",
    			"oaas.logTailEnabled":"true"
    		},
    		"input_data": [
    			{
    				"id":"diet_food.csv",
    				"fields" : ["name","unit_cost","qmin","qmax"],
    				"values" : [
    					["Roasted Chicken", 0.84, 0, 10],
    					["Spaghetti W/ Sauce", 0.78, 0, 10],
    					["Tomato,Red,Ripe,Raw", 0.27, 0, 10],
    					["Apple,Raw,W/Skin", 0.24, 0, 10],
    					["Grapes", 0.32, 0, 10],
    					["Chocolate Chip Cookies", 0.03, 0, 10],
    					["Lowfat Milk", 0.23, 0, 10],
    					["Raisin Brn", 0.34, 0, 10],
    					["Hotdog", 0.31, 0, 10]
    				]
    			},
    			{
    				"id":"diet_food_nutrients.csv",
    				"fields" : ["Food","Calories","Calcium","Iron","Vit_A","Dietary_Fiber","Carbohydrates","Protein"],
    				"values" : [
    					["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2],
    					["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2],
    					["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1],
    					["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3],
    					["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2],
    					["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9],
    					["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1],
    					["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4],
    					["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4]
    				]
    			},
    			{
    				"id":"diet_nutrients.csv",
    				"fields" : ["name","qmin","qmax"],
    				"values" : [
    					["Calories", 2000, 2500],
    					["Calcium", 800, 1600],
    					["Iron", 10, 30],
    					["Vit_A", 5000, 50000],
    					["Dietary_Fiber", 25, 100],
    					["Carbohydrates", 0, 300],
    					["Protein", 50, 100]
    				]
    			}
    		],
    		"output_data": [
    			{
    				"id":".*\\.csv"
    			}
    		]
    	}
    }
    Cet exemple de code affiche un travail qui utilise ce fichier myjob.json.
    curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs?version=2020-08-01&space_id=SPACE-ID-HERE" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json" \
      -H "cache-control: no-cache" \
      -d @myjob.json
    
    Un ID de travail est renvoyé. Exemple de sortie : (le travail est mis en file d'attente)
    {
      "entity": {
        "decision_optimization": {
          "input_data": [{
            "id": "diet_food.csv",
            "fields": ["name", "unit_cost", "qmin", "qmax"],
            "values": [["Roasted Chicken", 0.84, 0, 10], ["Spaghetti W/ Sauce", 0.78, 0, 10], ["Tomato,Red,Ripe,Raw", 0.27, 0, 10], ["Apple,Raw,W/Skin", 0.24, 0, 10], ["Grapes", 0.32, 0, 10], ["Chocolate Chip Cookies", 0.03, 0, 10], ["Lowfat Milk", 0.23, 0, 10], ["Raisin Brn", 0.34, 0, 10], ["Hotdog", 0.31, 0, 10]]
          }, {
            "id": "diet_food_nutrients.csv",
            "fields": ["Food", "Calories", "Calcium", "Iron", "Vit_A", "Dietary_Fiber", "Carbohydrates", "Protein"],
            "values": [["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2], ["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2], ["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1], ["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3], ["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2], ["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9], ["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1], ["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4], ["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4]]
          }, {
            "id": "diet_nutrients.csv",
            "fields": ["name", "qmin", "qmax"],
            "values": [["Calories", 2000, 2500], ["Calcium", 800, 1600], ["Iron", 10, 30], ["Vit_A", 5000, 50000], ["Dietary_Fiber", 25, 100], ["Carbohydrates", 0, 300], ["Protein", 50, 100]]
          }],
          "output_data": [
            {
              "id": ".*\\.csv"
            }
          ],
          "solve_parameters": {
            "oaas.logAttachmentName": "log.txt",
            "oaas.logTailEnabled": "true"
          },
          "status": {
            "state": "queued"
          }
        },
        "deployment": {
          "id": "DEPLOYMENT-ID"
        },
        "platform_job": {
          "job_id": "",
          "run_id": ""
        }
      },
      "metadata": {
        "created_at": "2020-07-17T10:42:42.783Z",
        "id": "JOB-ID",
        "name": "test-job-diet",
        "space_id": "SPACE-ID"
      }
    }
    
  8. Vous pouvez également surveiller les états des travaux. Utilisez l'ID de travail
    Par exemple :
    curl --location --request GET \
      "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \
      -H "Authorization: bearer TOKEN-HERE" \
      -H "Content-Type: application/json"
    Exemple de sortie : (le travail est terminé)
    {
      "entity": {
        "decision_optimization": {
          "input_data": [{
            "id": "diet_food.csv",
            "fields": ["name", "unit_cost", "qmin", "qmax"],
            "values": [["Roasted Chicken", 0.84, 0, 10], ["Spaghetti W/ Sauce", 0.78, 0, 10], ["Tomato,Red,Ripe,Raw", 0.27, 0, 10], ["Apple,Raw,W/Skin", 0.24, 0, 10], ["Grapes", 0.32, 0, 10], ["Chocolate Chip Cookies", 0.03, 0, 10], ["Lowfat Milk", 0.23, 0, 10], ["Raisin Brn", 0.34, 0, 10], ["Hotdog", 0.31, 0, 10]]
          }, {
            "id": "diet_food_nutrients.csv",
            "fields": ["Food", "Calories", "Calcium", "Iron", "Vit_A", "Dietary_Fiber", "Carbohydrates", "Protein"],
            "values": [["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2], ["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2], ["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1], ["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3], ["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2], ["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9], ["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1], ["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4], ["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4]]
          }, {
            "id": "diet_nutrients.csv",
            "fields": ["name", "qmin", "qmax"],
            "values": [["Calories", 2000, 2500], ["Calcium", 800, 1600], ["Iron", 10, 30], ["Vit_A", 5000, 50000], ["Dietary_Fiber", 25, 100], ["Carbohydrates", 0, 300], ["Protein", 50, 100]]
          }],
          "output_data": [{
            "fields": ["Name", "Value"],
            "id": "kpis.csv",
            "values": [["Total Calories", 2000], ["Total Calcium", 800.0000000000001], ["Total Iron", 11.278317739831891], ["Total Vit_A", 8518.432542485823], ["Total Dietary_Fiber", 25], ["Total Carbohydrates", 256.80576358904455], ["Total Protein", 51.17372234135308], ["Minimal cost", 2.690409171696264]]
          }, {
            "fields": ["name", "value"],
            "id": "solution.csv",
            "values": [["Spaghetti W/ Sauce", 2.1551724137931036], ["Chocolate Chip Cookies", 10], ["Lowfat Milk", 1.8311671008899097], ["Hotdog", 0.9296975991385925]]
          }],
          "output_data_references": [],
          "solve_parameters": {
            "oaas.logAttachmentName": "log.txt",
            "oaas.logTailEnabled": "true"
          },
          "solve_state": {
            "details": {
              "KPI.Minimal cost": "2.690409171696264",
              "KPI.Total Calcium": "800.0000000000001",
              "KPI.Total Calories": "2000.0",
              "KPI.Total Carbohydrates": "256.80576358904455",
              "KPI.Total Dietary_Fiber": "25.0",
              "KPI.Total Iron": "11.278317739831891",
              "KPI.Total Protein": "51.17372234135308",
              "KPI.Total Vit_A": "8518.432542485823",
              "MODEL_DETAIL_BOOLEAN_VARS": "0",
              "MODEL_DETAIL_CONSTRAINTS": "7",
              "MODEL_DETAIL_CONTINUOUS_VARS": "9",
              "MODEL_DETAIL_INTEGER_VARS": "0",
              "MODEL_DETAIL_KPIS": "[\"Total Calories\", \"Total Calcium\", \"Total Iron\", \"Total Vit_A\", \"Total Dietary_Fiber\", \"Total Carbohydrates\", \"Total Protein\", \"Minimal cost\"]",
              "MODEL_DETAIL_NONZEROS": "57",
              "MODEL_DETAIL_TYPE": "LP",
              "PROGRESS_CURRENT_OBJECTIVE": "2.6904091716962637"
            },
            "latest_engine_activity": [
              "[2020-07-21T16:37:36Z, INFO] Model: diet",
              "[2020-07-21T16:37:36Z, INFO]  - number of variables: 9",
              "[2020-07-21T16:37:36Z, INFO]    - binary=0, integer=0, continuous=9",
              "[2020-07-21T16:37:36Z, INFO]  - number of constraints: 7",
              "[2020-07-21T16:37:36Z, INFO]    - linear=7",
              "[2020-07-21T16:37:36Z, INFO]  - parameters: defaults",
              "[2020-07-21T16:37:36Z, INFO]  - problem type is: LP",
              "[2020-07-21T16:37:36Z, INFO] Warning: Model: \"diet\" is not a MIP problem, progress listeners are disabled",
              "[2020-07-21T16:37:36Z, INFO] objective: 2.690",
              "[2020-07-21T16:37:36Z, INFO]   \"Spaghetti W/ Sauce\"=2.155",
              "[2020-07-21T16:37:36Z, INFO]   \"Chocolate Chip Cookies\"=10.000",
              "[2020-07-21T16:37:36Z, INFO]   \"Lowfat Milk\"=1.831",
              "[2020-07-21T16:37:36Z, INFO]   \"Hotdog\"=0.930",
              "[2020-07-21T16:37:36Z, INFO] solution.csv"
            ],
            "solve_status": "optimal_solution"
          },
          "status": {
            "completed_at": "2020-07-21T16:37:36.989Z",
            "running_at": "2020-07-21T16:37:35.622Z",
            "state": "completed"
          }
        },
        "deployment": {
          "id": "DEPLOYMENT-ID"
        }
      },
      "metadata": {
        "created_at": "2020-07-21T16:37:09.130Z",
        "id": "JOB-ID",
        "modified_at": "2020-07-21T16:37:37.268Z",
        "name": "test-job-diet",
        "space_id": "SPACE-ID"
      }
    }
    
  9. Facultatif: vous pouvez supprimer des travaux comme suit:
    curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE&hard_delete=true" \
      -H "Authorization: bearer TOKEN-HERE" 
    Si vous supprimez un travail à l'aide de l'API, il continuera de s'afficher dans l'interface utilisateur.
  10. Facultatif: vous pouvez supprimer des déploiements comme suit:
    curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \
      -H "Authorization: bearer TOKEN-HERE" 
    Si vous avez supprimé un déploiement contenant des travaux à l'aide de l'API, les travaux continuent de s'afficher dans l'espace de déploiement dans l'interface utilisateur.

Résultats

Lorsque le modèle a été déployé et le travail exécuté, les résultats de la solution sont fournis soit en ligne, soit dans le fichier et à l'emplacement que vous avez indiqués, par exemple à l'aide d'une référence S3. Vous pouvez envoyer de nouveaux travaux à l'aide de l'ID de déploiement sans qu'il soit nécessaire de redéployer le modèle.

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus