
OpenAI: 画像生成
この工程は、OpenAI のモデルを用いて、画像を生成します。
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 キーは、こちらから作成してください
- 限られたモデルでのみ、サポートしているオプションがあります
- 詳細は、OpenAI の 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);
};