Criando um programa python para gerar imagens com a API do DALL-E

Nos últimos anos, a área de inteligência artificial e aprendizado de máquina tem avançado significativamente, abrindo espaço para a criação de ferramentas cada vez mais impressionantes. Uma dessas ferramentas é o DALL-E, um modelo de rede neural desenvolvido pela OpenAI capaz de gerar imagens a partir de descrições em linguagem natural.

Neste artigo, mostraremos como criar um programa Python que utilize a API do DALL-E para gerar imagens a partir de prompts fornecidos por meio de arquivos e texto passados para o programa via linha de comando. O objetivo é que, ao final, seja possível gerar imagens a partir de comandos simples e salvar as imagens geradas no disco.

  1. Configurando o ambiente

O primeiro passo é configurar o ambiente para o uso da API do DALL-E. Para isso, é necessário criar uma conta no site da OpenAI e gerar uma chave de API, que será utilizada para autenticar o programa. Além disso, é necessário instalar a biblioteca openai no Python, que será utilizada para realizar as requisições à API.

Para instalar a biblioteca, basta executar o seguinte comando no terminal:

pip install openai
  1. Preparando o código

Com o ambiente configurado, é hora de começar a preparar o código. O primeiro passo é importar as bibliotecas necessárias e definir a chave de API gerada no site da OpenAI. O código inicial pode ser semelhante ao seguinte:

import openai
import argparse
import os

openai.api_key = "sua_chave_de_api_aqui"

Note que utilizamos a biblioteca argparse para permitir que o programa receba os prompts por meio de arquivos e texto passados pela linha de comando.

  1. Recebendo o prompt

O próximo passo é receber o prompt, que pode ser passado por meio de um arquivo ou como texto direto na linha de comando. Para isso, utilizaremos o argparse para definir as opções do programa. O seguinte código pode ser utilizado para receber o prompt:

parser = argparse.ArgumentParser(description='Gera imagens utilizando o modelo DALL-E')
parser.add_argument('--prompt', type=str, help='Prompt para gerar a imagem')
parser.add_argument('--prompt-file', type=str, help='Arquivo contendo o prompt para gerar a imagem')
args = parser.parse_args()

if args.prompt is None and args.prompt_file is None:
    parser.print_help()
    exit(1)

if args.prompt_file is not None:
    with open(args.prompt_file, 'r') as f:
        prompt = f.read()
else:
    prompt = args.prompt

Este código verifica se foi passado um prompt diretamente na linha de comando ou se foi passado um arquivo contendo o prompt. Caso nenhum dos dois tenha sido passado, o programa exibe uma mensagem de ajuda e finaliza.

Caso um arquivo tenha sido passado, o código lê o conteúdo do arquivo e armazena o prompt em uma variável. Caso o prompt tenha sido passado diretamente na linha de comando, o programa simplesmente armazena o valor em uma variável.

  1. Gerando a imagem

Com o prompt armazenado em uma variável, é hora de gerar a imagem utilizando a API do DALL-E.

Para isso, utilizaremos a função openai.Completion.create(), que permite enviar uma solicitação para a API do DALL-E com o prompt e receber a imagem gerada em resposta. O seguinte código pode ser utilizado para realizar esta tarefa:

response = openai.Completion.create(
    engine="image-alpha-001",
    prompt=prompt,
    max_tokens=512,
    n=1,
    stop=None,
    temperature=0.5,
)

image_url = response.choices[0].text.strip()

Este código envia uma solicitação à API do DALL-E, utilizando o motor image-alpha-001 para gerar a imagem a partir do prompt. Além disso, definimos o número máximo de tokens (palavras) que o modelo pode usar para gerar a imagem (max_tokens=512), o número de imagens que queremos gerar (n=1), e a temperatura da amostragem (temperature=0.5). A temperatura controla a criatividade do modelo, com valores mais altos gerando imagens mais aleatórias e valores mais baixos gerando imagens mais previsíveis.

Após receber a resposta da API, extraímos a URL da imagem gerada e armazenamos em uma variável.

  1. Salvando a imagem

Por fim, é hora de salvar a imagem gerada no disco. Para isso, podemos utilizar a biblioteca requests para fazer o download da imagem a partir da URL obtida na resposta da API e salvá-la em um arquivo no disco. O seguinte código pode ser utilizado para realizar esta tarefa:

import requests

image_response = requests.get(image_url)
with open('output.jpg', 'wb') as f:
    f.write(image_response.content)

Este código faz o download da imagem a partir da URL e armazena o conteúdo em uma variável. Em seguida, ele abre um arquivo com permissão de escrita binária ('wb') e escreve o conteúdo da imagem nesse arquivo. O arquivo é salvo com o nome output.jpg, mas você pode escolher outro nome ou caminho de arquivo, se desejar.

  1. Conclusão

Com este programa, é possível gerar imagens a partir de prompts fornecidos por meio de arquivos e texto passados pela linha de comando, salvando as imagens geradas no disco. O programa utiliza a API do DALL-E para gerar as imagens, permitindo que sejam criadas imagens impressionantes e criativas a partir de descrições em linguagem natural.

É importante lembrar que a API do DALL-E é um recurso poderoso e que deve ser utilizado com responsabilidade. Certifique-se de ler a documentação da API e seguir as diretrizes de uso recomendadas pela OpenAI para evitar problemas de privacidade e ética. Além disso, este programa é apenas um exemplo simples e pode ser aprimorado e personalizado de várias maneiras, dependendo das necessidades e objetivos de cada usuário.