Guia completo para usar a API Midjourney para geração de texto para imagem

A Introdução Midjourney revolucionou o mundo das imagens geradas pela IA com seus poderosos recursos de texto para imagem. Enquanto o Midjourney é conhecido principalmente por sua interface Discord Bot, os desenvolvedores agora podem integrar seus recursos de geração de imagens diretamente em seus aplicativos usando APIs. Este guia o levará a tudo o que você precisa saber para criar uma ferramenta de texto para imagem usando a API de Midjourney. Pré -requisitos Antes de mergulhar na implementação, certifique -se de ter: conhecimento básico do JavaScript/TypeScript Node.js instalado em seu sistema Uma chave da API Compreensão das APIs REST e programação assíncrona para começar 1. Instalação primeiro, instale o SDK necessário. Para este guia, usaremos o ImaginePro SDK, que fornece uma interface limpa para as interações da API Midjourney: NPM Instale ImaginePro Digite o modo de saída de tela cheia de tela cheia Modo 2. Configuração básica Crie um novo projeto e configure a configuração básica: importar ImagineProsdk do ‘ImaginePro’; const midjourneyclient = new ImagineProsdk ({apikey: ‘your-imaginepro-api-chave’,}); Digite o modo de tela cheia Sair da geração de texto do núcleo do modo de tela cheia. console.log (‘Generation iniciou:’, Response.MessageId); // Aguarde a conclusão e obtenha o resultado do resultado = aguarda midjourneyclient.FetchMessage (Response.MessageId); resultado de retorno; } catch (error) {console.error (‘geração falhou:’, erro); erro de lança; }} // Exemplo de uso const imageReSult = wait generateImage (‘Um dragão majestoso voando sobre um castelo medieval ao pôr do sol’); console.log (‘URL da imagem gerada:’, imageResult.uri); Digite o modo de tela completa Sair da tela cheia Modo de engenharia avançada de engenharia Midjourney responde bem a prompts detalhados e descritivos. Aqui estão algumas práticas recomendadas: // boa estrutura pronta const goodprompt = ‘Um retrato fotorrealista de um velho bruxo sábio, iluminação dramática, detalhes complexos, resolução de 8k, composição cinematográfica’; // incluem modificadores de estilo const styledprompt = ‘Uma paisagem urbana futurista, estética cyberpunk, luzes de neon, ruas com chapas de chuva, iluminação cinematográfica’; // Especifique as proporções de aspecto e a qualidade const de detalhamento de ‘uma paisagem serena da montanha na hora de ouro, 16: 9 aspectos, texturas detalhadas de alta qualidade’; Digite os recursos de manipulação de imagens de imagem de criação de tela cheia de tela cheia aprimora a resolução de imagens geradas: função assíncrona upsscaleImage (messageId, index = 1) {try {const resultado = wait midjourneyclient.upScale ({{messageId: Índice: Índice // corresponde a u1, u2, u4, u4 ({{MessageId: Índice: // corresponde a u1, u2, u4, u4, u4 ({{message: Índice: ndice) resultado de retorno; } catch (error) {console.error (‘Upscaling falhou:’, erro); erro de lança; } } Enter fullscreen mode Exit fullscreen mode Generating Variants Create alternative versions of existing images: async function createVariant(messageId, index = 1) { try { const result = await midjourneyClient.variant({ messageId: messageId, index: index // Corresponds to V1, V2, V3, V4 buttons }); resultado de retorno; } catch (error) {console.error (‘geração variante falhou:’, erro); erro de lança; }} Digite o modo de tela fullcreen Sair da tela completa Remolando imagens Regenere as imagens com o mesmo prompt: ASYNC FUNCTION ROLIMAGE (MEGHERID) {TRY {const resultado = Wait MidjourneyClient.Reroll ({MessageId: MessageId}); resultado de retorno; } catch (error) {console.error (‘Reroll falhou:’, erro); erro de lança; }} Digite o modo de tela de tela cheia de saída de tela cheia construindo uma ferramenta completa de texto para imagem 1. Crie a classe de aplicativo principal textToimageTool {construtor (apikey) {this.client = new ImagineProsdk ({APIKEY: APIKEY, Timeout: 300000,}); this.generationHistory = []; } assíncrono generateImage (prompt, opções = {}) {const generationId = date.now (). tostring (); tente {// Iniciar a geração const Response = aguarde this.client.imagine ({prompt: prompt: ref: generationId, webhookoverride: options.webhookurl}); // rastrear geração this.generationhistory.push ({id: generationId, messageId: Response.MessageId, Prompt: Prompt: Status: ‘Processamento’, StartTime: new Date ()}); // Aguarda pela conclusão const resultado = aguarde this.client.FetchMessage (Response.MessageId); // Atualizar histórico const historyItem = this.generationhistory.find (item => item.id === generationId); if (historyItem) {historyItem.status = resultado.status; historyItem.result = resultado; historyItem.completionTime = new Date (); } resultado de retorno; } catch (error) {console.error (‘geração de imagem falhou:’, erro); erro de lança; }} assíncrono aprimorimage (messageId, aprimorentType, index = 1) {switch (aprimormentype) {case ‘upscale’: return this.client.upScale ({messageId, index}); case ‘variante’: return aguart this.client.Variant ({messageId, index}); case ‘Reroll’: retornar aguart this.client.Reroll ({messageId}); padrão: jogue novo erro (‘tipo de aprimoramento desconhecido’); }} getGenationHistory () {return this.GenationHistory; }} Digite o modo de saída do modo de tela full. geração console. $ {prompt} `); // Use webhook na geração const resultado = wait Tool.GeraReAmage (‘A Beautiful Sunset’, {WebHookurl: ‘}); Digite o modo de saída do modo de tela cheia 3. <= maxRetries; attempt++) {
try {
return await tool.generateImage(prompt);
} catch (error) {
console.error(`Attempt ${attempt} failed:`, error.message);

if (attempt === maxRetries) {
throw new Error(`Failed after ${maxRetries} attempts: ${error.message}`);
}

// Wait before retrying
await new Promise(resolve => setTimeout (resolve, 2000 * tentativa)); } } } Enter fullscreen mode Exit fullscreen mode Best Practices 1. Prompt Optimization Be specific: Instead of “a cat”, use “a majestic Persian cat with golden fur sitting in a sunlit garden” Include style keywords: “photorealistic”, “cinematic”, “artistic”, “minimalist” Specify lighting and mood: “dramatic lighting”, “soft natural light”, “moody atmosphere” Add quality modifiers: “alta resolução”, “detalhado”, “8k”, “fotografia profissional” 2. Otimização de desempenho // Processamento em lote para várias imagens Função assíncrona generateBatch (prompts) {const Promises = prompts.map (prompt => ferramenta.GeReRateImage (prompt) .Catch (erro> (Error: Error.message, Prompt:}); retorno aguardo Promise.AllSetTled (Prompts); } // Classe de limitação de taxa rateLimitedGenerator {construtor (ferramenta, maxRequestSperMinute = 10) {this.tool = ferramenta; this.maxRequests = maxRequestsperMinute; this.RequestQueue = []; this.LasTeCeSTime = 0; } assíncrono generateImage (prompt) {const agora = date.now (); const timesincelastrequest = agora – this.LasTeCeStTime; const mininterval = 60000 / this.maxRequests; // 60 segundos / max solicitações se (timesincelastrequest < minInterval) {
await new Promise(resolve =>
setTimeout (resolve, mininterval – timesincelastrequest)); } this.LasTeCeStime = date.now (); retorno aguarde this.tool.geretimage (prompt); }} Digite Modo de tela FullScreen Sair Modo 3. // enquete para progresso const const checkProgress = async () => {const resultado = aguarda ferramenta.client.FetchMessage (Response.MessageId); OnProgress ({status: Result.status, Progress: Result.Progress, MessageId: Response.MessageId}); if (resultado.status === ‘Processamento’ || result.status === ‘fileued’) {setTimeout (checkprogress, 2000); }}; checkprogress (); return wait tool.client.FetchMessage (Response.MessageId); } // Uso GereateWithProgress (‘A Magical Forest’, (Progress) => {Console.log (`Status: $ {Progress.status}, Progress: $ {Progress.Progress}%`);}); Digite os recursos avançados do modo de tela cheia de tela cheia (edição seletiva) função assíncrona inpaintimage (messageId, mask) {tente {const resultado = wait midjourneyclient.inPainting ({MessageId: MessageId, Mask: Mask // Base64 codificada imagem}); resultado de retorno; } catch (error) {console.error (‘inpainting falhou:’, erro); erro de lança; }} Digite o modo de tela fullcreen Sair Modo de tela cheia de lidada com webhook personalizada WebHookHandler {construtor () {this.PendingGenerations = new Map (); } Registergeneração (generationId, retorno de chamada) {this.pendinggenerações.set (generationId, retorno de chamada); } handlewebhook (carga útil) {const {ref, status, uri, erro} = carga útil; const retorno de chamada = this.pendingGenerations.get (ref); if (retorno de chamada) {retorno de chamada ({status, uri, erro}); this.pendingGenerations.Delete (Ref); }}} Digite o modo de tela fullcreen Sair do modo de tela cheia Solução de problemas de problemas comuns 1. Limites da taxa de API // Implemente a função exponencial de assíncrona generateWithbackoff (Prompt, maxretries = 5) {para (Let Tent = 1; Tent <= maxRetries; attempt++) {
try {
return await tool.generateImage(prompt);
} catch (error) {
if (error.message.includes(‘rate limit’)) {
const delay = Math.pow(2, attempt) * 1000; // Exponential backoff
console.log(`Rate limited, waiting ${delay}ms before retry`);
await new Promise(resolve => setTimeout (resolver, atraso)); } else {tiro erro; }}}} Digite o modo de tela de tela cheia 2. Problemas de rede // Adicione o tempo limite e novamente para problemas de rede Digite a conclusão do modo de tela cheia do modo de tela cheia, criando uma ferramenta de texto para imagem com a API Midjourney abre possibilidades incríveis para aplicativos criativos. Seguindo este guia, você terá uma base sólida para criar ferramentas robustas e de geração de imagens robustas. Lembre-se de: sempre lidar com erros implementar graciosamente a limitação adequada Use WebHooks para aplicativos de produção Otimize os avisos para obter melhores resultados Monitore o uso e custos da API O ImaginePro SDK fornece uma interface profissional limpa para a integração da API de Midjourney, facilitando a criação de aplicativos de grau de qualidade com recursos de geração de imagem confiáveis. Recursos adicionais

Fonte

Publicar comentário

Você pode ter perdido