1. Metin Üretim Modellerinin Temelleri

OpenAI'nin metin üretim modeli, genellikle Generative Pre-trained Transformer (GPT) olarak adlandırılır ve doğal dilin anlaşılması ve işlenmesi için derin öğrenmede kendine dikkat mekanizmasına dayanmaktadır. GPT modelinin eğitimi iki aşamadan oluşur: ön eğitim ve ince ayar.

Ön Eğitim

Ön eğitim aşamasında, model büyük ölçekli bir metin veri kümesi kullanılarak denetimsiz öğrenme sürecinden geçer. Bu süreçte, model bir sonraki kelimeyi tahmin ederek eğitilir. Örneğin, "Bir kalemim var" cümlesi verildiğinde, ilk birkaç kelimeyi gördükten sonra "kalem" kelimesini tahmin etmeye çalışır. Ön eğitimin temel amacı, modelin dilin yapısını ve anlamını anlamasına olanak sağlamaktır.

İnce Ayar

İnce ayar aşaması, belirli görevlerde denetimli öğrenmeyi içerir. Bu aşamada, model belirli uygulamalara uyum sağlamak üzere ayarlanır, örneğin soru-cevap sistemleri ve belge özeti. İnce ayar, ön eğitimli model üzerine anotasyonlu veri kümeleriyle modelin daha spesifik görevlere uyum sağlamasını sağlayarak modelin daha iyi adapte olmasını içerir.

2. Uygulama Senaryoları

OpenAI'nin metin üretim modeli geniş bir yelpazede uygulamaya konabilir. İşte bazı belirli uygulamalar:

  • Belgelerin Taslağını Oluşturma: Kullanıcıların hızlı bir şekilde belge tasarlamasına ve düzenlemesine yardımcı olma.
  • Bilgisayar Kodu Yazma: Programlamada yardımcı olmak için kod parçacıkları oluşturma.
  • Bir Bilgi Tabanı Hakkında Soruları Yanıtlama: Depolanan bilgiye dayalı olarak yanıtlar sağlama.
  • Metin Analizi: Metin bilgilerini çıkarma, duygu analizi yapma ve daha fazlasını analiz etme.
  • Yazılım için Doğal Dil Arayüzü Sağlama: Kullanıcıların doğal dil kullanarak yazılımla etkileşime girmesine olanak tanıma.
  • Çeşitli Konularda Öğretmenlik: Birden fazla konuda öğretim rehberliği sağlama.
  • Dil Çevirisi: Farklı diller arasında metin çevirisi yapma.
  • Oyun Karakterleri Simülasyonu: Oyunlar için diyaloglar ve arka plan hikayeleri oluşturma veya rol yapma senaryoları sağlama.

3. Diyalog Modelinin Tanıtımı

Diyalog modeli, önceden eğitimle doğal konuşmaları anlayıp üreten özel bir metin üretim modelidir. Bu model, bir kullanıcı ile sanal bir asistan arasında bir konuşma simüle edebilir ve gerçek zamanlı etkileşimli uygulamalar için uygundur.

Diyalog modelinin kullanımı genellikle çoklu dönüşlü etkileşimli konuşmalardan oluşur. Örneğin, bir kullanıcı bir soru sorduğunda, model önceki eğitim verilerine dayanarak uygun yanıtlar üretebilir. Ayrıca, diyalog modeli bağlamsal bilgiyi koruyabilir, daha tutarlı ve doğal yanıtlar üretmek için önceki konuşma içeriğini dikkate alabilir.

Diyalog modeli uygulama senaryoları:

  • Müşteri Hizmetleri Asistanları: Kullanıcıların sıkça sorulan sorularını otomatik olarak yanıtlama, yardım ve tavsiyelerde bulunma.
  • Sohbet Botları: Kullanıcılarla doğal konuşmalar yapma etkileşimleri.
  • Sanal Asistanlar: Kullanıcıların ses komutlarını yerine getirme, örneğin toplantı programlama, hatırlatıcı ayarlama ve daha fazlası.
  • Rol Yapma Oyunları: Oyun karakterlerine benzersiz diyaloglar ve kişilikler vererek oyun deneyimini zenginleştirme.

4. Diyalog Modeli API

