05. LCEL Interface
Untuk memudahkan pembuatan custom chain, protokol Runnable
telah diimplementasikan.
Protokol Runnable diimplementasikan pada sebagian besar komponen.
Ini adalah antarmuka standar yang memudahkan pembuatan custom chain dan memanggilnya dengan cara standar. Antarmuka standar ini mencakup hal-hal berikut:
stream
: Melakukan streaming chunk dari respons.invoke
: Memanggil chain untuk input tertentu.batch
: Memanggil chain untuk daftar input.
Terdapat juga metode asinkron:
astream
: Melakukan streaming chunk dari respons secara asinkron.ainvoke
: Memanggil chain untuk input secara asinkron.abatch
: Memanggil chain untuk daftar input secara asinkron.astream_log
: Melakukan streaming tidak hanya respons akhir tetapi juga langkah-langkah perantara yang terjadi.
Membuat chain menggunakan sintaks LCEL.
Stream: Keluaran secara real-time
Fungsi ini menggunakan metode chain.stream untuk membuat aliran data tentang topik yang diberikan, dan mengulangi aliran ini untuk mencetak konten setiap data secara langsung. Parameter end="" diatur agar tidak melakukan pemisah baris setelah pencetakan, sedangkan parameter flush=True mengatur agar buffer output langsung dikosongkan.
Invoke
Metode invoke dari objek chain menerima topic sebagai argumen dan melakukan pemrosesan terkait topic tersebut.
Batch (eksekusi unit)
Fungsi chain.batch menerima daftar yang berisi beberapa dictionary sebagai argumen, dan melakukan pemrosesan batch dengan menggunakan nilai kunci topic yang ada di setiap dictionary.
Anda dapat mengatur jumlah permintaan bersamaan menggunakan parameter max_concurrency
.
Dictionary config
mengatur jumlah maksimum pekerjaan yang dapat diproses secara bersamaan melalui kunci max_concurrency
. Di sini, diatur untuk memproses hingga 3 pekerjaan secara bersamaan.
async stream: Aliran asinkron
Fungsi chain.astream
menghasilkan aliran asinkron dan memproses pesan tentang topik yang diberikan secara asinkron.
Menggunakan loop async for
untuk menerima pesan secara berurutan dari aliran, dan mencetak konten pesan (s.content
) secara langsung menggunakan fungsi print
. Parameter end=""
diatur agar tidak menambahkan pemisah baris setelah pencetakan, dan flush=True
mengosongkan buffer output secara paksa untuk memastikan output langsung
YouTube adalah platform berbagi video yang memungkinkan pengguna untuk mengunggah, menonton, dan berinteraksi dengan berbagai jenis konten video. YouTube memiliki jutaan video yang mencakup berbagai topik mulai dari hiburan, pendidikan, musik, hingga tutorial. Para pengguna dapat berlangganan saluran favorit mereka, memberi komentar, dan berbagi video dengan mudah melalui platform ini.
async invoke: Pemanggilan asinkron
Metode ainvoke dari objek chain melakukan pekerjaan secara asinkron menggunakan argumen yang diberikan. Dalam hal ini, dictionary dengan kunci topic dan nilai NVDA (ticker NVIDIA) diberikan sebagai argumen. Metode ini dapat digunakan untuk meminta pemrosesan secara asinkron untuk topik tertentu.
async batch: Kumpulkan asinkron
Fungsi abatch
melakukan pemrosesan batch secara asinkron.
Dalam contoh ini, metode abatch
dari objek chain
digunakan untuk memproses pekerjaan tentang topik secara asinkron.
Kata kunci await
digunakan untuk menunggu hingga pekerjaan asinkron tersebut selesai.
Paralell
Mari kita lihat bagaimana LangChain Expression Language mendukung permintaan paralel. Misalnya, saat menggunakan RunnableParallel
(sering kali ditulis dalam bentuk dictionary form), setiap elemen dijalankan secara paralel.
Berikut adalah contoh menggunakan kelas RunnableParallel
dari modul langchain_core.runnables
untuk menjalankan dua tugas secara paralel.
Kita membuat dua chain (chain1
, chain2
) untuk mendapatkan ibu kota dan luas dari negara yang diberikan menggunakan metode ChatPromptTemplate.from_template
.
Chain-chain ini dihubungkan dengan model dan operator pipa (|
). Akhirnya, kita menggunakan kelas RunnableParallel
untuk menggabungkan kedua chain ini dengan kunci capital
dan area
, menghasilkan objek combined
yang dapat dijalankan secara bersamaan.
Metode chain1.invoke()
memanggil metode invoke dari objek chain1
.
Pada saat itu, dictionary dengan kunci country
dan nilai Korea Selatan
diberikan sebagai argumen.
Kali ini, panggil chain2.invoke()
, dengan menyampaikan negara lain, yaitu Amerika Serikat
, sebagai nilai untuk kunci country
.
Metode invoke dari objek combined
melakukan pemrosesan untuk negara yang diberikan.
Dalam contoh ini, topik Korea Selatan
disampaikan ke metode invoke
untuk dijalankan.
Pemrosesan Paralel dalam Batch
Fungsi chain2.batch
menerima daftar yang berisi beberapa dictionary dan melakukan pemrosesan batch.
Dalam contoh ini, pemrosesan diminta untuk dua negara: Korea Selatan dan Amerika Serikat.
Fungsi combined.batch
digunakan untuk memproses data dalam batch. Dalam contoh ini, fungsi ini menerima daftar yang berisi dua objek dictionary dan memproses data untuk kedua negara, yaitu Korea Selatan dan Amerika Serikat, dalam satu batch.
Last updated