Büyük Dil Modellerini Uygulama

May 02 2023
giriiş
OpenAI ChatGPT dünyayı kasıp kavurdu. Kullanıcılar tarafından duyulmamış benimseme oranı, geliştiriciler topluluğu tarafından API'si ile benzeri görülmemiş deneylerle eşleştirildi.

OpenAI ChatGPT dünyayı kasıp kavurdu. Kullanıcılar tarafından duyulmamış benimseme oranı, geliştiriciler topluluğu tarafından API'si ile benzeri görülmemiş deneylerle eşleştirildi. Bloglarda bir veya iki değil, birden fazla PoC yayınlandığında veya tweet atıldığında tek bir gün geçmiyor. Bunlar daha sonra teknoloji çılgınlığını körükleyen başka bir geliştirici grubu tarafından geliştirilir.

Yeni Büyük Dil Modellerinin (LLM'ler) geliştirilmesi de çok hızlandı. Daha yeni modeller firmalar tarafından duyuruluyor veya açık kaynaklı yapılıyor. Özel modellerin eğitiminden ince ayara, veri külliyatına vb. kadar problem bildiriminin çeşitli yönlerini çözmek için birçok açık kaynak projesi mevcut veya başlatılmıştır.

Aynı zamanda geliştirici topluluğu, LLM ile çalışmayı kolaylaştıracak çerçeveler yayınlamak için hızla çalışıyor. LangChain ve Llama Index gibi çerçeveler, birçok genel ve özel durumu çözen standart kod ve çerçeveler sağlar. Ayrıca, kendi karmaşık kullanım durumlarını oluşturmak için de kullanılabilirler.

Böylece, tüm manzaranın son derece hızlı bir şekilde geliştiğini görüyoruz. Aslında, LangChain gibi çerçeveler birkaç günde bir küçük sürümler verir.

OpenAI Uygulaması

OpenAI LLM'nin muazzam eğitim verileri, onlara son derece büyük bir bilgi birikimine erişim sağlar. Bu, doğası gereği onları içerik tabanlı kullanım durumlarında çalışmak için ideal hale getirir.

Halihazırda uygulanmış oldukları bazı kullanım durumları şunlardır:

  • özetleme
  • içerik zenginleştirme
  • Başlık oluşturma
  • yeniden ifade etme
  • Kısa form, tweet'ler, sunum noktaları vb. gibi çoklu formatlar oluşturma.

Yukarıdaki durumlarda, LLM'nin dil yetenekleri, içerikle ilgili çalışmaları çözmek veya bunlara yardımcı olmak için kullanıldı.

LLM'nin içsel bilgisinin kullanıldığı diğer kullanım durumları şunlardır:

  • Sınav içeriği oluşturma
  • Anketler veya Anket Anketi.

Bir girdi bağlamını iletmek ve bununla ilgili soruları yanıtlamak, LLM'lerin oldukça usta olduğu bir görevdir. Bu özellik, Uzun Biçimli Makalelerde veya PDF belgelerinde sorguların yanıtlanması gibi birçok içerik için kullanılıyor.

Genel çözüm, aşağıdaki genel biçimde bir bilgi istemi oluşturmayı içerir:

Bağlam:

Arunaçal Pradeş'teki Ziro Vadisi, Apatani kabilesine ev sahipliği yapar ve mükemmel vadi manzaralarıyla bilinir. Ziro, başkent Itanagar'a yaklaşık 167 km uzaklıktadır ve buraya yolculuk, Arunaçal Pradeş'te deneyimleyeceğiniz en doğal sürüşlerden biridir. Vadi, yılın herhangi bir zamanında muhteşem görünen yemyeşil ormanlar ve teras çiftlikleri ile çevrilidir. Ziro'da yolun kenarından akan yumuşak derelere bakınca bir huzur duygusuna kapılıyorsunuz. Vadinin Arunaçal Pradeş'te en çok ziyaret edilen yerlerden biri olmasına şaşmamalı.

Ziro Vadisi'nin bu pastoral ortamı, yıllık Ziro Müzik Festivali'nin burada, yemyeşil çayırlarda düzenlenmesinin ana nedenlerinden biridir. Festival mekanı Hindistan'ın en güzel mekanlarından biridir. Hindistan'ın ve dünyanın her yerinden müzikseverler, festival ve harika atmosfer için buraya geliyor.

İstemi Talimatları: Aşağıdaki soruyu yukarıda verilen bağlamdan 100 kelimeyle cevaplayın

Soru: Ziro başkentten ne kadar uzakta?

Cevap:

LLM, sorgunun yanıtını sağlanan bağlamdan sağlar. İstenen sonucu elde etmek için komut istemi kurulumuyla uğraşmak gerekir.

Bu genel yaklaşım, bir içerik külliyatına dayalı olarak kullanıcı sorgularını yanıtlamak için dünyayı açar. Örneğin, bütçeyle ilgili haber ve makalelerden oluşan bir külliyat, okuyucuların sahip olabileceği soruları yanıtlamak için kullanılabilir. Bu, bir arama dizesi sağlayan geleneksel kullanıcı modelini kısa devre yapar ve ardından kullanıcının istediği yanıtı almak için okuması gereken bir dizi makale bağlantısı görüntülenir. Bu, çok daha iyi bir kullanıcı deneyimi sağlar ve onlara çok zaman kazandırır.

Yaklaşım, sorguyu yanıtlayabilmesi için LLM'ye doğru bağlamı sağlama etrafında döner. Bu nedenle, LLM uygulamasının gönderilebilecek girdi miktarı üzerinde sınırlamaları olduğundan, şimdi sorun, korpustan sorguyla ilgili doğru parçacık setinin nasıl belirleneceğidir.

Bu öncelikle bir arama sorunudur. İçerik parçacıklara bölünebilir ve dizine eklenebilir. Bunu yapmak için Pinecone veya Milvus gibi bir vektör veri tabanı kullanılabilir. İçerik vektörleştirilir ve veritabanında saklanır. Kullanıcı bir soru sorduğunda, ilgili parçacıkları almak için sorguyu vektörleştirmeniz ve benzerlik araması yapmanız yeterlidir.

Daha akıllı serbest metin araması

Serbest metin araması, geleneksel filtre tabanlı aramaya kıyasla UX açısından daha kolaydır. Ancak, kullanıcı tarafından sağlanan metinsel girdiden arama filtrelerini tanımlamak için karmaşık ayrıştırma mantığı geliştirmeyi içerir. Bu nedenle, hatalara veya küçük bir dizi sabit metinsel giriş biçimine eğilimlidir.

Arama metnini ayrıştırmak ve arama parametrelerini belirlemek için burada LLM'nin dil yeteneğinden yararlanılabilir.

Genel çözüm, aşağıdaki genel biçimde bir bilgi istemi oluşturmayı içerir:

Bilgi İstemi Talimatları: Sağlanan giriş sorgusunu aşağıdaki JSON formatına ayrıştırın”

JSON Biçimi:

{“yer”: “Birinin ziyaret ettiği yer. Zorunlu” , “checkInDate”: ”Rezervasyon için check-in tarihi. Zorunlu. Biçim gg/aa/yyyy”, “checkOutDate” : “ Rezervasyon için çıkış tarihi. Zorunlu. Varsayılan CheckIn artı 2 gün. Biçim gg/aa/yyyy”, “minimumRating”: “Otel için gereken minimum puan. Opsiyonel”, “maximumPricePerNight”: “Bir kişinin ödemeye hazır olduğu gecelik maksimum fiyat. İsteğe bağlı" }

Örnekler:

Soru: Shimla'da 23 Temmuz'dan 28 Temmuz'a kadar 4 ve üzeri puanlı oda arıyorum.

Yanıt: {“yer”: “Shimla” , “checkInDate”: ”23/07/2023”, “checkOutDate” : “28/07/2023”, “minimumRating”: “4”}

Soru: 15 Ağustos'tan itibaren Darjeeling'de 3 günlüğüne oda arıyorum.

Yanıt: {"yer": "Darjeeling" , "checkInDate": "15/08/2023", "checkOutDate" : "17/08/2023"}

Soru: 3 Eylül'den itibaren 5 günlüğüne Pondicherry'ye tatile gitmek.

Cevap:

Bu durumda, LLM'nin Zero Shot Learning adlı bir yeteneğini kullandık. Talimatların yanı sıra, bir dizi soru için beklenen çıktıyı göstermek için birkaç örnek örnek de verdik. LLM, küçük örnek kümelerinden öğrenerek davranışlarına ince ayar yapma konusunda büyük yetenekler göstermiştir.

LLM, kullanıcı sorgusunu ayrıştırır ve sabit bir biçimde bir JSON sağlar. Aynısı, gerçek arama işlevselliğini güçlendirmek için basitçe kullanılabilir.

Bu durumda, LLM esasen bir akıllı metin ayrıştırıcıdır.

Destek Botu

Bu kullanım durumunu keşfetmek için bir seyahat rezervasyonu uygulaması örneğini ele alalım.

Bir kullanıcı, bir uygulamanın nasıl kullanılacağı veya genel faydalar vb. ile ilgili soruların yanıtlarını almak için bir destek botuyla etkileşime girer. Veya uygulamada yaptıkları işlemlerle ilgili yanıtlar almak ister.

Uygulamaların genel kullanımına ilişkin bir külliyat, uygulamayla ilişkili içerikler, aynı konudaki sorguları yanıtlamak için oluşturulabilir.

Benzer şekilde, akıllı bir LLM tabanlı sorgu çözümleyici, kullanıcı sorgularını ayırmalarına göre ayrıştırmak ve ardından ayırma kayıtlarını getirmek için kullanılabilir. Bir uygulamanın birden çok kullanıcı işlemi türü olabileceğinden, LLM ayrıştırıcısı, belirli işlem için paramların yanı sıra işlem türünü sağlamak üzere ayarlanabilir.

Her iki işlevi de tek bir ön uç botunda birleştirmek, sorgunun bir işlemin nasıl yapılacağı veya son işlemin durumu ile ilgili olup olmadığı, kullanıcının amacının ne olduğunu belirlememiz gereken bir adımı da içerecektir. Burada LLM, kullanıcının amacını doğru bir şekilde belirlemek için kullanılabilir.

Böylece, genel çözüm şunları içerir:

  • Amacı Belirleme: Corpus Sorgusu veya Ayırma Sorgusu
  • Corpus Sorgusu İşleniyor
  • külliyat aranıyor
  • İlgili snippet'leri belirleme
  • İlgili snippet'leri ve kullanıcı sorgusunu ileten LLM'yi çağırma.
  • Rezervasyon Sorgusu İşleniyor
  • Türü ve parametreleri tanımlamak için LLM'yi çağırma
  • LLM yanıtı JSON'u ayrıştırın.
  • Uygun işlevleri çağırmak.
  • Şekil 1: Seyahat Uygulaması için Destek Botu.

LLM, üzerinde çalışılması gereken bazı zorluklarla birlikte gelir.

Geleneksel olarak, geliştiriciler deterministik bir dünyada çalışmaya alışkındır. İşlev çağrısından gelen yanıtlar, başarısız olduklarında ve hatalara yol açtıklarında bile doğası gereği belirleyicidir.

Ancak, LLM olasılıksal bir şekilde çalışır. Yanıtları her zaman tahmin ettiğimiz gibi olmayabilir. Bu, geliştiricilerin bunları kullanarak uygulamaları geliştirirken her zaman bunun farkında olmaları ve beklenmeyen durumlarla başa çıkmak için uygun esnekliği oluşturmaları gerektiği anlamına gelir.

OpenAI API'sinin yanıt süreleri doğası gereği çok hassastır. 2–12 saniye arasında değişirler. Çoğu, dahil edilen içeriğin miktarına bağlıdır. Örneğin, büyük bir bağlam göndermek ve bir sorguya ayrıntılı bir yanıt beklemek, LLM için çok fazla hesaplama gerektirecektir, bu nedenle yanıt süreleri daha yüksek olacaktır. Bazıları, akış API'lerine geçerek algı açısından ele alınabilir, ancak bu, nihai yanıtın geleneksel API yanıt süresi SLA'larına kıyasla nispeten yüksek bir süre sonra tamamlandığı anlamına gelir.

İstemler, LLM'lere yapmasını istediğimiz şey hakkında talimat vermenin birincil yoludur. Bu nedenle istemleri doğru yapmak çok önemlidir. Bununla birlikte, bununla ilişkili bir öğrenme eğrisi vardır. Ayrıca, LLM'nin bir sürümüyle çalışan istemler diğerinden biraz farklı çalışır ve aynısını yapmak için ince ayarlar gerekir.

Bir teknoloji olarak LLM, sorunları çözmek için yeni yollar icat etme olasılıklarını açtı. Hala gerçek potansiyelini anlamanın zirvesindeyiz. Her gün interneti dolduran yeni fikirler, ileride heyecan verici zamanların olduğu gerçeğinin bir kanıtıdır.