• </hype>
  • Posts
  • </hype> OpenAI lança novo modelo de geração de imagens para APIs

</hype> OpenAI lança novo modelo de geração de imagens para APIs

.join("Node.js 22.15.0 (LTS) lançado com suporte a ZSTD e melhorias no Crypto")

sudo apt-get update

OpenAI lança novo modelo de geração de imagens para APIs

A OpenAI acaba de liberar acesso ao seu modelo mais recente de geração de imagens para desenvolvedores via API. O mesmo modelo que viralizou no ChatGPT agora pode ser integrado em suas aplicações, permitindo criar desde figuras no estilo Ghibli até visualizações fotorrealistas. Se você já brincou com a versão do ChatGPT, agora é hora de implementar isso nos seus projetos, com suporte inclusive para Adobe e Figma.

Entre os recursos mais interessantes, destaca-se o "inpainting" - que permite editar apenas áreas específicas de uma imagem através de máscaras, evitando a necessidade de regenerar toda a imagem quando você quer modificar apenas um detalhe. Além disso, o modelo suporta múltiplos formatos (quadrado, paisagem, retrato), diferentes níveis de qualidade e até transparência para criar imagens com fundo transparente.

// Importando as dependências
const { OpenAI } = require("openai");
const fs = require("fs");

// Configurando o cliente OpenAI
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY
});

async function editarImagemComInpainting() {
  try {
    // Carregando a imagem original e a máscara como streams
    // (A máscara deve ter áreas transparentes onde preservar e áreas brancas onde editar)
    const imagem = fs.createReadStream("imagem_original.png");
    const mascara = fs.createReadStream("mascara.png");
    
    const resultado = await openai.images.edit({
      model: "gpt-image-1",
      image: imagem,
      mask: mascara,
      prompt: "Um gato laranja sentado com um chapéu azul",
      n: 1,
      size: "1024x1024",
      response_format: "url" 
    });
    
    console.log("Imagem gerada:", resultado.data[0].url);
  } catch (erro) {
    console.error("Erro ao editar imagem:", erro);
  }
}

editarImagemComInpainting();

Este exemplo segue a estrutura oficial da API conforme a documentação mais recente. Note que a imagem e a máscara são carregadas como streams utilizando fs.createReadStream(), o método recomendado pela OpenAI para arquivos.

A precificação do modelo GPT-image-1 é baseada em tokens, com valores diferentes para entrada e saída:

Tipo de token

Preço por milhão de tokens

Texto (entrada)

$5

Imagem (entrada)

$10

Imagem (saída)

$40

Na prática, isso se traduz nos seguintes custos aproximados por imagem gerada:

Qualidade

Tamanho 1024×1024

Custo aproximado

Baixa

272 tokens

$0.02 (2 centavos)

Média

1056 tokens

$0.07 (7 centavos)

Alta

4160 tokens

$0.19 (19 centavos)

Para prompts mais complexos, o tempo de processamento pode chegar a 2 minutos. Vale notar que o modelo ainda tem algumas limitações: pode ter dificuldades com posicionamento preciso de textos e manter consistência visual para personagens recorrentes em múltiplas gerações.

Node.js 22.15.0 (LTS) lançado com suporte a ZSTD e melhorias no Crypto

O Node.js lançou ontem sua mais recente versão LTS (22.15.0), trazendo várias melhorias notáveis, incluindo suporte para compressão ZSTD, recursos avançados para manipulação de certificados TLS, e melhorias nas APIs de criptografia. Esta versão continua o compromisso da equipe com desempenho e segurança.

1. Suporte para compressão ZSTD

Um dos destaques é a adição de suporte para ZSTD (Zstandard), um algoritmo de compressão de dados rápido desenvolvido pelo Facebook que oferece alta taxa de compressão com desempenho superior ao GZIP em muitos casos.

// Exemplo de uso do ZSTD
const zlib = require('node:zlib');
const fs = require('node:fs');

// Compressão
const input = fs.readFileSync('arquivo.txt');
const compressed = zlib.zstdCompressSync(input);
fs.writeFileSync('arquivo.zst', compressed);

// Descompressão
const compressedData = fs.readFileSync('arquivo.zst');
const decompressed = zlib.zstdDecompressSync(compressedData);
console.log(decompressed.toString());

Este recurso é especialmente útil para aplicações que precisam transferir ou armazenar grandes volumes de dados com eficiência.

2. Melhorias na API de Certificados TLS

A nova versão traz o método tls.getCACertificates() que permite recuperar programaticamente os certificados CA disponíveis no Node.js. Além disso, há suporte para usar certificados do sistema operacional com a flag --use-system-ca, agora disponível também no Windows e macOS:

