Baru-baru ini saya menerima email dari seorang cendekiawan berbakat yang menanyakan bagaimana Botpress terhubung dengan LLM.
Ia sedang menulis makalah tentang cara menghindari ketergantungan pada vendor, dan ingin tahu apakah kami menggunakan framework seperti LangChain atau Haystack.
Saya dengan senang hati memberitahunya bahwa kami membuat abstraksi sendiri yang memungkinkan pembuat Botpress terhubung dengan LLM.
Karena banyak yang tertarik dengan topik ini, saya ingin membagikan informasinya secara terbuka. Semoga ini juga bermanfaat bagi pengembang lain atau pengguna platform kami. Saya harap Anda menemukan ini menarik seperti saya saat membuatnya.
Dua cara Botpress berinteraksi dengan LLMs
Botpress membuat abstraksi sendiri yang bekerja dengan dua cara:
1. Integrasi
Integrasi memiliki konsep aksi dengan tipe input dan output yang spesifik.
Kami menyediakan komponen open source di platform, sehingga komunitas dapat membuat integrasi sendiri yang bisa bersifat privat atau tersedia untuk umum.
Jadi penyedia LLM – seperti OpenAI, Anthropic, Groq, dan lainnya – masing-masing memiliki integrasi. Inilah salah satu cara pengguna kami dapat berinteraksi dengan mereka.
2. Antarmuka integrasi LLM
Di atas konsep integrasi, kami menambahkan "antarmuka".
Ini hanyalah definisi skema standar yang dapat diperluas oleh integrasi. Kami telah membuat skema standar untuk LLM.
Selama sebuah integrasi memperluas skema ini, integrasi tersebut dianggap sebagai penyedia LLM. Jadi, integrasi ini langsung dapat digunakan di Botpress.
Berikut beberapa contoh integrasi Botpress untuk berbagai penyedia LLM:
Kami juga memiliki antarmuka serupa untuk text2image, image2text, voice2text, text2voice, dan lainnya.
Konfigurasi model
Di dalam Botpress Studio, kami menyediakan dua konfigurasi umum: "Best Model" dan "Fast Model". Kami menemukan bahwa sebagian besar tugas cocok dengan salah satu dari dua mode ini.


Namun selain pemilihan model saja, kami menemukan bahwa tiap penyedia berbeda jauh dalam hal pemanggilan alat dan format pesan, sehingga sulit untuk menukar satu model dengan yang lain dan tetap mendapatkan performa yang baik.
Mesin inferensi Botpress
Karena itu, kami membuat mesin inferensi sendiri bernama LLMz, yang dapat bekerja dengan model apa pun tanpa (atau dengan perubahan prompt yang sangat minimal). Mesin ini juga menyediakan pemanggilan alat yang jauh lebih baik dan sering kali memberikan kinerja yang lebih baik dalam hal biaya token dan jumlah putaran LLM.
Mesin ini bekerja dengan tipe typescript di balik layar untuk definisi alat, markdown untuk format output pesan dan kode, serta sandbox eksekusi yang native untuk LLM saat inferensi.
LLMz menyediakan banyak optimasi dan fitur debugging yang dibutuhkan untuk kasus penggunaan lanjutan seperti:
- Kompresi token input
- Pemotongan token cerdas
- Memori ke konteks yang dioptimalkan token
- Pemanggilan alat paralel & komposit
- Kombinasi beberapa pesan + pemanggilan alat dalam satu panggilan LLM
- Alat yang sepenuhnya aman tipe (input & output)
- Sesi yang bertahan lama melalui serialisasi sandbox
- Mocking, wrapping, dan tracing alat
- Isolasi eksekusi penuh di V8 isolate ringan (memungkinkan ribuan eksekusi bersamaan dengan cepat dan sangat murah)
- Iterasi otomatis dan pemulihan error
Semua hal ini diperlukan untuk kebutuhan kami. Namun, hal-hal tersebut sangat sulit atau bahkan tidak mungkin dilakukan dengan pemanggilan alat biasa.
Alasan tidak menggunakan model router ringan
Kami sempat mempertimbangkan untuk membangun model router ringan yang berada di atas model yang ada dan secara otomatis memilih model yang tepat untuk setiap tugas.
Namun kami memutuskan untuk tidak melakukannya karena beberapa alasan:
1. Prediktabilitas
Sebagian besar klien kami – yang tentu saja dapat dimengerti – menginginkan hasil yang andal dan dapat diprediksi.
Jadi ide router model dinamis agak menakutkan untuk agen tingkat tinggi. Ini menambah lapisan ketidakpastian pada LLM.
2. Kecepatan
Latensi sangat penting untuk kasus penggunaan kami. Agar router dapat bekerja dengan cepat, modelnya harus sangat kecil (dan mungkin lebih sederhana) dibandingkan model yang akan diarahkan – kemungkinan berupa pengklasifikasi tradisional.
Meskipun biasanya cukup baik saat dilatih untuk tugas-tugas spesifik, a) ukuran konteks mereka yang pendek menjadi masalah untuk prompt panjang, dan b) mereka gagal menggeneralisasi ke prompt lain di luar data pelatihan mereka.
3. Keunggulan atau kesetaraan model
Meski benchmark mungkin berkata lain, di lapangan, kami jarang melihat model yang mengungguli GPT-4o (sejauh ini).
Masih belum jelas apakah LLM benar-benar akan lebih baik pada tugas X dibanding tugas Y seiring waktu, atau semua LLM akan menjadi sangat baik di hampir semua hal. Jika yang terjadi adalah yang kedua, memilih model tidak akan sepadan dengan usahanya.
Mempersiapkan LLM untuk masa depan dengan umpan balik
LLM akan menjadi komoditas dalam beberapa tahun ke depan dan pemilihan model tidak akan terlalu penting lagi.
Karena alasan itulah, kami memutuskan untuk berinvestasi dalam menyediakan mekanisme yang baik untuk memberikan contoh kepada LLM.
Jadi kami membangun sistem untuk menangkap umpan balik. Sistem ini menyimpan "pembelajaran" untuk eksekusi di masa mendatang. Dan secara dinamis memberikan pembelajaran yang paling relevan saat prompt dijalankan di masa depan, untuk memastikan peningkatan yang andal dan berkelanjutan dari waktu ke waktu.
Seiring LLM terus berkembang menuju performa yang lebih tinggi, kami siap dan antusias memaksimalkan manfaatnya untuk para pengguna platform kami.





.webp)
