OpenAI #FtJob: キャンセル

OpenAI #FtJob: キャンセル

translate OpenAI #FtJob: Cancel

ファインチューニングJob(FtJob)を即時停止させます。FtJobステータスは “cancelled” となります。ファインチューンイベントのログが必要な場合は、別途、イベント一覧取得の操作を行います。

Auto Step icon
Configs for this Auto Step
AuthzConfU1
U1: HTTP認証設定を選択してください(Secret API Key @トークン直接指定) *
StrConfA1
A1: FtジョブのIDをセットしてください *#{EL}
SelectConfB1
B1: Ftジョブのステータスが格納される文字列型データ項目を選択してください(更新)
StrConfU2
U2: OpenAI Organization ID をセットしてください(”org-xxxx”)#{EL}
Script (click to open)
// Script Example of Business Process Automation
// for 'engine type: 3' ("GraalJS standard mode")
// 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 (updated 20230822)



////// == Data Retrieving / ワークフローデータの参照 ==
// (Nothing. Retrieved via Expression Language in Config Retrieving)



////// == Calculating / 演算 ==

//// OpenAI API > Documentation > API REFERENCE > Fine-tunes > Cancel fine-tuning
//// https://platform.openai.com/docs/api-reference/fine-tuning/cancel

/// prepare request1
let request1Uri = "https://api.openai.com/v1/fine_tuning/jobs/" + strJobId + "/cancel"; // updated 20230822
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_tuning.job",
  "id":"ftjob-8X0qeoZozDCd9fmRcXLLrk30",
  "model":"gpt-3.5-turbo-0613",
  "created_at":1692846230,
  "finished_at":null,
  "fine_tuned_model":null,
  "organization_id":"org-xxxxxyyyyyzzzzzXXXXXYYYY",
  "result_files":[],
  "status":"cancelled",
  "validation_file":null,
  "training_file":"file-elgeW9857wp12YFAKH9qSGDB",
  "hyperparameters":{"n_epochs":5},
  "trained_tokens":null
}
*/

/// parse response1
const response1Obj = JSON.parse( response1Body );
engine.log( " AutomatedTask OpenAI #cancelled " );



////// == 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.
        - from 20230823: `Job has already completed: ftjob-XWe29EU2BqUQSEakRDYUqGVX`
        - upto 20230822: `"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 完了済みジョブはキャンセルできません。
        - from 20230823: `Job has already completed: ftjob-XWe29EU2BqUQSEakRDYUqGVX`
        - upto 20230822: `"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

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

  • この[自動工程]は、FtJob IDでファインチューンJob(微調整ジョブ)をキャンセルします。
    • Example of FtJob ID: “ft-AF1WoRqd3aJAHsqc9NY7iL8F”
    • Fine Tune 完了済みジョブはキャンセルできません。
      • from 20230823: Job has already completed: ftjob-XWe29EU2BqUQSEakRDYUqGVX
      • upto 20230822: "Cannot cancel a job ft-lN1WPLOp8rtoalbMG5Nctc0T that already has status \"succeeded\"."
  • この[自動工程]をワークフロー図に配置すれば、案件が到達する度にリクエストが自動送信されます。
    • OpenAI API サーバに対してリクエストが自動送出されます。(REST API通信)
    • OpenAI API サーバからのレスポンスが自動保存解析されます。

Capture

ファインチューニングJob(FtJob)を即時停止させます。FtJobステータスは "cancelled" となります。ファインチューンイベントのログが必要な場合は、別途、イベント一覧取得の操作を行います。
ファインチューニング業務プロセス。トレーニングデータを投入することで、GPT-3.5 等のAIモデルをカスタマイズ可能です。

Appendix

  • この[アドオン自動工程]を含むワークフローアプリを運用するには[HTTP 認証設定]が必要です。
    • あらかじめ “Secret API Key” を取得しておいてください。
    • “Secret API Key” を通信トークンとしてセットします。[トークン直接指定]

See Also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。