diff --git a/grumphp.yml b/grumphp.yml index 3fc1a66bfcc3ecc63bde535eb6f0780784bfa5ff..15f6dc9bf8f04326af116f846d9f52166ff00a61 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -1,3 +1,4 @@ +# cspell:ignore blacklist grumphp: tasks: phpcs: diff --git a/src/Plugin/AiProvider/OllamaProvider.php b/src/Plugin/AiProvider/OllamaProvider.php index ad35994f6bda84f2e7fb266437515d467f2fe7a0..f65fe4181ee76a1cdf94600f9df81f9361ba56c0 100644 --- a/src/Plugin/AiProvider/OllamaProvider.php +++ b/src/Plugin/AiProvider/OllamaProvider.php @@ -228,6 +228,7 @@ class OllamaProvider extends AiProviderClientBase implements $this->loadClient(); // Normalize the input if needed. $chat_input = $input; + $images_found = FALSE; if ($input instanceof ChatInput) { $chat_input = []; // Add a system role if wanted. @@ -240,19 +241,17 @@ class OllamaProvider extends AiProviderClientBase implements /** @var \Drupal\ai\OperationType\Chat\ChatMessage $message */ foreach ($input->getMessages() as $message) { $content = $message->getText(); + $images = []; if (count($message->getImages())) { + $images_found = TRUE; foreach ($message->getImages() as $image) { - $content[] = [ - 'type' => 'image_url', - 'image_url' => [ - 'url' => $image->getAsBase64EncodedString(), - ], - ]; + $images[] = $image->getAsBase64EncodedString(''); } } $chat_input[] = [ 'role' => $message->getRole(), 'content' => $content, + 'images' => $images, ]; } } @@ -281,6 +280,10 @@ class OllamaProvider extends AiProviderClientBase implements $response = $this->controlApi->chat($payload); $message = new ChatMessage($response['message']['role'], $response['message']['content']); } + elseif ($images_found) { + $response = $this->controlApi->chat($payload); + $message = new ChatMessage($response['message']['role'], $response['message']['content']); + } elseif ($this->streamed) { $response = $this->client->chat()->createStreamed($payload); $message = new OllamaChatMessageIterator($response);