OpenAi ile GPT-3 Sohbet Uygulaması

Yapay zeka çalışmalarının çok sınırlı olduğu ve dünyanın yazılım büyüsüne yeni yeni kapıldığı, benim de yazılımı yeni öğrenmeye başladığım o günlerde kendimle konuşabilecek bir yazılım yapma hayalim vardı. Sanırım çoğu yazılımcının da hayallerinden biri bu olmuştur. Aslında yakın zamanda beta sürümü çıkarılan GPT-3 modeli, artık kendizle konuşabileceğiniz bir uygulama yapma olanağını tanıyor. Kullanmaya başlayınca gerçekten inanılmaz olduğunu görüyorsunuz. İyi eğittiğinizde normal bir insandan farkını neredeyse anlamıyorsunuz. Aslında böyle bir uygulamayı yaptıktan sonra bilinç mevzusunu derinlemesine tekrar ve tekrar düşündüm. Bu konu hakkında da yazabileceğim tonla şey var şüphesiz. Fakat şimdilik bunları farklı bir makale konusu olarak bırakıp gpt-3 ü kullanarak nasıl bir konuşma uyulaması yapıyoruz hemen ondan bahsedeyim.

İlk olarak, GPT-3 (“Generative Pre-trained Transformer 3”) , makina öğrenmesi algoritmaları kullanılarak geliştirilen bir yapay zeka dil modelidir. Aynı zamanda bir kod tabanı olduğu için buna bir kütüphane de diyebiliriz. Metin oluşturabilen bu yapay zeka, OpenAI tarafından modelin piyasaya sürülmüş 3. versiyonudur. Ve işin güzel tarafı openAI bu kütüphaneyi şimdilik ücretsiz olarak herkese sunuyor. Yani GPT-3 kullanarak bir uygulama yapmak için yapay zeka bilmenize gerek yok. Zaten yazılmış kod tabanını çekip istediğiniz şekilde yapay zekanızı eğiterek bunu kullanabiliyorsunuz.

Bu işlem için önce openai sayfasına girerek bir hesap oluşturuyoruz. Bu hesap ile artık openai API sine erişim sağlayabiliyorsunuz. OpenAi, kullanıcı sayfanızda bir API key oluşturuyor. Bu API key, tabi ki kütüphaneyi kullanmak için kodunuza koymanız gereken bir anahtar. Temelinde GPT-3’ün çekirdek motoru bir sunucuda duruyor. Bu yüzden yapay zekayı kullanmak için opeai sunucularına erişmeniz gerekiyor. Yani kütüphanenin çekirdeği hiç bir zaman makinanızda olmuyor ve açık kaynak değil. Ancak, API key edinen herkesin kullanımına şimdilik açık. Yani olay kaba taslak şu şekilde dönüyor; yerel makinanızdan sunucuya POST ve GET istekleri ile erişip, promt(istek) ve completion(cevap-tamamlama) şeklinde ilerliyorsunuz. Bu şekilde kullanılabilecek GPT-3 25-30 civarında uygulama var. Bu uygulamalara buradan göz atabilirsiniz. Bu uygulamalardan biridi de sohbet (chat) uygulaması. Bu uygulamaları openai sitesinin içinde de deniyip kullanabiliyorsunuz. Veya OpenAi ın sağladığı 3th party kütüphane ile python ve nodejs ile de yerel makinanızda bir uygulama haline getirebiliyorsunuz. Veya direk http istekler ile json objeler kullanarak herhangi bir dilde de bu uygulamaları kullanabilirsiniz.

Bu yazıda kısaca python ile küçük bir uygulama örneği vereceğim. Bir kaç satırdan oluşan kodumuz şu şekilde;

import openai as ai

def chat(question,chat_log = None) -> str:
    if(chat_log == None):
        chat_log = start_chat_log
    prompt = f"{chat_log}Human: {question}\nAI:"
    response = completion.create(prompt = prompt, engine =  "davinci", temperature = 0.85,top_p=1, frequency_penalty=0, 
    presence_penalty=0.7, best_of=2,max_tokens=100,stop = "\nHuman: ")
    return response.choices[0].text

def modify_start_message(chat_log,question,answer) -> str:
    if chat_log == None:
        chat_log = start_chat_log
    chat_log += f"Human: {question}\nAI: {answer}\n"
    return chat_log

if __name__ == "__main__":
    ai.api_key = "Put your API key here"

    completion = ai.Completion()

    start_chat_log = """Human: Hello, I am Human.
    AI: Hello, human I am openai gpt3.
    Human: How are you?
    AI: I am fine, thanks for asking. 
    """

    train = input("\nDo you want to train the openai chatbot (True/False): ")
    if(train == "True"):
        print("\n(To stop the training enter stop in the qestion)\n")
        while(True):
            question = input("Question: ")
            if question == "stop":
                break
            answer = input("Answer: ")
            start_chat_log = modify_start_message(start_chat_log,question,answer)
            print("\n")

    question = ""
    print("\nEnter the questions to openai (to quit type \"stop\")")
    while True:
        question = input("Question: ")
        if question == "stop":
            break
        print("AI: ",chat(question,start_chat_log))

Tabi ki bu kodu çalıştırabilmek için makinenize önce python3 ü daha sonra da python nın openai kütüpanesini kurmanız gerekiyor. Daha sonra openai sayfasına girip oradan edindiğiniz API key’i yukarıdaki kodda 18. satırdaki “ai.api_key” değişkenine kopyalayıp yapıştırın. İnternet erişimiz varsa ve gerekli paketleri de kurduysanız uygulamayı başlatabilirsiniz. Aslında direk örnek uygulamayı openai’ın github sayfasından da indirebiliyorsunuz.Gerekli python paketleri şu şekilde;

autopep8==1.6.0
certifi==2021.10.8
charset-normalizer==2.0.7
click==8.0.3
et-xmlfile==1.1.0
Flask==2.0.2
idna==3.3
itsdangerous==2.0.1
Jinja2==3.0.2
MarkupSafe==2.0.1
numpy==1.21.3
openai==0.19.0
openpyxl==3.0.9
pandas==1.3.4
pandas-stubs==1.2.0.35
pycodestyle==2.8.0
python-dateutil==2.8.2
python-dotenv==0.19.2
pytz==2021.3
requests==2.26.0
six==1.16.0
toml==0.10.2
tqdm==4.62.3
urllib3==1.26.7
Werkzeug==2.0.2

Yapay zeka motorunun ayarlarını yukarıda örnek verdiğim kodda “completion.create” fonksiyonu ile yapıyoruz. Bu ayarların ne manaya geldiğini openai sayfasından öğrenebilirsiniz. Aslında benim yaptığım uygulama için bu ayarlarla çok oynamama gerek kalmadı. fakat siz kendi uygulamanız için bunları deneyebilirsiniz.

Uygulamayı başlattıktan sonra direk ingilizce olarak botla konuşmayı deneyebilirsiniz. Aynı zamanda openAi sayfasında dil seçenekleri de mevcut. Fakat aynı zamanda botunuzu kendiniz de eğitebilirsiniz. Ben bu botu, kişisel bir whatsup sohbeti ile eğitmiştim. Botunuzu ne kadar eğitirseniz, botunuz o kadar insana benzemeye başlıyor ve sizde o kadar gerçek biriyle sohbet ediyormuş hissi oluşturuyor.

O vakit size yapay zekanız ile iyi eğlenceler…

Bilgi Paylaştıkça Çoğalır;
Yusuf

Yusuf

Bir Mühendis.

Önerilen makaleler

Bir cevap yazın

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