Skip to content
Snippets Groups Projects
Commit 93eb53a7 authored by Martin Anderson-Clutz's avatar Martin Anderson-Clutz
Browse files

Issue #3447154 by mandclu: Update to newer DALL•E model

parent 89254b41
No related branches found
No related tags found
No related merge requests found
Pipeline #174788 passed with warnings
......@@ -36,7 +36,7 @@ class openaiImagesGenerator extends FormBase
public function buildForm(array $form, FormStateInterface $form_state)
{
// Check if there is an API key if not disable the form.
$api_key = $this->config('openai_images.settings')->get('api_key');;
$api_key = $this->config('openai_images.settings')->get('api_key');
$is_disabled = empty($api_key);
// Attach a library to the form
......@@ -82,6 +82,18 @@ class openaiImagesGenerator extends FormBase
],
];
// Model to use for generating the image.
$form['generator_container']['left_group']['options_group']['model'] = [
'#type' => 'select',
'#title' => $this->t('Model'),
'#options' => [
'dall-e-3' => 'DALL•E 3',
'dall-e-2' => 'DALL•E 2',
],
'#default_value' => 'dall-e-3',
'#description' => $this->t('Select which model should be used.'),
];
// Sizes available for images generated.
$form['generator_container']['left_group']['options_group']['size'] = [
'#type' => 'select',
......@@ -93,6 +105,29 @@ class openaiImagesGenerator extends FormBase
],
'#default_value' => '512x512',
'#description' => $this->t('Select one of the available image sizes generated by openAI.'),
'#states' => [
'visible' => [
'select[name="model"]' => ['value' => 'dall-e-2'],
],
],
];
// Sizes available for images generated.
$form['generator_container']['left_group']['options_group']['size3'] = [
'#type' => 'select',
'#title' => $this->t('Size'),
'#options' => [
'1024x1024' => '1024 x 1024',
'1024x1792' => '1024 x 1792',
'1792x1024' => '1792 x 1024',
],
'#default_value' => '1024x1024',
'#description' => $this->t('Select one of the available image sizes generated by openAI.'),
'#states' => [
'visible' => [
'select[name="model"]' => ['value' => 'dall-e-3'],
],
],
];
// Grouping the size and image generator button to have them on the same line.
......@@ -169,8 +204,14 @@ class openaiImagesGenerator extends FormBase
$response = new AjaxResponse();
$prompt = $form_state->getValue('prompt');
$size = $form_state->getValue('size');
$generated_images = $this->generateImagesFromOpenAI($prompt, $size);
$model = $form_state->getValue('model');
if ($model === 'dall-e-3') {
$size = $form_state->getValue('size3');
}
else {
$size = $form_state->getValue('size');
}
$generated_images = $this->generateImagesFromOpenAI($prompt, $size, $model);
if ($generated_images == "You must provide a prompt.") {
// Change the image container class.
......@@ -216,7 +257,7 @@ class openaiImagesGenerator extends FormBase
// Replace the entire image preview wrapper with the updated container.
$response->addCommand(new ReplaceCommand('#image-preview-wrapper', $image_wrapper));
// Enable the "Save Images" button.
// Enable the "Save Images" button.
$response->addCommand(new InvokeCommand('#edit-save-images', 'removeAttr', ['disabled']));
$response->addCommand(new InvokeCommand('#edit-save-images', 'removeClass', ['is-disabled']));
......@@ -229,7 +270,7 @@ class openaiImagesGenerator extends FormBase
/**
* {@inheritdoc}
*/
private function generateImagesFromOpenAI($prompt, $size)
private function generateImagesFromOpenAI($prompt, $size, $model = 'dall-e-2')
{
// Get the API key.
$api_key = $this->config('openai_images.settings')->get('api_key');
......@@ -244,6 +285,7 @@ class openaiImagesGenerator extends FormBase
'Content-Type' => 'application/json',
],
'json' => [
'model' => $model,
'prompt' => $prompt,
'n' => 1,
'size' => $size,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment