- Pada awal 2023, LinkedIn mulai meluncurkan portofolio produk yang memanfaatkan fitur GenAI
- Produk GenAI awal dimulai dari pola sederhana "input prompt, output string" lalu berkembang menjadi pengalaman agen percakapan yang mendukung memori konteks
- Dengan membangun tech stack aplikasi GenAI, LinkedIn menerapkan pendekatan yang menjaga keseimbangan antara time-to-market dan leverage jangka panjang
Genesis and Evolution
- Dibutuhkan pembangunan framework yang menyediakan mekanisme standar untuk tugas-tugas umum
- Karena sebagian besar stack serving online LinkedIn diprogram dengan Java, pada tahap awal mereka memulai dengan shared Java midtier
- Seiring bertambahnya use case, midtier ini menjadi bottleneck pengembangan dan operasional sehingga dipecah menjadi beberapa layanan Java midtier per use case
- Engineer AI lebih memilih Python untuk workflow offline berbasis LLM, prompt engineering, dan evaluasi
- Dalam jangka pendek, mereka mempertahankan stack online dan offline yang terfragmentasi, tetapi dalam jangka panjang memutuskan untuk memakai Python juga untuk serving online
- Membangun framework Python untuk serving online berbasis proyek open source LangChain
- Memulai proyek untuk mengaktifkan dukungan Python terhadap dependensi infrastruktur inti dengan fokus pada Python
- Saat ini, framework aplikasi GenAI mereka adalah wrapper tipis yang dibangun di atas LangChain
Manajemen prompt
- Prompt engineering adalah mekanisme utama untuk "memprogram" LLM
- Pada awalnya mereka menggunakan interpolasi string manual di dalam kode, tetapi ini rawan error dan tidak bisa diskalakan
- Memperkenalkan komponen Prompt Source of Truth dan menstandarkan penggunaan bahasa template Jinja
- Menulis ulang library resolusi prompt dari Java ke Python
- Dengan munculnya UI percakapan, dibutuhkan struktur yang lebih jelas untuk peran manusia dan AI dalam percakapan
- Pada akhirnya mereka berkonsolidasi pada OpenAI Chat Completions API
Otomatisasi tugas melalui skill
- Memperluas abstraksi skill ke aplikasi GenAI dan menggunakannya sebagai mekanisme otomatisasi tugas
- Pada awalnya ini dibangun dengan kode kustom yang membungkus API internal dan eksternal LinkedIn menggunakan skema JSON yang ramah LLM
- Muncul berbagai masalah seperti implementasi skill yang duplikatif, perubahan skill downstream, dan penentuan skill secara manual oleh developer
- Memperkenalkan konsep Skill Inversion agar pihak downstream mendefinisikan skill dan mengeksposnya ke aplikasi pemanggil
- Menyederhanakan akses skill, pengembangan, dan proses operasional melalui layanan registry skill terpusat, build plugin, serta tool LangChain dinamis
- Mereka sedang secara bertahap mengembangkan tech stack agar menghasilkan abstraksi skill untuk semua API sehingga LLM dapat berinteraksi dengan mulus
Kesadaran konteks dan personalisasi
- Karena LLM pada dasarnya bersifat stateless, kesadaran konteks dan personalisasi menjadi sulit
- Pada awalnya mereka menggunakan Couchbase atau Espresso DB sebagai storage, dan masing-masing tim menangani pengaturan DB, proses tulis/baca, dan lainnya
- Karena context window LLM terbatas, dibutuhkan semantic search (menggunakan embedding) dan kemampuan ringkasan
- Membangun infrastruktur memori percakapan dengan memanfaatkan stack messaging LinkedIn
- Memperkenalkan konsep Experiential Memory yang diturunkan dari pengalaman interaksi pengguna-aplikasi
- Mengintegrasikannya ke framework aplikasi GenAI agar developer dapat menggunakannya dengan mulus
Inferensi model dan fine-tuning
- Pada awalnya mereka hanya menggunakan LLM yang disediakan oleh layanan Azure OpenAI
- LLM seperti Llama yang di-fine-tune untuk tugas spesifik LinkedIn menunjukkan kualitas yang setara atau lebih baik dibanding model komersial
- Mereka sedang berupaya membuat pengalaman developer aplikasi tetap transparan di antara model eksternal dan internal
- Lapisan inferensi mengekspos OpenAI Chat Completions API untuk semua LLM
- Melalui configuration hook pada framework aplikasi, perpindahan antara model on-premise dan model eksternal dapat dilakukan dengan mudah
Migrasi
- Penting untuk melakukan migrasi dengan cepat dari solusi kustom legacy ke solusi yang terstandarisasi
- Tim ramping yang terdiri dari engineer dengan pengetahuan mendalam tentang stack Java dan stack baru menangani migrasi
- Menggunakan pendekatan bertahap dengan memigrasikan komponen satu per satu
- Memulai dari aplikasi yang sederhana dan kecil, lalu berlanjut ke aplikasi yang kompleks dan besar
- Memasangkan engineer senior dengan developer Python baru agar mereka bisa belajar Python langsung dalam pekerjaan
Pemikiran akhir
- Tech stack aplikasi GenAI yang baru menerima pendekatan pengembangan AI-first dan menyediakan fondasi kuat untuk membangun aplikasi GenAI secara efisien dan bertanggung jawab
- Ini akan memainkan peran penting dalam mewujudkan visi untuk memberikan peluang ekonomi kepada setiap anggota angkatan kerja global
- Masih banyak tantangan yang perlu diselesaikan
- Seiring ujung terdepan pengalaman produk bergeser dari asisten percakapan ke agen AI, kebutuhan fitur dan operasional baru meningkat tajam. Detail lebih lanjut tentang hal ini juga akan dipublikasikan kemudian
Belum ada komentar.