Diyalog Modeli API, geliştiricilere HTTP istekleri kullanarak GPT modeli ile etkileşimde bulunma olanağı sağlar. Bu bölüm, istekleri oluşturmak ve model tarafından döndürülen yanıtları ayrıştırmak için curl'ün nasıl kullanılacağını tanıtacaktır.

İstek Oluşturma

Başlamadan önce, OpenAI'den bir API anahtarı alarak kayıt olmanız ve istek gönderirken HTTP başlıkları ile kimlik doğrulaması yapmanız gerekmektedir.

İşte curl'ü kullanarak Diyalog Modeli API'ye bir istek göndermenin bir örneği:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "Yardımsever bir asistansınız."
      },
      {
        "role": "user",
        "content": "2020 Dünya Serisi'ni hangi takım kazandı?"
      }
    ]
  }'

Diyalog Modeli Parametrelerinin Anlamı

OpenAI'nin Diyalog Modeli API'sini kullanırken, "model" ve "messages" gibi temel parametrelerin her birinin belirli anlamları ve sonuçları üzerinde etkisi olduğunu unutmamak gerekir.

Model Parametreleri

Model parametresi, kullanılacak modelin sürümünü belirtmek için kullanılır. Örneğin, "model": "gpt-3.5-turbo" ifadesi, GPT-3.5-Turbo modelini istediğinizi belirtir. Burada seçilen model sürümü, yetenekleri, eğitim verileri ve arayüz özelliklerine göre kullanıcı girişlerine yanıt verecektir.

Şu anda desteklenen modeller şunlardır:

Desteklenen Modeller Maksimum Bağlam Model Açıklaması
gpt-4-0125-preview 128.000 token "Tembel" durumları azaltmak üzere tasarlanmış GPT-4 Turbo ön izleme modeli.
gpt-4-turbo-preview 128.000 token Şu anda gpt-4-0125-preview modeline işaret ediyor.
gpt-4-1106-preview 128.000 token İyileştirilmiş talimat yürütme yeteneklerine, JSON moduna, tekrarlanabilir çıktıya ve paralel işlev çağrılarına sahip GPT-4 Turbo modeli.
gpt-4-vision-preview 128.000 token Tüm diğer GPT-4 Turbo özelliklerine ek olarak resimleri anlama yeteneğine sahip GPT-4 modeli.
gpt-4 8.192 token Şu anda gpt-4-0613'e işaret ediyor.
gpt-4-0613 8.192 token 13 Haziran 2023 tarihli GPT-4 anlık görüntüsü, iyileştirilmiş işlev çağrı desteği sağlıyor.
gpt-4-32k 32.768 token Şu anda gpt-4-32k-0613'e işaret ediyor. Bu model geniş çapta tanıtılmamıştır ve GPT-4 Turbo'nun kullanımını tercih eder.
gpt-4-32k-0613 32.768 token 13 Haziran 2023 tarihli GPT-4 32k sürümü anlık görüntüsü. Bu model geniş çapta tanıtılmamıştır ve GPT-4 Turbo'nun kullanımını tercih eder.
gpt-3.5-turbo-1106 16.385 token İyileştirilmiş talimat yürütme, JSON modu, tekrarlanabilir çıktı ve paralel işlev çağrılarına sahip en son GPT-3.5 Turbo modeli.
gpt-3.5-turbo 4.096 token Şu anda gpt-3.5-turbo-0613'e işaret ediyor.
gpt-3.5-turbo-16k 16.385 token Şu anda gpt-3.5-turbo-16k-0613'e işaret ediyor.
gpt-3.5-turbo-instruct 4.096 token GPT-3 dönemi modelleri ile işlevsel olarak benzer. Geleneksel tamamlama noktaları ile uyumludur, sohbet tamamlaması için uygun değildir.
gpt-3.5-turbo-0613 4.096 token 13 Haziran 2023 tarihli gpt-3.5-turbo anlık görüntüsü. 13 Haziran 2024 tarihinde kullanımdan kaldırılacaktır.
gpt-3.5-turbo-16k-0613 16.385 token 13 Haziran 2023 tarihli gpt-3.5-16k-turbo anlık görüntüsü. 13 Haziran 2024 tarihinde kullanımdan kaldırılacaktır.
gpt-3.5-turbo-0301 4.096 token 1 Mart 2023 tarihli gpt-3.5-turbo anlık görüntüsü. 13 Haziran 2024 tarihinde kullanımdan kaldırılacaktır.

Mesajlar Parametresi

