JavaScript ile Yapay Zeka (OpenAI, Dall-E)

JavaScript ile Yapay Zeka (OpenAI, Dall-E)

Open AI ve DALL-E

Detaylara geçmeden önce çok kısa OpenAI ve DALL-E teknolojilerinden bahsetmek istiyorum.

OpenAI

OpenAI

OpenAI, 11 Aralık 2015'de San Francisco merkezli kurulmuş bir yapay zeka araştırma şirketidir.

DALL-E

DALL-E, 5 Ocak 2021'de OpenAI tarafından piyasa sürülen, metinsel tanımlardan görüntü oluşturan bir yapay zeka programıdır.

DALL-E 2

DALL-E 2, DALL-E’deki hataları ve performans sorunlarını en aza indirmek için üretildi. Yeni versiyonu ile eskisinden 4 kat daha hızlı çalışmasının yanında, oluşturduğu görseller daha kaliteli bir hale dönüştü.

Özellikler

Metinsel Özellikler

Metinsel özellik; yazmış olduğumuz metne DALL-E’nin mantıklı bir cevap vermesidir. Bu metin bir öneri ya da soru olabilir. Örneğin DALL-E’den bir öneri isteyebilirsiniz:

Kullanıcı: Bana 1 ile 10 arasında bulunan bir sayı söyler misin?
DALL-E: 7
Kullanıcı: Bana bir korku filmi önerir misin?
DALL-E: The Conjuring 2
Kullanıcı: Superman kimdir?
DALL-E: Superman, yüksek kuvvetleri olan bir süper kahramandır.
Kullanıcı: Tavuk çorbası nasıl yapılır?
DALL-E: Tavuk çorbası, genellikle tavuk eti, sebzeler ve tuzdan oluşan bir yemektir.

Görsel Özellikler

Benim en sevdiğim özellik; görsel özellikler. Görsel özelliği; yazmış olduğunuz metne uygun bir görsel üretilmesi ya da var olan bir görsel üzerinden değişiklikler yapmak olarak tanımlayabiliriz.

Kırmızı tekerlekleri olan bir araba.

Kodsal Özellikler

Kodsal özellik; ihtiyacınız olan işlevin DALL-E tarafından belirlemiş olduğunuz yazılım dili formatıyla size kod şeklinde teslim edilmesidir.

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(100, 75, 50, 0, 2 * Math.PI);
ctx.fillStyle = "red";
ctx.fill();
ctx.stroke();
var animals = ["lion", "tiger", "cat", "bird", "snake", "monkey", "leopard", "jaguar", "lynx", "cheetah"];
// Function 1
var animals = ["lion", "tiger", "cat", "bird", "snake", "monkey", "leopard", "jaguar", "lynx", "cheetah"];
var animal = animals[Math.floor(Math.random()*10)];

console.log(animal);

// Function 1 fonksiyonun işlevi nedir?
// Hayvanlar dizisinden rastgele bir hayvan çeken fonksiyon
  • GitHub Copilot’ı eklenti olarak ekleyip, editor üzerinden kullanabilirsiniz. Fakat DALL-E’de böyle bir özellik mevcut değil maalesef.
  • GitHub Copilot kod satırlarını kontrol eder ve öneriler sunar. DALL-E ise bunun yerine, size açıklamada yazmış olduğunuz işlevin kodunu verir.
  • GitHub Copilot’ın kodu otomatik tamamlama özelliği mevcuttur, fakat DALL-E’de böyle bir özellik mevcut değildir.
  • GitHub Copilot’ın amacı kod yazmaya yardımcı olmaktır. DALL-E’nin ise kullanıcının isteğini anlayarak kod çıktısı üretebilmektir.
  • DALL-E’nin yapay zeka işlevi, GitHub Copilot’tan daha gelişmiştir.
  • DALL-E’nin görsel üzerinde işlemler yapabileceğiniz online tasarım aracı mevcuttur. GitHub Copilot’ta böyle bir araç mevcut değildir.
  • DALL-E’de API desteği mevcut olduğundan proje içinde kullanılabilir. GitHub Copilot’ta böyle bir destek bulunmamaktadır.

API Özellikleri

Her şey harika fakat bu özellikleri projemizde nasıl kullanacağız? Yine bu özellikleri kullanım şekline göre metinsel api ve görsel api olmak üzere iki kategoriye ayıracağım.

Bunları sırasıyla anlatıyorum, öncelikle API KEY işlemini yapalım:

  1. OpenAI sitesine girin ve menüden API’ye tıklayın.
  2. Eğer üye değilseniz SIGN UP butonuna basarak üye olun, eğer üyeyseniz LOG IN butonuna basarak giriş yapın.
  3. Giriş yaptıktan sonra sağ üstten profilinize tıklayın, açılan listeden View API keys’e tıklayın.
  4. Açılan ekranda Create new secret key butonuna tıklayarak API kodunuzu alın ve bir yere kaydedin.

