برنامه نویسی

DALL-E با node.js – انجمن DEV

معرفی

در چند سال گذشته، ما شاهد بوده ایم که چگونه یادگیری ماشینی و هوش مصنوعی بسیار بهبود یافته اند، و اکنون می بینیم که چگونه هوش مصنوعی بر روال روزانه ما و نحوه تعامل ما با اینترنت تأثیر می گذارد. از چت‌بات‌های سطح بالا گرفته تا تولیدکنندگان تصاویر باورنکردنی، اما در میان آن فناوری‌هایی که بیش از همه از آن هیجان‌زده هستم، امکان تولید تصاویر و هنر از طریق فکر و تخیل است، و در این مقاله خواهیم دید که چگونه می‌توان تصاویر را از ورودی‌هایی تولید کرد که به آن‌ها با استفاده از سریع می‌گویند. مدل DALL-E، لطفاً توجه داشته باشید که DALL-E رایگان نیست پس از ایجاد حساب کاربری خود، اعتبار رایگان دریافت خواهید کرد که برای اهداف حداقلی و آزمایشی ما کافی است.

ایجاد حساب کاربری

قبل از شروع ساختن اپلیکیشن خود، با ایجاد حساب کاربری خود و تولید یک توکن API که از آن برای دسترسی به شبکه استفاده خواهیم کرد، شروع می کنیم.
اگر هنوز حسابی ندارید از پیوند زیر برای ایجاد حساب خود استفاده کنید

پس از ایجاد حساب کاربری خود، روی تصویر نمایه خود کلیک کنید و به مشاهده کلیدهای API بروید، یکبار در آنجا از شما خواسته می شود یک کلید API ایجاد کنید، در اینجا نحوه ظاهر صفحه نمایش است.

یک برنامه ساده node.js ایجاد کنید

با تمام اعتبار و اطلاعاتی که برای ارسال درخواست خود نیاز داریم، اجازه دهید اکنون برنامه mini node.js خود را ایجاد کرده و چند تصویر ساده ایجاد کنیم.

یک برنامه node.js را مقداردهی اولیه کنید with npm init سپس وابستگی های بالا را نصب کنید

npm install express nodemon openai body-parser

به جای اینکه برنامه خود را برای برخی به روز رسانی های کوچک مجدداً راه اندازی کنیم، از nodemon برای بارگذاری مجدد سرور خود هنگام ایجاد تغییرات استفاده خواهیم کرد. برای فعال کردن nodemon به فایل package.json خود بروید و اسکریپت زیر را اضافه کنید "start": "nodemon index.js " فراموش نکنید که جایگزین کنید index.js با فایل ورودی اصلی شما

اولین تصویر خود را با DALL-E ایجاد کنید

const express = require("express");
const app = express();
const openai = require('openai');
const bodyparser = require('body-parser');

//body-parser
app.use(bodyparser.json());


app.post('/createImage', async (req, res, next) => {
        try {
        const prompt = req.body.prompt;
        const config = new openai.Configuration({
            apiKey: "your API key",
        });

        const openaiApi = new openai.OpenAIApi(config);
        const createImage = await openaiApi.createImage({
            prompt: prompt,
            n: 1,
            size: "512x512",
        })
        return res.status(201).json({ imageUrl: createImage.data.data[0].url });
    } catch (error) {
        return res.status(500).json({ message: "internal server error" });
    }

})

app.listen(8080, () => {
    console.log('server started on port 3000');
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجازه دهید معنی آن کد را بشکنیم n فیلد نشان دهنده تعداد تصاویری است که ما درخواست می کنیم، از 1 به 10 می رسد و این عدد prompt رشته
متنی است که برای ایجاد تصویر ما استفاده می شود، می تواند چیزی شبیه به بازی گربه در play-station 5 باشد.

لطفاً توجه داشته باشید که همه اندازه‌ها در این لیست پشتیبانی نمی‌شوند

   "256x256";
   "512x512";
   "1024x1024";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد تنوع تصویر

همچنین ممکن است بخواهید تغییراتی از تصویر موجود خود ایجاد کنید، که با DALL-E نیز امکان پذیر است، لطفاً توجه داشته باشید که تصویر شما باید شرایط زیر را رعایت کند.

  1. باید یک تصویر png باشد
  2. باید مربع باشد
  3. باید کمتر از 4 مگابایت داشته باشد
const express = require("express");
const app = express();
const openai = require('openai');
const bodyparser = require('body-parser');
const path = require('path');
const fs = require('fs');

//body-parser
app.use(bodyparser.json());

app.post('/createVariation', async (req, res, next) => {
    const config = new openai.Configuration({
        apiKey: "your API key",
    });
    const openaiApi = new openai.OpenAIApi(config);
    const image = path.join(__dirname, './image.png');
    const file = fs.createReadStream(image);

    try {
        const createVariation = await openaiApi.createImageVariation(
            file,
            2,
            "1024x1024",
        )
        const result = createVariation.data.data;
        return res.status(202).json({ imageUrl: result });

    } catch (error) {
        console.log(error.message);
        return res.status(500).json({ message: error.message, error: error });
    }
})


app.listen(8080, () => {
    console.log('server started on port 8080');
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مثال بالا دو تغییر از یک تصویر ایجاد می کنیم که به این معنی است که پاسخ ما یک آرایه خواهد بود. لطفاً مطمئن شوید که تصویر شما مربع و PNG معتبر است در غیر این صورت این دیگر کار نخواهد کرد.

جایزه
تولید تصاویر و ایجاد تغییرات بسیار شگفت انگیز و پر از سرگرمی است، اما اگر بخواهید تصویر ارائه شده در URL را بگیرید و آن را در فضای ذخیره سازی محلی خود یا فضای ذخیره سازی که سرور شما در آن در حال اجرا است بنویسید، چه می شود؟ ارتباط با کتابخانه openai این تابع اگر به طور کامل با توابع nod.js build در توابع پیاده سازی شود، این فرآیند ممکن است زمان غیرمنتظره ای طول بکشد زیرا تصاویر تولید شده کمی سنگین هستند.

  const result = "your image URL";
  const fetchFile = await fetch(result);
  const responseBlob = await fetchFile.blob();
  const arrayBuffer = await responseBlob.arrayBuffer();
  const buffer = Buffer.from(arrayBuffer);
 const filePath = path.join(__dirname, './' + new Date() + ".png");

 const writeFileToDisc = fs.writeFileSync(filePath, buffer);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای این مثال، من از تاریخ فعلی برای نام‌گذاری فایل‌ها به روشی منحصربه‌فرد استفاده می‌کنم، لطفاً از هر روشی که انتخاب می‌کنید، استفاده کنید.

نتیجه
تولید تصاویر با DALL-E بسیار شگفت‌انگیز و رضایت‌بخش است، اما API شگفت‌انگیز دیگری وجود دارد که بسیار حماسی‌تر و خلاقانه‌تر است اگر این مقاله به بیش از 100 لایک برسد، قول می‌دهم مقاله دیگری درباره نحوه تعامل با MID-JOURNEY بنویسم. اگر این مقاله را دوست داشتید، دوست خواهید داشت

فراموش نکنید که برای مطالب بیشتر با لایک و فالو کردن کمی عشق نشان دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا