Yapay Zeka Destekli Discord Botu (NodeJS)

Bilmeyenler için Discord, topluluk kurmak ve anlık mesajlaşmak için tasarlanmış olan dijital dağıtım platformudur. Discord üzerindeki sunucularda çeşitli amaçlarla kurulan chat botları bulunmaktadır. Müzik çaldırmak, sunucuya katılanları karşılayan, üyelere puan vs vermeye yarayan çeşitli işlevlerde botlar mevcut. Bunlar genelde başkaları tarafından geliştirilmiş ve herkesin kullanımına sunulmuş hazır botlardır.

Bu yazıda kendinize ait bir discord botunu nasıl oluşturacağımıza ve bunu NodeJS ile geliştirilen bir yazılımla nasıl yöneteceğimize bakacağız. Bunun güzel yanı ise, botun yapay zeka ile çalışacak olması. Dilerseniz üzerine hazır komut setlerinizi de dahil edebilirsiniz fakat bu haliyle bir yapay zekaya sorduğunuz anlamlı düzgün sorulara karşılık olarak cevaplar alacaksınız.

GPT-3 Teknolojisi ve OpenAI API

İnsanların kullandığı dil yapısına sahip içerik ve yazılar üreten çeşitli yapay zeka modelleri geliştirildi. Bunların arasında GPT-3 (Generative Pre-trained Transformer 3 – Üretken Önceden Eğitilmiş Transformatör 3) büyük ilgi gören bir teknoloji oldu. GPT-3, kendinden önce gelen tüm modellerden daha iyi sonuçlar üretti. OpenAI tarafından geliştirilen modelin piyasaya sürülen 3.versiyonudur.

Wikipedia dahil olmak üzere internet üzerinde bulunan halka açık veri kümeleri toplanarak yaklaşık 570 GB boyutundaki metin verileri ile GPT-3 beslenmiştir. Bu verilerle beslenen yapay sinir ağı sayesinde iletilen sorulara yüksek oranda doğrulukla cevaplar alınabilmektedir. Aynı zamanda dil yapısına sahip olan her şeyi oluşturabilir. Örneğin, makale şeklinde uzun metinler veya bir yazılım kodu yazabilmektedir.

OpenAI, bize bu hizmeti bir API üzerinden kullanabileceğimiz şekilde bize sunmaktadır. Bu konuda openai.com/api adresi üzerinde detaylı dokümanı bulunmaktadır. Bu API yoluyla iletilen sorulara karşılık olarak cevaplar alınabilmektedir. Projelerinizde bunu entegre ederek kullanmak mümkün. OpenAI sitesi üzerinde hesap oluşturduktan sonra verilen apikey kodunu kullanarak erişim sağlanmaktadır. Gönderilen her istek (soru) için belli oranda ücret yansıtılmaktadır. Deneme amaçlı hesabınıza ücretsiz bir limit tanımlanır bu limiti doldurana kadar kullanabilirsiniz, ardından devam etmek isterseniz OpenAI üzerindeki paketlerden satın alarak kullanabilirsiniz.

OpenAI Hesabı Oluşturmak

Discord botumuzu geliştirirken yapay zeka desteği için OpenAI API kullanacağız. Bunun için de bir hesap oluşturmamız gerekmektedir. openai.com/api adresine girerek sağ üst köşede bulunan “Sign Up” butonuna tıklayarak kayıt sayfasına ilerleyin ve bir hesap oluşturun.

OpenAI hesap oluşturma

Kaydı tamamlayıp giriş yaptıktan sonra üye işlemlerinden “View API Keys” tıklayarak api anahtarlarının olduğu sayfaya gidebilirsiniz.

OpenAI API keys sayfası

Burada oluşturulmuş bir key varsa “Copy” yazısına tıklayarak kodu kopyalayın. Bunu bir yere not edin. Yoksa “Create new secret key” seçeneğinden yeni key oluşturabilirsiniz.

Yeni Bir Discord Botu Oluşturmak

OpenAI hesabımızı oluşturup api key aldıktan sonra şimdi de bir Discord botu oluşturmamız gerekmektedir. Bunun için discord.com/developers adresinden hesabınıza giriş yapmalısınız. Ardından “New Application” seçeneğine tıklayarak yeni uygulama oluşturun.

Discord yeni uygulama oluşturma sayfası

Uygulamanızı oluşturduktan sonra açılan ekranda “Bot” sekmesine girdikten sonra “Add Bot” tıklayarak yeni bot ekleyin.