API KEY’imizi aldıktan sonra, yazılımsal alt yapımızı oluşturalım:

  1. Bilgisayarınızda Node.js yüklü değilse yükleyin.
  2. Buradaki OpenAI tarafından hazırlanmış hazır kit’i klonlayın.
  3. npm install komutu ile gereksinimleri yükleyin.
  4. cp .env.example .env komutu ile örnek environment dosyasını .env isminde kopyalayın.
  5. Daha önceden almış olduğumuz API KEY’imizi, bu yeni oluşturduğumuz .env isimli dosyamızın içine ekleyin.
  6. npm run dev diyerek projeyi ayağa kaldırın ve artık hazırsınız.

Metinsel API

Metinsel API kendi için bir çok işlevsellik barındırıyor, bu yüzden işlevselliklerine göre kullanımları yazağım.

Metni Otomatik Tamamlama

Otomatik tamamlama özelliği; göndermiş olduğunuz bir metin parametresini mantıklı bir şekilde otomatik tamamlayarak size döner.

POST https://api.openai.com/v1/completions
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
model: "text-davinci-002",
prompt: "Say this is a test",
max_tokens: 6,
temperature: 0,
});

Metni Düzenleme

Düzenleme özelliği; göndermiş olduğunuz bir metin içinde, metinsel hataları bulup, düzenlemesidir.

POST https://api.openai.com/v1/edits
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createEdit({
model: "text-davinci-edit-001",
input: "What day of the wek is it?",
instruction: "Fix the spelling mistakes",
});

Görsel API

Görsel API kendi için bir çok işlevsellik barındırıyor, bu yüzden işlevselliklerine göre kullanımları yazağım.

Görsel Oluşturma

Görsel oluşturma özelliği; göndermiş olduğumuz metnin içeriğine göre bir resim oluşturmasıdır.

POST https://api.openai.com/v1/images/generations
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createImage({
prompt: "A cute baby sea otter",
n: 2,
size: "1024x1024",
});

Görsel Düzenleme

Görsel düzenleme özelliği; düzenleme yapılacak iki görsel parametresi ve hangi görsele hangisinin nasıl ekleneceğini belirttiğimiz bir metin parametresi verilerek, bir görsel düzenleme yapmasıdır.

POST https://api.openai.com/v1/images/edits
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createImageEdit(
fs.createReadStream("otter.png"),
fs.createReadStream("mask.png"),
"A cute baby sea otter wearing a beret",
2,
"1024x1024"
);

Benzer Görsel Oluşturma

Benzer görsel oluşturma özelliği; göndermiş olduğumuz görsel parametresine benzer görsel varyansları oluşturmaktadır.

POST https://api.openai.com/v1/images/variations
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createImageVariation(
fs.createReadStream("otter.png"),
2,
"1024x1024"
);

DALL-E Altyapılı Uygulamalar

DALL-E gelişime açık ve heyecan yaratan bir teknoloji olmasının ardından, bir çok önemli firma DALL-E’nin yapay zekasını kullanarak yazılım ürünleri geliştirmeye başladı bile.

Designer Uygulaması

Cala Uygulaması

Mixtiles Uygulaması

DALL-E’nin Yaratabileceği Problemler

DALL-E bir yapay zeka girişimi olduğundan, gelişimi uçsuz bucaksız bir dünyadır. Bu yüzden yaratıcılığın gelişmesine olanak sağlasada, sonuçları bazı topluluklar tarafından hoş karşılanmıyor.

Kötüye Kullanım

DALL-E basit bir şekilde; istenilen isteğe sonuç döner. Fakat bu istek illegal bir durum olabilir, müstehcen bir görsel olabilir ya da argo kelimeler kullanılabilir.

Sanatçılar ve Fotoğrafçılar

Bir çok sanatçı ve fotoğrafçı bu durumdan elbette olumsuz etkileneceklerini düşünüyorlar. Sonuçta bir sanatçının haftalarca, hatta aylarca çalıştığı ve emek verdiği bir görseli DALL-E saniyeler içinde tamamlayabiliyor.

Ücretlendirme

Bir girişimin içinde Elon Musk olurda ücretsiz olur mu? Elbette olmaz. Haliyle özellikle para birimi dolara göre düşük olan geliştiriciler için, uzun soluklu geliştirmeler yapmak biraz pahalı olabiliyor.

Son Notlar

Yazılım hayatımızın bir vazgeçilmezi olmaya devam ediyor. Bulunduğumuz konumda ya bu teknolojiye ayak uydurucaz ya da halimize üzülmeye devam edeceğiz.

Yeterince gelişmiş bir teknoloji, sihirden ayırt edilemez.

Arthur C. Clarke

Kaynaklar

--

--

Sr. Front-End Developer at Etstur

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store