OpenAI #FtJob: Cancel
Immediately cancels a Fine Tuning Job (FtJob). FtJob status will be “cancelled”. Fine-tune event logs can be obtained.
Configs for this Auto Step
- AuthzConfU1
- U1: Select HTTP_Authz Setting (Secret API Key as “Fixed Value”) *
- StrConfA1
- A1: Set ID of FtJob *#{EL}
- SelectConfB1
- B1: Select STRING that stores FtJob Status (update)
- StrConfU2
- U2: Set OpenAI Organization ID (“org-xxxx”)#{EL}
- SelectConfB3
- B3: Select STRING that stores FineTuneEvent TSV (update)
Script (click to open)
// GraalJS standard mode Script Script (engine type: 3)
// cf. 'engine type: 2': "GraalJS Nashorn compatible mode" (renamed from "GraalJS" at 20230526)
//////// START "main()" /////////////////////////////////////////////////////////////////
main();
function main(){
////// == Config Retrieving / 工程コンフィグの参照 ==
const strAuthzSetting = configs.get( "AuthzConfU1" ); /// REQUIRED
engine.log( " AutomatedTask Config: Authz Setting: " + strAuthzSetting );
const strOrgId = configs.get( "StrConfU2" ); // NotRequired
engine.log( " AutomatedTask Config: OpenAI-Organization: " + strOrgId );
const strJobId = configs.get( "StrConfA1" ); /// REQUIRED
if( strJobId === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {A1: Job Id} must be non-empty string \n" );
}
const strPocketStatus = configs.getObject( "SelectConfB1" ); // NotRequired
const strPocketEventTsv = configs.getObject( "SelectConfB3" ); // NotRequired
////// == Data Retrieving / ワークフローデータの参照 ==
// (Nothing. Retrieved via Expression Language in Config Retrieving)
////// == Calculating / 演算 ==
//// OpenAI API > Documentation > API REFERENCE > Fine-tunes > Cancel fine-tune
//// https://platform.openai.com/docs/api-reference/fine-tunes/cancel
/// prepare request1
let request1Uri = "https://api.openai.com/v1/fine-tunes/" + strJobId + "/cancel";
let request1 = httpClient.begin(); // HttpRequestWrapper
request1 = request1.authSetting( strAuthzSetting ); // with "Authorization: Bearer XX"
if ( strOrgId !== "" ){
request1 = request1.header( "OpenAI-Organization", strOrgId );
}
/// try request1
const response1 = request1.post( request1Uri ); // HttpResponseWrapper
engine.log( " AutomatedTask ApiRequest1 Start: " + request1Uri );
const response1Code = response1.getStatusCode() + ""; // JavaNum to string
const response1Body = response1.getResponseAsString();
engine.log( " AutomatedTask ApiResponse1 Status: " + response1Code );
if( response1Code !== "200"){
throw new Error( "\n AutomatedTask UnexpectedResponseError: " +
response1Code + "\n" + response1Body + "\n" );
}
/* engine.log( response1Body ); // debug
{
"object": "fine-tune",
"id": "ft-zIXdYzmqKqiTkeBZ3Pjw068j",
"hyperparams": {
"n_epochs": 4,
"batch_size": null,
"prompt_loss_weight": 0.01,
"learning_rate_multiplier": null
},
"organization_id": "org-xxxxxyyyyyzzzzzXXXXXYYYY",
"model": "curie",
"training_files": [
{
"object": "file",
"id": "file-sQ1eLSSdCUbl6GyhD5S81LKa",
"purpose": "fine-tune",
"filename": "training-data-questetra-inc.jsonl",
"bytes": 2711,
"created_at": 1690785675,
"status": "processed",
"status_details": null
}
],
"validation_files": [],
"result_files": [],
"created_at": 1690785705,
"updated_at": 1690785783,
"status": "cancelled",
"fine_tuned_model": null,
"events": [
{
"object": "fine-tune-event",
"level": "info",
"message": "Created fine-tune: ft-zIXdYzmqKqiTkeBZ3Pjw068j",
"created_at": 1690785705
},
{
"object": "fine-tune-event",
"level": "info",
"message": "Fine-tune cancelled",
"created_at": 1690785783
}
]
}
*/
/// parse response1
const response1Obj = JSON.parse( response1Body );
engine.log( " AutomatedTask OpenAI #canceled " );
let arrEvents = [];
for ( let i = 0; i < response1Obj.events.length; i++ ) {
const dateTmp = new Date ( response1Obj.events[i].created_at * 1000 );
arrEvents.push (
dateTmp.toISOString() + '\t' +
response1Obj.events[i].level + '\t' +
response1Obj.events[i].message
);
}
////// == Data Updating / ワークフローデータへの代入 ==
if( strPocketStatus !== null ){
engine.setData( strPocketStatus, response1Obj.status + "" );
}
if( strPocketEventTsv !== null ){
engine.setData( strPocketEventTsv, arrEvents.join('\n') );
}
} //////// END "main()" /////////////////////////////////////////////////////////////////
/*
Notes:
- This "Automated Step" will cancel the fine-tune job by FtJob ID.
- Example of FtJob ID: "ft-AF1WoRqd3aJAHsqc9NY7iL8F"
- Fine-Tuned jobs cannot be canceled.
- `"Cannot cancel a job ft-lN1WPLOp8rtoalbMG5Nctc0T that already has status \"succeeded\"."`
- If you place this "Automated Step" in the Workflow diagram, the request will be automatically sent every time the process token arrives.
- A request is automatically sent to the OpenAI API server. (REST API)
- The response from the OpenAI API server is automatically parsed.
APPENDIX
- To activate a Workflow App that includes this Automated Step, "HTTP Authz Setting" is required
- Obtain a "Secret API Key" in advance.
- Set the key as the communication token in "Token Fixed Value"
Notes-ja:
- この[自動工程]は、FtJob IDでファインチューンJob(微調整ジョブ)をキャンセルします。
- Example of FtJob ID: "ft-AF1WoRqd3aJAHsqc9NY7iL8F"
- Fine Tune 完了済みジョブはキャンセルできません。
- `"Cannot cancel a job ft-lN1WPLOp8rtoalbMG5Nctc0T that already has status \"succeeded\"."`
- この[自動工程]をワークフロー図に配置すれば、案件が到達する度にリクエストが自動送信されます。
- OpenAI API サーバに対してリクエストが自動送出されます。(REST API通信)
- OpenAI API サーバからのレスポンスが自動保存解析されます。
APPENDIX-ja
- この[アドオン自動工程]を含むワークフローアプリを運用するには[HTTP 認証設定]が必要です。
- あらかじめ "Secret API Key" を取得しておいてください。
- "Secret API Key" を通信トークンとしてセットします。[トークン直接指定]
*/
Download
- openai-ftjob-cancel-2023.xml
- 2023-07-30 (C) Questetra, Inc. (MIT License)
(Installing Addon Auto-Steps are available only on the Professional edition.)
Notes
- This “Automated Step” will cancel the fine-tune job by FtJob ID.
- Example of FtJob ID: “ft-AF1WoRqd3aJAHsqc9NY7iL8F”
- Fine-Tuned jobs cannot be canceled.
"Cannot cancel a job ft-lN1WPLOp8rtoalbMG5Nctc0T that already has status \"succeeded\"."
- If you place this Automated Step in the Workflow diagram, the request will be automatically sent every time the process token arrives.
- A request is automatically sent to the OpenAI API server. (REST API)
- The response from the OpenAI API server is automatically parsed.
Capture

Appendix
- To activate a Workflow App that includes this Automated Step, “HTTP Authz Setting” is required
- Obtain a “Secret API Key” in advance.
- Set the key as the communication token in “Token Fixed Value”