Mesajlar parametresi, her bir öğenin sohbet içindeki bir iletiyi temsil ettiği bir dizi şeklinde bir array'dir. Her ileti, gönderenin rolünü belirten ve ileti içeriğini içeren iki özelliği olan bir nesne içerir.

  • role: İletinin göndereninin rolünü belirtir. İsteğe bağlı değerler arasında "sistem", "kullanıcı" ve "asistan" bulunur.
  • content: İletinin belirli içeriği.

Rolün Türleri ve İşlevleri

Rol parametresinin değeri, iletişimin türünü ve işlevini belirler. Diyaloji API'sı, farklı roller temelinde modelin yanıtını değiştirecektir.

'sistem' Rolü

Sistem mesajları genellikle modelin davranışını global olarak belirtmek için kullanılır. Örneğin, modelin oynadığı rolü (örneğin, asistan, çevirmen, vb.) açıkça belirleyebilir veya konuşmada takip edilmesi gereken belirli talimatlar sağlayabilir. Sistem mesajları genellikle konuşma boyunca modelin davranışı üzerinde uzun vadeli etkiye sahiptir, ancak genellikle isteğe bağlıdır.

Örneğin, modelin müşteri hizmetleri asistanı olarak konuşmaya katılmasını istiyorsanız, sistem mesajında belirtebilirsiniz:

{
  "role": "sistem",
  "content": "Sen bir müşteri hizmetleri asistanısın."
}

'kullanıcı' Rolü

Kullanıcı mesajları, kullanıcı tarafından girilen soruları temsil eder. Model bu mesajlara yanıt verir ve bilgi, cevap veya diğer çıktı biçimlerini sağlar. Bu mesajlar, Diyaloğ API iş akışının önemli bir parçasıdır ve genellikle uygulamadaki gerçek kullanıcı sorularına karşılık gelir.

Örneğin, yukarıdaki curl örneğindeki kullanıcı isteğinde:

{
  "role": "kullanıcı",
  "content": "Hangi takım 2020 Dünya Serisi'ni kazandı?"
}

'asistan' Rolü

Asistan mesajları genellikle model tarafından oluşturulan cevapları ifade eder ve aynı zamanda geliştirici tarafından sağlanan konuşma geçmişi mesajları da olabilir. Bu mesajlar, modelin çıktı örnekleri sağlamak için konuşma geçmişindeki modelin sorulara nasıl cevap verdiği formatını taklit etmek için kullanılır, API isteklerinde genellikle asistan rolü mesajları sağlanmaz, ancak gerektiğinde modelin çıktı örnekleri sağlamak için konuşma geçmişinde modelin nasıl sorulara cevap verdiği formatını önceden belirtmek gerekebilir.

Yanıtın Ayrıştırılması

Modelin yanıtı JSON formatında döner. İşte yanıtın ayrıştırılmasının bir örneği:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "2020 Dünya Serisi şampiyonu Los Angeles Dodgers takımıdır.",
        "role": "asistan"
      },
      "logprobs": null
    }
  ],
  "created": 1677664795,
  "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
  "model": "gpt-3.5-turbo-0613",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 17,
    "prompt_tokens": 57,
    "total_tokens": 74
  }
}

Yukarıdaki yanıttan, modelin cevabını choices[0].message.content ile elde edebilirsiniz.

Diyalog Modelinde Hafıza Fonksiyonunu Nasıl Uygularız

Aşağıda, OpenAI'nın Sohbet Tamamlama API'sini kullanarak GPT modelinin hafıza fonksiyonunu uygulamanın bir örneği bulunmaktadır. Bu örnek, sürekli diyalog elde etmek için (yani, belleğin içeriğini kaydederek) tarihi konuşma bağlamını yeni bir API isteğinde saklamayı göstermektedir.

import requests

api_url = "https://api.openai.com/v1/chat/completions"
api_key = "OpenAI API Anahtarınız"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

