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 biri de sohbet (chat) uygulaması. Openai sitesinin içinde oyun alanı diye bir bölüm var. Orada tüm uygulamaları deniyip kullanabiliyorsunuz. Veya OpenAi ın saÄŸladığı 3th party kütüphane ile python ve nodejs gibi dillerle de yerel makinanızda bir uygulama haline getirebiliyorsunuz. Direk http istekler ile json objeler kullanarak herhangi bir dilde de bu uygulamaları kullanabilirsiniz. API,sorgu başına ücrete tabi tutuluyor. Fakat kullanımı için ücretsiz deneme süresi mevcut. Ãœcretsiz deneme için site hesabınıza 18 USD lik bir bakiye veriyor. Her 1K token için kullandığınız yapayzeka modeline göre bakiyenizden para düşüyor. ÖrneÄŸin Ada modeline 1K token için 0.0004 USD kesiyor. 1K token yapay zekanın cevap verdiÄŸi kelime sayısıyla iliÅŸkili. ÖrneÄŸin 1K token yaklaşık 750 kelimeye denk gelmekte. Dört tane falan yapay zeka modeli mevcut. Bunlardan en hızlı ve bir o kadar tırt olanı ada. En iyi olanı da Davinci modeli. Fakat ücreti de buna göre deÄŸiÅŸiyor.

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ı oynayarak deneyebilirsiniz.

Veya direk web sayfanıza koymak için aşağıdaki php sınıfını örnek alabilirsiniz;

<?php

$openai = New Openai();

$openai->request("ada", "Whats up?", 5);

class Openai{
    private function secret_key(){
        return $secret_key = 'Bearer ***Your API-Key***';
    }

    public function request($engine, $prompt, $max_tokens){ 

        $request_body = [
        "model" => "text-davinci-003",
        "prompt" => $prompt,
        "max_tokens" => 150,
        "temperature" => 0.7,
        "top_p" => 1,
        "presence_penalty" => 0.6,
        "frequency_penalty"=> 0.0,
        "stop" => [" Human:", " AI:"],
        ];

        $postfields = json_encode($request_body);
        $curl = curl_init();
        curl_setopt_array($curl, [
        CURLOPT_URL => "https://api.openai.com/v1/completions",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $postfields,
        CURLOPT_HTTPHEADER => [
            'Content-Type: application/json',
            'Authorization: ' . $this->secret_key()
        ],
        ]);

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            echo "Error #:" . $err;
        } else {
            echo $response;
        }

    }

    public function search($engine, $documents, $query){ 

        $request_body = [
        "max_tokens" => 10,
        "temperature" => 0.7,
        "top_p" => 1,
        "presence_penalty" => 0.75,
        "frequency_penalty"=> 0.75,
        "documents" => $documents,
        "query" => $query
        ];

        $postfields = json_encode($request_body);
        $curl = curl_init();
        curl_setopt_array($curl, [
        CURLOPT_URL => "https://api.openai.com/v1/engines/" . $engine . "/search",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $postfields,
        CURLOPT_HTTPHEADER => [
            'Content-Type: application/json',
            'Authorization: ' . $this->secret_key()
        ],
        ]);

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            echo "Error #:" . $err;
        } else {
            echo $response;
        }

    }

}

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.

Yaptığım örnek uygulamaya buradan erişebilirsiniz.

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

Yusuf

Yusuf

Bir Mühendis.

Önerilen makaleler

8 Yorum

  1. Avatar

    Merhaba Yusuf bey,

    Verdiginiz kodlari internet sayfada kullanmaya calistim ancak tam olarak nasil yapilacagini anlamadim.

    Acaba, WordPress temasinda nasil kurulacagini gösteren detayli bir yazi var mi?

    Saygilarimla!
    Hasan

    1. Yusuf

      Merhaba,

      Bunun için wordpress kod tabanını bilmek gerekiyor. Bu yüzden bir wordpress tema içinde özel php sayfalar , eklenti ve moduller nasıl oluşturulur bunu araştırıp öğrenmenizi tavsiye ederim ilk olarak. Bunun için spesifik bir kaynak bilmiyorum ama wordpress komitesinin kendi sayfasında bu konuda her türlü döküman ve örnek paylaşılıyor. Ben de oradan öğrendim.

      İyi çalışmalar dilerim 🙂

  2. Avatar

    Merhaba,

    Peki OpenAI’ın API’lerini kullanarak ücretli bir proje geliÅŸtirirsem yasal olarak bir sıkıntı yaÅŸar mıyım ? Biraz araÅŸtırdım ancak OpenAI’ın API kullanım koÅŸulları ile ilgili pek bir ÅŸey bulamadım.

    1. Yusuf

      Merhaba, OpenAi API’si zaten ücretli. Sadece araÅŸtırma projeleri için yanlış hatırlamıyorsam 18 usd lik bir deneme bakiyesi veriliyor. Fakat API’nin ücretini ödedikten sonra kendi lisansladığınız bir yazılımda kullanmanızın bir sakıncası olduÄŸunu sanmıyorum.

      1. Avatar

        Peki, API’nin ücreti ne kadardı? Ve aylık olarak mı ödüyoruz, yoksa yıllık mı? Ben detaylı olarak nereden öğrenebilirim? Yardımcı olursanız çok sevinirim.

        1. Yusuf

          Ãœcretlendirme konusunda bildiÄŸim kadarını üçüncü paragrafta yazdım. Ãœcretlendirme konusundaki daha detaylı bilgiyi bir kullanıcı hesabı oluÅŸturup openai’ın sayfasından öğrenebilirsiniz.

          1. Avatar

            Hocam ben OpenAI’In sitesini inceledim ancak sanırım hem girdi hemde çıktı başına ücret alınıyor ve bu ücretler sizin yazdıklarınıza göre daha pahalı eÄŸer yanlış bakmadıysam
            GPT-3.5 Turbo
            Model Input Output
            4K context $0.0015 / 1K tokens $0.002 / 1K tokens
            16K context $0.003 / 1K tokens $0.004 / 1K tokens

            Ayrıca burada model olarak belirtilen şey tam olarak nedir ?

          2. Yusuf

            Doğrudur. Ücretler zamanla güncelleniyor olabilir. Model, yapay zeka motor modelini belirtiyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Translate »