“Ketika pertama kali saya membangun alur kerja agen, itu seperti menonton sihir, yaitu, sampai dibutuhkan 38 detik untuk menjawab pertanyaan pelanggan sederhana dan biaya saya $ 1,12 per permintaan.” Ketika Anda mulai membangun alur kerja agentik di mana agen otonom merencanakan dan bertindak pada proses multi-langkah, mudah untuk dibawa pergi. fleksibilitas luar biasa! Tapi begitu juga dengan overhead yang datang dengan itu. Beberapa titik rasa sakit ini termasuk eksekusi lambat, penggunaan komputasi tinggi, dan kekacauan bagian yang bergerak. Bagian tengah dalam alur kerja Agentic adalah di mana masalah kinerja dan peluang optimasi terbaik biasanya muncul. Selama tahun terakhir, saya telah belajar bagaimana membuat sistem ini secara dramatis lebih cepat dan lebih hemat biaya tanpa mengorbankan fleksibilitas mereka, dan memutuskan untuk membuat buku ini. Sebelum saya berbicara optimasi, saya ingin memastikan Anda semua tahu apa yang saya maksudkan ketika saya menggunakan kata-kata berikut: Alur kerja: Urutan yang telah ditentukan sebelumnya yang mungkin atau mungkin tidak menggunakan LLM sama sekali. Agen: Self-directing, dan mereka dapat memutuskan langkah-langkah yang harus diambil dan urutan di mana mereka memilih untuk melakukan. Agentic Workflows: Ini adalah hibrida di mana Anda mengatur jalur umum tetapi memberi agen dalam alur kerja Anda kebebasan untuk bergerak dalam langkah-langkah tertentu. Sebelum saya berbicara optimasi, saya ingin memastikan Anda semua tahu apa yang saya maksudkan ketika saya menggunakan kata-kata berikut: Alur kerja: Urutan yang telah ditentukan sebelumnya yang mungkin atau mungkin tidak menggunakan LLM sama sekali. Agen: Self-directing, dan mereka dapat memutuskan langkah-langkah yang harus diambil dan urutan di mana mereka memilih untuk melakukan. Agentic Workflows: Ini adalah hibrida di mana Anda mengatur jalur umum tetapi memberi agen dalam alur kerja Anda kebebasan untuk bergerak dalam langkah-langkah tertentu. Cara Menghitung Langkah Sesuatu yang semua orang perlu diingat saat merancang alur kerja agentik adalah bahwa setiap panggilan model menambahkan latensi. Setiap lompatan ekstra adalah kesempatan lain untuk timeout. dan jangan lupa tentang bagaimana itu juga meningkatkan kemungkinan halusinasi kita, menyebabkan keputusan yang dibuat yang menyimpang dari tujuan utama. Panduan di sini sederhana: Menggabungkan langkah-langkah terkait menjadi prompt tunggal Hindari mikro-putusan yang tidak perlu yang dapat ditangani oleh satu model sekaligus Desain untuk meminimalkan round-trip Ketika saya merancang alur kerja, saya selalu mulai dengan satu agen (karena mungkin kita tidak membutuhkan alur kerja sama sama sama sekali) dan kemudian mengevaluasikannya terhadap metrik dan kontrol tertentu yang saya miliki. Berdasarkan di mana gagal, saya mulai memecah bagian-bagian di mana skor evaluasi tidak memenuhi kriteria minimum, dan berterusan dari saat itu. Menyelaraskan segala sesuatu yang tidak memiliki ketergantungan Meminjam konteks dari titik di atas, rantai sekuensial adalah perangkap latensi, juga. Jika dua pertanyaan tidak membutuhkan output satu sama lain, jalankan mereka bersama-sama! Sebagai contoh, saya ingin meniru alur kerja agen dukungan pelanggan di mana saya dapat membantu pelanggan mendapatkan status pesanan mereka, menganalisis perasaan permintaan, dan menghasilkan tanggapan.Saya memulai dengan pendekatan berurutan, tetapi kemudian menyadari bahwa mendapatkan status pesanan dan menganalisis perasaan permintaan tidak saling bergantung. Setelah saya memiliki dua tanggapan ini, saya kemudian akan mengirim status pesanan dan perasaan yang terdeteksi ke generator tanggapan, dan itu dengan mudah menggosok total waktu yang diambil dari 12 detik hingga 5. Memotong panggilan model yang tidak perlu Kita semua telah melihat posting online yang berbicara tentang bagaimana ChatGPT dapat mendapatkan sedikit iffy ketika datang ke matematika. Well, itu adalah pengingat yang sangat baik bahwa model ini tidak dibangun untuk itu. Juga, jika kita tahu jenis perhitungan yang perlu terjadi, mengapa tidak hanya mengkodoknya menjadi fungsi yang dapat digunakan, bukannya memiliki angka LLM yang keluar sendiri? Jika aturan, regex, atau fungsi kecil dapat melakukannya, lewatkan panggilan LLM. pergeseran ini akan menghilangkan latensi yang tidak perlu, mengurangi biaya token, dan meningkatkan keandalan semua dalam satu langkah. Sesuai dengan model untuk tugas "Tidak semua tugas dibangun sama" adalah prinsip dasar manajemen tugas dan produktivitas, mengakui bahwa tugas bervariasi dalam sifat, persyaratan, dan pentingnya. Demikian pula, kita perlu memastikan bahwa kita mengalokasikan tugas yang tepat ke model yang tepat. Model sekarang datang dalam rasa dan ukuran yang berbeda, dan kita tidak perlu model Llama 405B untuk melakukan tugas klasifikasi atau ekstraksi entitas sederhana; sebaliknya, Model 8B harus lebih dari cukup. Ia adalah biasa hari ini untuk melihat orang-orang merancang aliran kerja agensi mereka dengan model terbesar yang terburuk yang telah keluar, tetapi itu datang dengan kos latensi. Semakin besar model, semakin banyak perhitungan yang diperlukan, dan oleh itu latensi. Sebaliknya, cara saya merancang alur kerja lagi adalah memulai dengan yang terkecil. model go-to saya adalah Llama 3.1 8B, yang telah terbukti menjadi pejuang setia untuk tugas-tugas yang rusak. saya mulai dengan membuat semua agen saya menggunakan model 8B dan kemudian memutuskan apakah saya perlu menemukan model yang lebih besar, atau jika itu cukup sederhana, mungkin bahkan turun ke model yang lebih kecil. Terlepas dari ukuran, ada banyak tentang apa selera LLM melakukan lebih baik pada setiap tugas, dan itu adalah pertimbangan lain untuk dipertimbangkan, tergantung pada jenis tugas yang Anda coba capai. Pengetahuan Tribal Pertimbangkan kembali prompt Anda Ini adalah pengetahuan umum sekarang, tetapi ketika kita pergi melalui penilaian kami, kita cenderung menambahkan lebih banyak pengaman ke prompt LLM. Ini mulai membengkak prompt dan, pada gilirannya, mempengaruhi latensi. Ada berbagai metode untuk membangun prompts yang efektif yang saya tidak akan masuk ke dalam artikel ini, tetapi beberapa metode yang saya akhirnya menggunakan untuk mengurangi waktu tanggapan perjalanan saya adalah Prompt Caching untuk instruksi dan skema statis. Ini termasuk menambahkan konteks dinamis di akhir prompt untuk penggunaan ulang cache yang lebih baik. menetapkan batasan panjang respons yang jelas sehingga model tidak menghabiskan waktu, memberi saya informasi yang tidak perlu. menyembunyikan segalanya Dalam bagian sebelumnya, saya berbicara tentang Prompt Caching, tetapi itu tidak harus di mana Anda berhenti mencoba untuk mengoptimalkan dengan caching. Caching tidak hanya untuk jawaban akhir; itu adalah sesuatu yang harus diterapkan di mana pun yang berlaku. Anda bahkan dapat menerapkan KV cache untuk keadaan perhatian parsial dan, tentu saja, setiap data khusus sesi seperti data pelanggan atau keadaan sensor. Spekulasi Decoding Berikut adalah satu untuk kerumunan canggih: gunakan model "desain" kecil untuk menebak token berikutnya dengan cepat dan kemudian memiliki model yang lebih besar memvalidasi atau memperbaikinya secara paralel. banyak perusahaan infrastruktur yang lebih besar di luar sana yang menjanjikan inferensi yang lebih cepat melakukan ini di balik adegan, jadi Anda mungkin juga menggunakannya untuk mendorong latensi Anda lebih jauh. Simpan Fine-Tuning untuk terakhir - dan lakukan secara strategis Finetuning adalah sesuatu yang banyak orang bicarakan di hari-hari awal, tetapi sekarang, beberapa penerima LLM yang lebih baru tampaknya bahkan tidak tahu mengapa atau kapan harus menggunakannya. Nah, ini adalah sesuatu yang tidak banyak orang bicara, tetapi ada alasan yang saya bicarakan tentang optimasi ini terakhir, dan saya akan sampai pada itu dalam beberapa saat.Ketika Anda menyesuaikan LLM untuk melakukan tugas, petunjuk yang dibutuhkan pada kesimpulan jauh lebih kecil daripada apa yang akan Anda miliki jika tidak, karena sekarang, dalam kebanyakan konteks, apa yang Anda masukkan dalam petunjuk dimasak ke dalam beban melalui proses menyesuaikan Anda. Ini, pada gilirannya, memberi makan pada titik di atas pada mengurangi panjang prompt Anda dan karenanya, latensinya meningkat. Monitor yang tak tertahankan Ini adalah langkah paling penting yang saya ambil ketika mencoba untuk mengurangi latensi. ini menetapkan dasar untuk salah satu optimasi yang tercantum di atas dan memberi Anda kejelasan tentang apa yang bekerja dan apa yang tidak. Waktu untuk Token Pertama (TTFT) Token per detik (TPS) Routing akurasi Perhitungan hit rate Waktu koordinasi multi-agent Metrik ini memberi tahu Anda di mana untuk mengoptimalkan dan kapan karena tanpa mereka, Anda terbang buta. garis bawah Alur kerja agentik yang paling cepat dan paling dapat diandalkan tidak hanya terjadi. mereka adalah hasil dari pengurangan langkah-langkah yang tidak sabar, paralelisasi cerdas, kode determinis, pengukuran model, dan caching di mana pun masuk akal. lakukan ini dan evaluasi hasil Anda, dan Anda harus melihat peningkatan kecepatan 3-5x (dan mungkin bahkan penghematan biaya besar) benar-benar dalam jangkauan Anda.