const tls = require('node:tls');

// Obter todos os certificados CA usados pelo Node.js
const caCerts = tls.getCACertificates();
console.log(`Total de certificados CA: ${caCerts.length}`);

// Acessar informações do primeiro certificado
if (caCerts.length > 0) {
  console.log(`Emissor: ${caCerts[0].issuer.CN}`);
  console.log(`Validade: ${caCerts[0].valid_to}`);
}

Para usar certificados do sistema, você pode iniciar sua aplicação com:

node --use-system-ca app.js

3. Suporte para TLSA em DNS

A versão 22.15.0 adiciona suporte para consulta e análise de registros TLSA, um recurso essencial para DANE (DNS-based Authentication of Named Entities), permitindo verificar certificados TLS através do DNS:

const dns = require('node:dns');
const { promisify } = require('node:util');

const resolveTlsa = promisify(dns.resolveTlsa);

async function checkTlsaRecords(domain) {
  try {
    const records = await resolveTlsa(domain);
    console.log('TLSA records:', records);
    // Registros incluem: usage, selector, matchingType e certificate
  } catch (err) {
    console.error('Erro ao resolver registros TLSA:', err);
  }
}

checkTlsaRecords('_443._tcp.example.com');

4. Melhorias no Assert para Comparações Parciais

A API assert recebeu uma atualização significativa com a implementação de comparação parcial de erros e melhorias no partialDeepStrictEqual, tornando os testes mais flexíveis:

const assert = require('node:assert');

// Comparando objetos de erro parcialmente
const error = new Error('Mensagem de erro');
error.code = 'ERR_CUSTOM';
error.status = 404;

// Verificar apenas algumas propriedades
assert.throws(
  () => { throw error; },
  {
    message: 'Mensagem de erro',
    code: 'ERR_CUSTOM'
    // Não precisa verificar status ou outras propriedades
  }
);

// Uso de partialDeepStrictEqual
const objeto = { 
  usuario: { nome: 'João', idade: 30 },
  enderecos: [
    { cidade: 'São Paulo', tipo: 'residencial' },
    { cidade: 'Rio de Janeiro', tipo: 'comercial' }
  ]
};

// Verificar apenas partes específicas do objeto
assert.partialDeepStrictEqual(objeto, {
  usuario: { nome: 'João' },
  enderecos: [
    { cidade: 'São Paulo' }
  ]
});

5. Exposição da função diff do Util

Uma novidade que vai facilitar a vida dos desenvolvedores de ferramentas de teste e debugging é a exposição da função diff usada pelos erros de asserção:

const { diff } = require('node:util');

const obj1 = { a: 1, b: 2, c: 3 };
const obj2 = { a: 1, b: 5, d: 4 };

// Gera uma visualização das diferenças entre dois objetos
const resultado = diff(obj1, obj2);
console.log(resultado);
// Saída formatada mostrando as diferenças

O Node.js 22.15.0 traz melhorias significativas em áreas-chave como compressão, segurança e ferramentas de desenvolvimento. Em particular, o novo suporte para ZSTD pode oferecer ganhos de performance em aplicações que lidam com grandes volumes de dados, enquanto as melhorias na API de certificados tornam mais fácil o gerenciamento de segurança TLS.

Se você já está usando a versão 22.x, a atualização é recomendada e deve ser tranquila para a maioria das aplicações. Fonte: Node.js - "Node v22.15.0 (LTS)"

pnpm add quick-tips

  • screenshot-to-code - Converte screenshots em código clean HTML/Tailwind/React/Vue. O projeto teve um boom em abril e está recebendo constantes atualizações.

  • Google Gemini alcança 350 milhões de usuários mensais: O serviço de IA da Google, Gemini, atingiu a impressionante marca de 350 milhões de usuários ativos mensais globalmente, segundo dados revelados durante o processo antitruste em andamento.

  • private-gpt - Interaja com seus documentos usando o poder do GPT, 100% privado, sem vazamento de dados. Perfeito para projetos corporativos onde a privacidade é essencial.

  • LLaMA-Factory - Framework unificado para fine-tuning de mais de 100 LLMs e VLMs. Uma ferramenta essencial se você está trabalhando com modelos de linguagem e precisa de personalização


sudo shutdown --reboot=tomorrow

Esta newsletter está em constante desenvolvimento (always beta). Estou aprendendo a cada edição e seu feedback é essencial!

Compartilhe com outros devs que podem gostar e me conte o que achou:

  • O que você quer ver nas próximas edições?

  • Algum tema específico que devemos abordar?

  • Sugestões para melhorar o formato?

Todo pull request de ideias é bem-vindo!