0 / 0
Torna alla versione inglese della documentazione
Esempio di API REST
Ultimo aggiornamento: 05 dic 2024
Decision Optimization Distribuzione API REST

È possibile distribuire un modello di Decision Optimization, creare e monitorare lavori e ottenere soluzioni utilizzando l'API REST diwatsonx.ai Runtime.

Prima di iniziare

È necessario disporre di un accountIBM Cloud. Vedere https://www.ibm.com/cloud/.
  1. Accedi a IBM Cloud.
  2. Creare la tua chiave API. Copiatela o scaricatela dalla finestra aperta della chiave API creata con successo (non è possibile accedervi di nuovo quando si chiude questa finestra).

  3. Opzionale: Creare un serviziowatsonx.ai Runtime.
  4. Selezionare un'istanza di watsonx.ai Runtime dall'elenco dei servizi di AI/MachineMachine Learning nella vista dell'elenco delle risorseIBM Cloud.

    Copiare il nome, il GUID e il CRN dal riquadro informazioni dell'istanza di watsonx.ai Runtime. (Per aprire il riquadro delle informazioni, fare clic su un punto qualsiasi della riga accanto al nome del servizio watsonx.ai Runtime, ma non sul nome stesso. Il riquadro delle informazioni si apre nella stessa finestra)

  5. Opzionale: Creare un Cloud Object Storage.
  6. Selezionare un'istanza di Cloud Object Storage dall'elenco delle risorse di storage nella vista dell'elenco delle risorseIBM Cloud.

    Copiare il nome e il CRN dal riquadro informazioni dell'istanza di storage.

  7. Opzionale: Creare uno spazio di distribuzione dall'interfaccia utente https://dataplatform.cloud.ibm.com. È possibile creare uno spazio di distribuzione anche utilizzando l'API REST. Vedere Creare uno spazio di distribuzione usando l'API REST.
  8. Selezionate uno spazio di installazione client dall'elenco delle installazioni client.

    Copiare il GUID dello spazio dalla scheda Gestione > Generale. Per ulteriori informazioni, vedere Spazi di distribuzione.

Informazioni su questa attività

I passi seguenti mostrano come distribuire un modello 'Decision Optimization utilizzando il modello 'watsonx.ai API REST di runtime. L'esempio REST API utilizza curl, uno strumento di riga di comando e libreria per il trasferimento dei dati con la sintassi URL. È possibile scaricare curl e saperne di più su http://curl.haxx.se Per ulteriori informazioni sulle API REST rilevanti per Decision Optimization, consultare le seguenti sezioni:

Per gli utenti Windows , utilizzare ^ invece di \ per il separatore multi - line e virgolette doppie " in tutti questi esempi di codice. Gli utenti di Windows devono inoltre utilizzare l'indentazione di almeno uno spazio di carattere nelle righe di intestazione.

Per chiarezza, alcuni esempi di codice in questa procedura sono stati inseriti in un file json per rendere i comandi più leggibili e più facili da utilizzare.

Una volta creata un'installazione client tramite l'API REST, è possibile visualizzarla e inviarle lavori dalla pagina Deployments > Spaces dell'interfaccia utente https://dataplatform.cloud.ibm.com.