veri = {
    "model": "gpt-3.5-turbo",  # gpt-4 veya diğer kullanılabilir modellerle değiştirilebilir
    "messages": [
      {
        "role": "system",  # Sistem mesajı, diyalog modelinin davranışını belirlemek için kullanılır
        "content": "Sen bir yardım asistanısın."
      },
      {
        "role": "user",  # Kullanıcı mesajı, model buna yanıt verecektir
        "content": "Bana iklim değişikliğinin ana nedenlerini söyleyebilir misin?"
      },
      {
        "role": "assistant",  # Modelin cevabı
        "content": "İklim değişikliğinin ana nedenleri arasında sera gazı emisyonları, fosil yakıt yanması ve orman tahribatı bulunmaktadır, vb."
      },
      {
        "role": "user",  # Modelin cevabına dayalı yeni bir soru
        "content": "Sera gazı emisyonlarını nasıl azaltabiliriz?"
      }
    ]
}

cevap = requests.post(api_url, headers=headers, json=veri)

if cevap.status_code == 200:
    cevap_icerik = cevap.json()['choices'][0]['message']['content']
    print(f"Modelin cevabı => {cevap_icerik}")
else:
    print(f"Istek hatası: {cevap.status_code}")

Bu örnekte, kullanıcıya önce iklim değişikliğinin ana nedenleri hakkında soru sorduruyoruz ve ardından modelin açıklamasına dayalı başka bir soru soruyoruz. Sonraki isteklerde, önceki konuşmanın içeriğini saklayarak modelin önceki konuşmanın geçmişini hatırlayabilmesini ve buna göre bir yanıt üretebilmesini sağlıyoruz. Bu yöntem, yeni isteğin tarihi mesajları, önceki konuşma turunun giriş ve çıkışı olarak kullanarak, diyalog durumunun iletilmesini ve hafızasını başarır.

İpucu: Diyalogun hafıza fonksiyonunu uygulamak için, modelin maksimum belirteç sınırına sahip olması nedeniyle, her istem için tüm tarihi konuşma mesajlarını girmek mümkün değildir. Genellikle, mevcut sorularla ilgili ilgili mesajlar, model için tarihi mesajlar olarak giriş yapılarak, altta kalan bölümler metin benzerliği araması sağlayan Gömmeler özelliğinin nasıl gerçekleştirildiği şeklinde tanıtılacaktır.

5. JSON Şeması

JSON Şeması, diyalog modeli API'nin bir özelliğidir ve kullanıcıların her zaman JSON formatında yanıt almayı gerektiren senaryolar için modeli talimatlandırmalarına olanak tanır.

JSON Şeması Kullanımı

JSON Şeması'nı kullanmak için, HTTP isteği gövdesinde response_format alanını { "type": "json_object" } olarak ayarlamalı ve sistem mesajının model çıktısının JSON formatında olduğunu belirttiğinden emin olmalısınız. Aşağıda JSON Şemasını etkinleştirmek için bir curl isteği örneği bulunmaktadır:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo-1106",
    "response_format": { "type": "json_object" },
    "messages": [
      {
        "role": "system",
        "content": "JSON formatında çıktı üretmek için tasarlanmış yardımcı bir asistansın."
      },
      {
        "role": "user",
        "content": "2020 Dünya Serisi'ni hangi takım kazandı?"
      }
    ]
  }'

JSON Şema Yanıtının Ayrıştırılması

JSON Şema modunda, yanıt tam ve mükemmel bir şekilde ayrıştırılmış bir JSON nesnesi içerecektir. Bu mod, modelin çıktısının doğrudan ayrıştırılabilir ve kullanılabilir bir geçerli JSON nesnesi olduğunu garanti eder. Aşağıda, JSON Şema kullanılarak döndürülebilecek bir yanıtın bir örneği bulunmaktadır:

{
  "choices": [
    {
      "finish_reason": "stop",
      "message": {
        "content": "{\"winner\": \"Los Angeles Dodgers\"}"
      }
    }
  ]
}

Python'da, yanıttan içeriği çıkarmak için aşağıdaki kodu kullanabilirsiniz:

import json

response = {
  "choices": [
    {
      "finish_reason": "stop",
      "message": {
        "content": "{\"winner\": \"Los Angeles Dodgers\"}"
      }
    }
  ]
}

response_content = json.loads(response['choices'][0]['message']['content'])

print(response_content)

Çıktı şu şekilde olacaktır:

{'winner': 'Los Angeles Dodgers'}

JSON Şema, belirli kullanım durumları için yanıtın doğru biçimlendirilmesini sağlayan güvenilir bir yöntem sunar. Bu nedenle, API yanıt formatı için belirli gereksinimler olduğu senaryolarda JSON Şema'nın etkinleştirilmesi önerilir.