OpenAI: 画像生成

OpenAI: 画像生成

OpenAI: Generate Image

この工程は、OpenAI のモデルを用いて、画像を生成します。

Auto Step icon
Basic Configs
工程名
メモ
Configs for this Auto Step
conf_Auth
C1: プロジェクトに紐づく API キーを設定した認証設定 *
conf_OrganizationId
C-deprecated: 組織 ID(空白の場合、デフォルトの組織)
conf_Model
C2: モデル *
conf_Prompt
C3: プロンプト *#{EL}
conf_Size
C4: 画像サイズ (未設定の場合、自動)
conf_Format
C5: 画像形式 (gpt-image-1 のみ指定可能)
conf_Style
C6: 画像スタイル (dall-e-3 のみ指定可能)
conf_Quality
C7: 画像品質 (未設定の場合、自動)
conf_File
C8: 生成されたファイルを追加保存するデータ項目 *
conf_FileName
C9: 保存する際のファイル名 *#{EL}

Notes

  • プロジェクトに紐づく API キーは、こちらから作成してください
  • 限られたモデルでのみ、サポートしているオプションがあります

Capture

See Also

Script (click to open)
  • 次のスクリプトが記述されている XML ファイルをダウンロードできます
    • openai-dalle-image-generate.xml (C) Questetra, Inc. (MIT License)
    • Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます

function main() {
    ////// == 工程コンフィグ・ワークフローデータの参照 / Config & Data Retrieving ==
    const auth = configs.getObject('conf_Auth');   /// REQUIRED
    const organizationId = configs.get('conf_OrganizationId');
    const model = configs.get('conf_Model');
    const prompt = configs.get('conf_Prompt');
    if (prompt === '') {
        throw new Error('Prompt is empty.');
    }

    const size = retriveSelectItem('conf_Size');
    const style = retriveSelectItem('conf_Style');
    const format = retriveSelectItem('conf_Format');
    const quality = retriveSelectItem('conf_Quality');
    const fileName = configs.get('conf_FileName');
    if (fileName === '') {
        throw new Error('File name is empty.');
    }

    ////// == 演算 / Calculating ==
    const newFile = generateImage(auth, organizationId, model, prompt, size, style, format, quality, fileName);

    saveFileData('conf_File', newFile);
}

/**
 * form-type="SELECT_ITEM" の設定値を取得する
 * 空の場合、undefined を返す
 * @param configName
 * @returns {undefined|String}
 */
const retriveSelectItem = (configName) => {
    const value = configs.get(configName);
    if (value === '') {
        return undefined;
    }
    return value;
};

/**
 * 画像生成
 * @param auth
 * @param organizationId
 * @param model
 * @param prompt
 * @param size
 * @param output_format
 * @param style
 * @param quality
 * @returns {String} answer1
 */
const generateImage = (auth, organizationId, model, prompt, size, style, format, quality, fileName) => {
    // https://platform.openai.com/docs/guides/safety-best-practices
    // Sending end-user IDs in your requests can be a useful tool to help OpenAI monitor and detect abuse.
    const user = `m${processInstance.getProcessModelInfoId().toString()}`;

    /// prepare json
    const requestJson = {
        model,
        prompt,
        size,
        style,
        output_format: format,
        quality,
        user,
        n: 1,
    };

    if (model !== "gpt-image-1") {
        Object.assign(requestJson, {
            response_format: 'b64_json'
        });
    }

    let request = httpClient.begin().authSetting(auth)
        .body(JSON.stringify(requestJson), 'application/json');
    if (organizationId !== null && organizationId !== '') {
        request = request.header('OpenAI-Organization', organizationId);
    }
    const response = request.post('https://api.openai.com/v1/images/generations');

    const responseCode = response.getStatusCode();
    const responseBody = response.getResponseAsString();
    if (responseCode !== 200) {
        engine.log(responseBody);
        throw new Error(`Failed to request. status: ${responseCode}`);
    }
    const responseJson = JSON.parse(responseBody);
    const image = base64.decodeFromStringToByteArray(responseJson.data[0].b64_json);

    let contentType = "image/png";
    if (model === "gpt-image-1" && format !== undefined) {
        contentType = `image/${format}`;
    }

    return new com.questetra.bpms.core.event.scripttask.NewQfile(
        fileName,
        contentType,
        image
    );
};

/**
 * データ項目への保存
 * @param configName
 * @param newFile
 */
const saveFileData = (configName, newFile) => {
    const def = configs.getObject(configName);
    if (def === null) {
        return;
    }
    let files = engine.findData(def);
    if (files === null) {
        files = new java.util.ArrayList();
    }
    files.add(newFile);
    engine.setData(def, files);
};
上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む