Discord bot oluşturma sayfası
Discord bot oluşturma sayfası

Botu ekledikten sonra TOKEN altında bulunan Copy seçeneğinden botun kodunu kopyalayıp bunu OpenAI api key ile aynı yere not edin. Eğer “Copy” butonunu göremiyorsanız “Revoke” butonuna tıklayarak yeni token oluşturabilirsiniz.

Botu Discord sunucunuza eklemek için OAuth2 sekmesine tıklayıp hemen altındaki “URL Generator” sayfasına gidin. Açılan ekranda Scopes altından “bot” ve Bot Permissions altından da “Administrator” (veya kendinize göre diğer seçenekleri) seçin.

Discord bot oluşturma sayfası

Seçenekleri tıkladıktan sonra aşağıda “Generated Url” altında oluşan adresi kopyalayıp tarayıcıda bu adrese gidin. Adrese gittiğinizde botu hangi sunucunuza eklemek istediğinizle ilgili bir izin ekranı gelecektir. Sunucunuzu seçip devam edebilirsiniz.

Discord botu sunucuya ekleme

Yapay Zeka Destekli Discord Botu Geliştirme (NodeJS)

NodeJS üzerinde discord.js kütüphanesini kullanarak oluşturduğumuz bottan verileri alabilir ve bot üzerinden kanala mesajlar gönderebiliriz. Burada openai kütüphanesini kullanarak da kanaldan gelen mesaj ve soruları GPT-3 yapay zekasına verip gelen cevabı discord botu üzerinden kanala iletebiliriz.

Bunun için geliştirdiğim uygulama GitHub üzerinde paylaşılmıştır, kodları buradan inceleyebilirsiniz: github.com/osman-koc/openai-discord-bot

Projeyi indirerek env içerisine OpenAI ve Discord botunuzun keylerini girdiğinizde oluşturduğunuz bota sorular sorulduğunda bunları yapay zeka ile cevaplayacaktır. Botun aktif olarak çalışabilmesi için uygulamayı ayağa kaldırmanız gerekmektedir. Manuel olarak veya Docker üzerinden ayağa kaldırabilirsiniz. Dilerseniz üzerine eklemeler yaparak kendinize özel komut setleri de oluşturabilirsiniz. Böylece hem özel komutları uygulayan hem de yapay zeka ile cevaplar veren bir bot oluşturmuş olacaksınız.

Uygulamada aşağıdaki kütüphaneler kullanılmıştır.

  • discord.js : Discord botumuzdan veri almak ve komut göndermek için gereken kütüphanedir.
  • dotenv : Token ve api key gibi anahtarlarımızı environment içerisinden çekmemizi sağlayan pakettir.
  • openai : OpenAI API’a bağlanıp istek göndermemizi sağlayan pakettir.

Bota verilen bazı örnek sorular ve cevapları aşağıdaki gibidir. Burada aynı sorular hem Türkçe hem İngilizce sorulduğunda karşılıklarını alabildiğimizi gördük. Farklı dillerde de denediğimde sorduğum dil ile aynı şekilde cevaplar alabildim, o dilde karşılığının olmaması durumunda varsayılan olarak İngilizce bir dönüş sağlamaktadır. Sorular ne kadar detaylı olursa, cevaplar o kadar doğru olacaktır.

Yapay zekalı bot cevap örnekleri
Yapay zekalı bot cevap örnekleri

Buradaki örnekte gördüğünüz üzere cümledeki duyguyu tahmin etme ve sizin verdiğiniz örneklere dayanarak sonrakini tahmin etmedeki gücüyle hayranlık verici bir bot 🙂

Not olarak da belirtmek isterim; her soruda “I’m thinking…” (Düşünüyorum) vermesinin sebebi benim, yapay zeka değil. Komutu aldıktan sonra bazen belli bir süre bekleme durumu olabiliyor. Bu nedenle, verilen komutu aldığından emin olmak için cevap öncesine bu cümleyi ekledim. OpenAI API‘a gitmeden önce düşünüyorum yanıtını veriyor. GitHub üzerinde kodların içinde görebilirsiniz. Çünkü soruyu soran insanlar bot hemen cevap vermeyince gitmedi zannedip tekrar tekrar sorabiliyor. İsterseniz bu kod satırını kapatabilirsiniz.

Umarım faydalı bir içerik olmuştur. Sevgiler…

Kaynaklar:

Bir yorum ekleyin

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.