Procedura

  1. Generare un token IAM utilizzando il vostro 'IBM Cloud Chiave API come segue.
    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="
    Esempio di output:
    {
       "access_token": "****** obtained IAM token ******************************",
       "refresh_token": "**************************************",
       "token_type": "Bearer",
       "expires_in": 3600,
       "expiration": 1554117649,
       "scope": "ibm openid"
    }

    Utilizzare il token ottenuto (valore access_token) prepenato dalla parola Bearer nell'intestazione Authorization e l' watsonx.ai Runtime service GUID nell'intestazione ML-Instance-ID , in tutte le chiamate API.

  2. Optional: Se non hai ottenuto il tuo SPACE - ID dall'interfaccia utente come descritto in precedenza, è possibile creare uno spazio utilizzando l'API REST come segue. Utilizza il token precedentemente ottenuto preceduto dalla parola bearer nell'intestazione Authorization in tutte le chiamate 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"
      }]
    }"
    Per gli utenti Windows , inserire il comando --data-raw su una riga e sostituire tutti " con \" all'interno di questo comando come segue:
    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\"  }]}"
    In alternativa inserire i dati in un file separato.
    Un SPACE - ID viene restituito in id campo della sezione metadata .

    Esempio di output:

    {
      "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"
      }
    }

    È necessario attendere che lo stato dello spazio di distribuzione sia "active" prima di continuare. È possibile effettuare il sondaggio per verificarlo come segue.

    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. Creare un nuovo modello Decision Optimization

    Tutte le richieste API richiedono un parametro di versione che prenda una data nel formato version=YYYY-MM-DD. Questo esempio di codice carica un modello che utilizza il file create_model.json. L'URL varia a seconda della regione/località scelta per il servizio watsonx.ai Runtime. Vedere URL del punto finale.

    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
    Il file create_model.json contiene il codice seguente:
    {
      "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 versione Python viene dichiarata esplicitamente qui in un blocco custom . Questo è facoltativo. Senza di essa il modello userà la versione predefinita, che attualmente è Python 3.11. Poiché la versione predefinita evolverà nel tempo, l'affermazione della versione Python ti consente esplicitamente di modificarla facilmente in un secondo momento o di continuare a utilizzare una versione supportata precedente quando viene aggiornata la versione predefinita. Le versioni attualmente supportate sono 3.11 e 3.10 (deprecata).

    Se si desidera essere in grado di eseguire lavori per questo modello dall'interfaccia utente, invece di utilizzare solo le API REST, è necessario definire lo schema per i dati di input e di output. Se non si definisce lo schema quando si crea il modello, è possibile eseguire solo lavori utilizzando l'API REST e non dall'interfaccia utente.

    È inoltre possibile utilizzare lo schema specificato per l'input e l'output nel modello di ottimizzazione:

    {
      "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"
    }
    
    Quando si pubblica un modello si forniscono informazioni relative al suo tipo di modello e alla specifica software da utilizzare.
    I tipi di modello possono essere, ad esempio:
    • do-opl_22.1 per i modelli OPL
    • do-cplex_22.1 per i modelli CPLEX
    • do-cpo_22.1 per i modelli CP
    • do-docplex_22.1 per i modelli Python

    La Versione 20.1 può essere utilizzata anche per questi modelli.

    Per la specifica softwareè possibile utilizzare le specifiche predefinite utilizzando i loro nomi do_22.1 o do_20.1. Consultare anche Estendere il notebook di specifica software che mostra come estendere la specifica software Decision Optimization (runtime con ulteriori librerie Python per i modelli DOcplex).

    Un MODEL - ID viene restituito in id campo nel metadata.

    Esempio di output:
    {
      "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. Carica una formulazione modello Decision Optimization pronto per la distribuzione.
    Per prima cosa comprimere il modello in un file (tar.gz, .zip or .jar) e caricarlo per essere distribuito dal servizio watsonx.ai Runtime.
    Questo esempio di codice carica un modello chiamato diet.zip che contiene un modello Python e nessun dato anagrafico:
    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"
    È possibile scaricare questo esempio e altri modelli dal sito DO-samples. Selezionare la sottocartella relativa al prodotto e alla versione.
  5. Distribuisci il tuo modello
    Crea un riferimento al tuo modello. Utilizzare il SPACE - ID, il MODEL - ID ottenuto quando hai creato il tuo modello pronto per la distribuzione e la specifica hardware. Ad esempio:
    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": {}
    }
    Il DEPLOYMENT - ID viene restituito in id campo nella metadata. Esempio di output:
    {
      "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. Una volta distribuito, è possibile monitorare lo stato di distribuzione del proprio modello. Utilizzare il DEPLOYMENT - ID.
    Ad esempio:
    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"

    Esempio di output:

    {
      "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. Si possono quindi Submit jobs per il proprio modello distribuito che definisce i dati di input e l'output (risultati della risoluzione di ottimizzazione) e il file di log.
    Ad esempio, il seguente mostra il contenuto di un file chiamato myjob.json. Contiene i dati di input (in linea), alcuni parametri di risoluzione e specifica che l'output sarà un file .csv. Per ulteriori informazioni, consultate 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"
    			}
    		]
    	}
    }
    Questo esempio di codice carica un lavoro che utilizza questo file 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
    
    Viene restituito un JOB - ID . Esempio di output: (il lavoro è accostato)
    {
      "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. Si possono anche monitorare gli stati di lavoro. Utilizzare il JOB - ID
    Ad esempio:
    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"
    Esempio di output: (il lavoro è completato)
    {
      "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. Optional: è possibile eliminare i lavori come segue:
    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" 
    Se si elimina un lavoro utilizzando l'API, verrà comunque visualizzato nell'interfaccia utente.
  10. Optional: è possibile eliminare le distribuzioni come segue:
    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" 
    Se si elimina una distribuzione che contiene lavori che utilizzano l'API, i lavori verranno comunque visualizzati nello spazio di distribuzione nell'interfaccia utente.

Risultati

Una volta che il tuo modello è stato distribuito e il lavoro eseguito, i risultati della soluzione vengono forniti o inline o nel file e nella posizione che hai specificato, ad esempio utilizzando un riferimento S3 . È possibile pubblicare nuovi lavori utilizzando il deployment - ID senza dover ridistribuire il proprio modello.

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni