Exemplo da API REST
Você pode implantar um modelo de Decision Optimization, criar e monitorar trabalhos e obter soluções usando a API REST do tempo de execuçãowatsonx.ai.
Antes de iniciar
- Efetue login no IBM Cloud.
- Crie sua chave de API da nuvem. Copie ou faça o download da chave de API criada com sucesso na janela aberta (você não poderá acessá-la novamente quando fechar essa janela).
- Opcional: Crie um serviço de tempo de execução watsonx.ai.
- Selecione uma instância de tempo de execução watsonx.ai na lista de serviços AI/ Machine Learning na visualização da lista de recursos IBM Cloud.
Copie os códigos " Nome, " GUID e " CRN do painel de informações para sua instância " watsonx.ai Tempo de execução. (Para abrir o painel de informações, clique em qualquer lugar da linha ao lado do nome do serviço watsonx.ai Runtime, mas não no nome em si. O painel de informações será aberto na mesma janela)
- Opcional: Criar um Cloud Object Storage.
- Selecione uma instância de Cloud Object Storage na lista de recursos de armazenamento na exibição de lista IBM Cloud Resource.
Copie o Nome e o CRN do painel de informações de sua instância de armazenamento.
- Opcional: Crie um espaço de implementação a partir da interface do usuário. Você também pode criar um espaço de implantação usando a API REST. Consulte Criação de um espaço de implantação usando a API REST.
- Selecione um espaço de implementação na lista de implementações.
Copie o GUID do espaço na guia Gerenciar > Geral. Para obter mais informações, consulte Espaços de implementação.
Sobre essa tarefa
Para usuários do Windows, use ^ em vez de \ para o separador multilinhas e aspas duplas (") ao longo desses exemplos de código. Os usuários do Windows também precisam usar a indentação de pelo menos um espaço por caractere nas linhas de cabeçalho.
Para clareza, alguns exemplos de código neste procedimento foram colocados em um arquivo json para tornar os comandos mais legíveis e mais fáceis de usar.
Depois de criar uma implantação usando a API REST, você também pode visualizá-la e enviar trabalhos para ela na página Deployments > Spaces da interface do usuário.
Procedimento
- Gere um token IAM usando sua chave de API da nuvem da seguinte forma.
curl --request POST "https://iam.cloud.ibm.com/identity/token" \ -d "apikey=YOUR_API_KEY_HERE&grant_type=urn:ibm:params:oauth:grant-type:apikey" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic Yng6Yng="Exemplo de saída:{ "access_token": "****** obtained IAM token ******************************", "refresh_token": "**************************************", "token_type": "Bearer", "expires_in": 3600, "expiration": 1554117649, "scope": "ibm openid" }Use o token obtido (valor access_token) pré-anexado pela palavra
Bearerno cabeçalhoAuthorizatione owatsonx.ai Runtime service GUIDno cabeçalhoML-Instance-IDem todas as chamadas da API. - Opcional: Se você não obteve o seu SPACE-ID a partir da interface do usuário como descrito anteriormente, você pode criar um espaço usando a API REST da seguinte forma. Use o token obtido anteriormente, precedido pela palavra
bearerno cabeçalhoAuthorizationem todas as chamadas de API. Consulte URLs do ponto de extremidade da nuvem.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" }] }"Para usuários do Windows, coloque o comando--data-rawem uma linha e substitua todo"por\"dentro desse comando, conforme a seguir:
Como alternativa, coloque os dados em um arquivo separado.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\" }]}"Um SPACE-ID é retornado no campoidda seçãometadata.Exemplo de saída:
{ "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": "2025-04-17T08:36:57.611Z", "creator_id": "XXXXXXX", "id": "SPACE-ID", "url": "/v2/spaces/SPACE-ID" } }Deve-se aguardar até que o status do espaço de implementação seja
"active"antes de continuar. É possível pesquisar para verificar isso conforme a seguir.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" - Criar um modelo novo Decision Optimization
Todas as solicitações da API requerem um parâmetro de versão que usa uma data no formato
version=YYYY-MM-DD. Este exemplo de código posta um modelo que usa o arquivocreate_model.json. O endereço URL varia de acordo com a região/localidade escolhida para o serviço watsonx.ai Runtime. Consulte URLs do ponto de extremidade da nuvem.
O arquivo create_model.json contém o código a seguir:curl --location --request POST \ "https://us-south.ml.cloud.ibm.com/ml/v4/models?version=2025-08-01" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -d @create_model.json{ "name": "ModelName", "description": "ModelDescription", "type": "do-docplex_22.2", "software_spec": { "name": "do_22.2" }, "custom": { "decision_optimization": { "oaas.docplex.python": "3.12" } }, "space_id": "SPACE-ID-HERE" }A Versão do Python é declarada explicitamente aqui em um bloco
custom. Isso é opcional. Sem ele, seu modelo usará a versão padrão, que atualmente é Python 3.12. Como a versão padrão se desenvolverá ao longo do tempo, informar a versão do Python explicitamente permite mudá-la facilmente mais tarde ou continuar usando uma versão suportada mais antiga quando a versão padrão for atualizada. Atualmente, você pode usar Python, 3.12 ou 3.11 (obsoleto).Para ser capaz de executar tarefas para esse modelo por meio da interface com o usuário, em vez de usar somente a API de REST, deve-se definir o esquema para os dados de entrada e saída. Se você não definir o esquema ao criar o modelo, será possível executar tarefas somente usando a API de REST e não por meio da interface com o usuário.
Você também pode utilizar o esquema especificado para entrada e saída em seu modelo de otimização:
{ "name": "Diet-Model-schema", "description": "Diet", "type": "do-docplex_22.2", "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.2" }, "space_id": "SPACE-ID-HERE" }Ao postar um modelo, você fornece informações sobre seu tipo de modelo e a especificação de software a ser usada.Os tipos de modelos podem ser, por exemplo:do-opl_22.2para modelos OPLdo-cplex_22.2para modelos CPLEXdo-cpo_22.2para modelos CPdo-docplex_22.2para modelos Python
A versão 22.1 também pode ser usada para esses tipos de modelo.
Para a especificação do software, você pode usar as especificações padrão usando seus nomes
do_22.2oudo_22.1(o tempo de execução do_20.1 está obsoleto e será removido em breve). Consulte também o notebook de especificação de software Extend, que mostra como estender a Decision Optimization especificação de software (tempos de execução com bibliotecas Python adicionais para modelos DOcplex).Um MODEL-ID é retornado no campo
idnometadata.Exemplo de saída:{ "entity": { "software_spec": { "id": "SOFTWARE-SPEC-ID" }, "type": "do-docplex_22.2" }, "metadata": { "created_at": "2025-04-17T08:37:22.992Z", "description": "ModelDescription", "id": "MODEL-ID", "modified_at": "2025-04-17T08:37:22.992Z", "name": "ModelName", "owner": "***********", "space_id": "SPACE-ID" } } - Fazer upload de uma formulação de modelo Decision Optimization pronto para implementação.Primeiro, comprima seu modelo em um arquivo (
tar.gz, .zip or .jar) e carregue-o para ser implantado pelo serviço watsonx.ai Runtime.Esse exemplo de código faz upload de um modelo chamado diet.zip contendo um modelo Python e sem dados principais:curl --location --request PUT \ "https://us-south.ml.cloud.ibm.com/ml/v4/models/MODEL-ID-HERE/content?version=2025-08-01&space_id=SPACE-ID-HERE&content_format=native" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/gzip" \ --data-binary "@diet.zip"Você pode baixar esse exemplo e outros modelos do DO-samples. Selecione a subpasta de produto e versão relevante. - Implementar o seu modeloCrie uma referência ao seu modelo. Use o SPACE-ID, o MODEL-ID obtido quando você criou seu modelo pronto para implementação e a especificação de hardware. Por exemplo:
curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployments?version=2025-08-01" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -d @deploy_model.jsonThe 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": {} }O DEPLOYMENT-ID é retornado no campoidnometadata. Exemplo de saída:{ "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": "2025-04-17T09:10:50.661Z", "description": "", "id": "DEPLOYMENT-ID", "modified_at": "2025-04-17T09:10:50.661Z", "name": "test-Diet-deploy", "owner": "**************", "space_id": "SPACE-ID" } } - Uma vez implementado, você pode monitorar o estado de implementação do seu modelo. Use o DEPLOYMENT-ID.Por exemplo:
curl --location --request GET "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2025-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json"Exemplo de saída:
{ "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": "2025-11-04T16:22:14.442Z", "description": "", "id": "DEPLOYMENT-ID", "modified_at": "2025-11-04T16:22:14.442Z", "name": "test-Diet-deploy", "owner": "**************", "space_id": "SPACE-ID" } } - Você pode então Enviar trabalhos para o seu modelo implementado definindo os dados de entrada e a saída (resultados da solução de otimização) e o arquivo de log.Por exemplo, a seguir é mostrado o conteúdo de um arquivo chamado
myjob.json. Ele contém dados de entrada (sequenciais), alguns parâmetros de resolução e especifica que a saída será um arquivo .csv. Para obter mais informações, consulte Decision Optimization batch deployment and model execution.
Este exemplo de código posta uma tarefa que usa este arquivo{ "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" } ] } }myjob.json.curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs?version=2025-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -H "cache-control: no-cache" \ -d @myjob.jsonUm JOB-ID é retornado. Exemplo de saída: (a tarefa é enfileirada){ "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": "2025-04-17T10:42:42.783Z", "id": "JOB-ID", "name": "test-job-diet", "space_id": "SPACE-ID" } } - Você também pode monitorar estados de trabalho. Use o JOB-IDPor exemplo:
curl --location --request GET \ "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2025-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json"Exemplo de saída: (a tarefa foi concluída){ "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": [ "[2025-04-21T16:37:36Z, INFO] Model: diet", "[2025-04-21T16:37:36Z, INFO] - number of variables: 9", "[2025-04-21T16:37:36Z, INFO] - binary=0, integer=0, continuous=9", "[2025-04-21T16:37:36Z, INFO] - number of constraints: 7", "[2025-04-21T16:37:36Z, INFO] - linear=7", "[2025-04-21T16:37:36Z, INFO] - parameters: defaults", "[2025-04-21T16:37:36Z, INFO] - problem type is: LP", "[2025-04-21T16:37:36Z, INFO] Warning: Model: \"diet\" is not a MIP problem, progress listeners are disabled", "[2025-04-21T16:37:36Z, INFO] objective: 2.690", "[2025-04-21T16:37:36Z, INFO] \"Spaghetti W/ Sauce\"=2.155", "[2025-04-21T16:37:36Z, INFO] \"Chocolate Chip Cookies\"=10.000", "[2025-04-21T16:37:36Z, INFO] \"Lowfat Milk\"=1.831", "[2025-04-21T16:37:36Z, INFO] \"Hotdog\"=0.930", "[2025-04-21T16:37:36Z, INFO] solution.csv" ], "solve_status": "optimal_solution" }, "status": { "completed_at": "2025-04-21T16:37:36.989Z", "running_at": "2025-04-21T16:37:35.622Z", "state": "completed" } }, "deployment": { "id": "DEPLOYMENT-ID" } }, "metadata": { "created_at": "2025-04-21T16:37:09.130Z", "id": "JOB-ID", "modified_at": "2025-04-21T16:37:37.268Z", "name": "test-job-diet", "space_id": "SPACE-ID" } } - Opcional: É possível excluir empregos da seguinte forma:
curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2025-08-01&space_id=SPACE-ID-HERE&hard_delete=true" \ -H "Authorization: bearer TOKEN-HERE"Se você excluir uma tarefa usando a API, ela ainda será exibida na interface com o usuário. - Opcional: Você pode excluir implementações da seguinte forma:
curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2025-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE"Se você excluir uma implementação que contenha tarefas usando a API, as tarefas ainda serão exibidas no espaço de implementação na interface com o usuário.
Resultados
Após seu modelo ter sido implementado e a tarefa executada, os resultados da solução serão fornecidos de forma sequencial ou no arquivo e local especificados, por exemplo, usando uma referência S3. É possível postar novas tarefas usando o ID de implementação sem ter que reimplementar seu modelo.