- 2023'ün başlarında LinkedIn, GenAI özelliklerinden yararlanan bir ürün portföyünü piyasaya sürmeye başladı
- İlk GenAI ürünleri, basit bir "prompt gir, metin çıktısı al" yapısıyla başladı ve bağlamsal belleği destekleyen konuşma tabanlı ajan deneyimlerine dönüştü
- GenAI uygulama teknoloji yığınını kurarak, pazara çıkış süresi ile uzun vadeli kaldıraç arasında denge kuran bir yaklaşım hayata geçirildi
Genesis and Evolution
- Ortak görevler için standart mekanizmalar sunan bir framework oluşturulması gerekiyordu
- LinkedIn'in çevrimiçi serving yığınının büyük kısmı Java ile programlandığı için başlangıçta paylaşımlı bir Java midtier ile başlandı
- Kullanım senaryoları arttıkça bu midtier, geliştirme ve operasyon açısından darboğaz haline geldi ve kullanım senaryosuna özel birden fazla Java midtier servisine bölündü
- AI mühendisleri, çevrimdışı LLM tabanlı iş akışları, prompt engineering ve değerlendirme için Python'u tercih ediyor
- Kısa vadede parçalı çevrimiçi ve çevrimdışı yığın korunurken, uzun vadede çevrimiçi serving için de Python kullanmaya karar verildi
- LangChain açık kaynak projesi temel alınarak çevrimiçi serving için bir Python framework'ü oluşturuldu
- Python'a odaklanarak, temel altyapı bağımlılıkları için Python desteğini etkinleştirme projesi başlatıldı
- Şu anda GenAI uygulama framework'ü, LangChain üzerine kurulmuş ince bir wrapper durumunda
Prompt yönetimi
- Prompt engineering, LLM'leri "programlamanın" temel mekanizmasıdır
- Başlangıçta kod içinde manuel string interpolation kullanıldı, ancak bu hata üretmeye çok açıktı ve ölçeklenemiyordu
- Prompt Source of Truth bileşeni devreye alındı ve Jinja şablon dili kullanımı standartlaştırıldı
- Prompt çözümleme kütüphanesi Java'dan Python'a yeniden yazıldı
- Konuşma tabanlı UI'lar ortaya çıktıkça, konuşmalarda insan ve yapay zeka rollerine daha fazla yapı kazandırıldı
- Sonunda OpenAI Chat Completions API üzerinde birleşildi
Skill'ler ile görev otomasyonu
- Skill soyutlaması, bir görev otomasyon mekanizması olarak GenAI uygulamalarına genişletildi
- Başlangıçta bu yapı, LinkedIn içi ve dışı API'leri LLM dostu JSON şemalarıyla saran özel kodlarla kuruldu
- Skill'lerin yinelenen implementasyonları, downstream skill değişiklikleri ve geliştiricilerin manuel skill belirtmesi gibi sorunlar ortaya çıktı
- Skill Inversion kavramı tanıtılarak downstream tarafın skill'leri tanımlaması ve bunları çağıran uygulamalara sunması sağlandı
- Merkezi skill registry servisi, build eklentisi ve dinamik LangChain araçlarıyla skill erişimi, geliştirme ve operasyon süreçleri basitleştirildi
- Teknoloji yığını, LLM'lerin sorunsuz etkileşim kurabilmesi için kademeli olarak tüm API'ler için skill soyutlamaları üretecek şekilde evriliyor
Bağlam farkındalığı ve kişiselleştirme
- LLM'ler doğası gereği stateless olduğu için bağlam farkındalığı ve kişiselleştirme zordur
- İlk aşamada depolama için Couchbase veya Espresso DB kullanıldı ve her ekip DB kurulumu, yazma/okuma gibi işleri üstlendi
- LLM bağlam penceresi sınırlı olduğundan, anlamsal arama (embedding kullanımı) ve özetleme özellikleri gerekli hale geldi
- LinkedIn mesajlaşma yığını kullanılarak konuşma belleği altyapısı kuruldu
- Kullanıcı-uygulama etkileşim deneyimlerinden türetilen Experiential Memory kavramı tanıtıldı
- Bu yapı, geliştiricilerin sorunsuz kullanabilmesi için GenAI uygulama framework'üne entegre edildi
Model çıkarımı ve ince ayar
- Başlangıçta yalnızca Azure OpenAI Service üzerinden sağlanan LLM'ler kullanıldı
- LinkedIn'e özgü görevler için ince ayar yapılan Llama gibi LLM'ler, ticari modellerle benzer ya da daha iyi kalite gösterdi
- Uygulama geliştirici deneyimini dış ve iç modeller arasında şeffaf hale getirmek için çalışmalar sürüyor
- Çıkarım katmanı, tüm LLM'ler için OpenAI Chat Completions API'yi sunuyor
- Uygulama framework'ündeki yapılandırma kancaları üzerinden şirket içi ve harici modeller arasında kolayca geçiş yapılabiliyor
Migrasyon
- Eski özel çözümlerden standartlaştırılmış çözümlere hızlı migrasyon kritik önem taşıyor
- Migrasyonu, hem Java yığınına hem de yeni yığına derinlemesine hakim mühendislerden oluşan yalın bir ekip yürüttü
- Aşamalı bir yaklaşım benimsenerek bileşenler tek tek migrate edildi
- Basit ve küçük uygulamalarla başlanıp karmaşık ve büyük uygulamalara geçildi
- Kıdemli mühendislerle yeni Python geliştiricileri eşleştirilerek Python'u iş üzerinde öğrenmeleri sağlandı
Son düşünceler
- Yeni GenAI uygulama teknoloji yığını, AI-first geliştirmeyi benimseyerek verimli ve sorumlu biçimde GenAI uygulamaları kurmak için sağlam bir temel oluşturuyor
- Tüm küresel iş gücü üyelerine ekonomik fırsatlar sunma vizyonuna ulaşmada önemli rol oynayacak
- Hâlâ çözülmesi gereken çok sayıda zorluk var
- Ürün deneyiminin en ileri noktası konuşma tabanlı asistanlardan AI ajanlarına kaydıkça, yeni yetenekler ve operasyonel gereksinimler hızla artıyor. Bu konuda da ileride daha fazla bilgi paylaşılacak
Henüz yorum yok.