Como Gerar Imagens com IA em Java: Spring Boot + OpenAI DALL-E

Por Gaspar Barancelli Junior em 28 de janeiro de 2025
Imagem ilustrativa sobre o post Como Gerar Imagens com IA em Java: Spring Boot + OpenAI DALL-E

Introdução

A integração de inteligência artificial (IA) em aplicações Java nunca foi tão simples e poderosa quanto com o Spring AI. Neste post, vamos explorar como você pode gerar imagens incríveis usando o OpenAI DALL-E diretamente de uma aplicação Spring Boot. O projeto Spring AI facilita a integração de modelos de IA, como o DALL-E, em suas aplicações Java, permitindo que você crie funcionalidades avançadas com poucas linhas de código.

O Projeto Spring AI

O Spring AI é um projeto que visa simplificar a integração de modelos de IA em aplicações Spring. Ele oferece uma abstração fácil de usar para interagir com diferentes provedores de IA. Com o Spring AI, você pode focar na lógica do seu negócio, enquanto a biblioteca cuida da complexidade de se comunicar com APIs de IA.

Para saber mais sobre o Spring AI e sua documentação oficial, você pode acessar o link: Spring AI Documentation.

Gerando Imagens com OpenAI DALL-E

Vamos criar um exemplo prático onde geramos uma imagem com base em uma descrição fornecida pelo usuário. A imagem será gerada usando o OpenAI DALL-E e retornada em uma página HTML que renderiza a imagem.

Configuração do Projeto

Primeiro, vamos configurar nosso projeto Spring Boot. Aqui está o pom.xml com as dependências necessárias:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.4.2</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.gasparbarancelli</groupId>
	<artifactId>image-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>image-demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>23</java.version>
		<spring-ai.version>1.0.0-M5</spring-ai.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>${spring-ai.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>
</project>

Implementação do Endpoint

Agora, vamos implementar um endpoint que recebe uma descrição de imagem e retorna a imagem gerada pelo DALL-E.

package com.gasparbarancelli.image_demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ImageDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ImageDemoApplication.class, args);
	}

}

E aqui está o controlador que faz a mágica acontecer:

package com.gasparbarancelli.image_demo;

import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.ai.openai.OpenAiImageModel;
import org.springframework.ai.openai.OpenAiImageOptions;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/")
public class ImageDemoApi {

    private final OpenAiImageModel openAiImageModel;

    public ImageDemoApi(OpenAiImageModel openAiImageModel) {
        this.openAiImageModel = openAiImageModel;
    }

    @GetMapping
    @ResponseBody
    public String index(@RequestParam("description") String description) {
        ImageResponse response = openAiImageModel.call(
                new ImagePrompt(description,
                        OpenAiImageOptions.builder()
                                .quality("hd")
                                .N(1)
                                .height(1024)
                                .width(1024).build())
        );

        var url = response.getResult().getOutput().getUrl();
        return """
                <html>
                <body>
                    <img src='%s'>
                </body>
                </html>
                """.formatted(url);
    }

}

Configuração da Chave API

No arquivo application.properties, adicione sua chave API da OpenAI:

spring.application.name=image-demo
spring.ai.openai.api-key=${API_KEY}

Como Funciona?

  1. Descrição da Imagem: O usuário fornece uma descrição da imagem que deseja gerar.

  2. Chamada ao DALL-E: A aplicação envia a descrição para o DALL-E via Spring AI.

  3. Renderização da Imagem: A URL da imagem gerada é retornada e renderizada em uma página HTML.

Exemplos de Imagens Geradas

Aqui estão dois exemplos de imagens que gerei usando a aplicação:

  • Descrição: "Uma xícara de café na cor branca e amarela em cima de um livro de cor azul."

spring ai open ai image generator sample 1
  • Descrição: "Uma mesa rústica com várias folhas verdes, uma xícara de café e um lago no fundo com pôr do sol."

spring ai open ai image generator sample 2

Conclusão

Como você pode ver, integrar IA em suas aplicações Java com Spring AI é incrivelmente simples. Com poucas linhas de código, você pode gerar imagens impressionantes usando o OpenAI DALL-E. O Spring AI abstrai toda a complexidade, permitindo que você se concentre no que realmente importa: a lógica do seu negócio.

Experimente você mesmo e veja como é fácil adicionar IA às suas aplicações Spring Boot!

// Compartilhe esse Post

💫
🔥 NOVO APP

Domine o Inglês em 30 dias!

Inteligência Artificial + Repetição Espaçada • Método cientificamente comprovado

✅ Grátis para começar 🚀 Resultados rápidos
×