Kesilapan Lazim Membina Ejen Emel
Ejen emel anda berfungsi semasa ujian. Kemudian anda melancarkannya. Semalaman, ejen tersebut membalas mesejnya sendiri. Pelanggan menerima jawapan yang sama sebanyak tiga kali. Rangkaian perbualan terputus-putus.
Kegagalan ini berlaku pada peringkat infrastruktur, bukan disebabkan oleh prom LLM anda.
Semak sembilan perkara ini sebelum anda melancarkannya:
Gelung Infiniti (The Infinite Loop) Webhook dicetuskan apabila ejen anda menghantar balasan. Ini mencetuskan webhook yang lain. Anda mencipta satu gelung. Penyelesaian: Tapis alamat emel ejen di bahagian atas kod anda. Hentikan proses jika penghantar adalah ejen tersebut.
Mesej Pendua (Duplicate Messages) Rangkaian mengalami gangguan kecil. Titik akhir (endpoint) anda tidak bertindak balas dengan cukup pantas. Sistem menghantar notifikasi yang sama sekali lagi. Penyelesaian: Gunakan semakan atomik pada ID mesej. Gunakan Redis atau Postgres untuk memastikan anda memproses setiap ID hanya sekali.
Keadaan Perlumbaan (Race Conditions) Dua pekerja memproses acara yang sama pada milisaat yang sama. Penyingkiran pendua (deduplication) sahaja tidak mencukupi di sini. Penyelesaian: Gunakan kunci setiap thread (per-thread lock) dengan had 30 saat. Semak jika ejen telah membalas di dalam kunci tersebut.
Data Terpotong (Truncated Data) Webhook sering kali hanya membawa ringkasan, bukan kandungan penuh. Emel yang besar mungkin tiba sebagai acara yang terpotong. Penyelesaian: Sentiasa ambil mesej penuh daripada API menggunakan ID. Jangan bergantung pada muatan (payload) webhook untuk kandungan.
Rangkaian Perbualan Terputus (Broken Threads) Menghantar balasan sebagai mesej baharu akan merosakkan pengelompokan perbualan dalam Gmail atau Outlook. Penyelesaian: Sertakan
reply_to_message_idpada setiap balasan. Padankan balasan melaluithread_id, jangan sekali-kali menggunakan baris subjek.Pembetulan Manusia (The Human Correction) Seorang manusia menghantar pembetulan susulan beberapa saat selepas emel pertama mereka. Ejen anda membalas kedua-duanya. Penyelesaian: Gunakan tempoh bertenang (cooldown) selama 30 hingga 60 saat. Kumpulkan mesej berturutan ke dalam satu balasan.
Ribut Balasan (The Reply Storm) Pepijat logik menyebabkan ejen menghantar ratusan emel secara serta-merta. Penyelesaian: Tetapkan bajet penghantaran bagi setiap thread. Jika ejen menghantar 3 mesej dalam masa 5 minit, hentikan dan maklumkan kepada manusia.
Input Sampah (Garbage Input) Spam dan balasan luar pejabat (out-of-office) mencetuskan LLM anda. Anda membayar untuk inferens yang tidak berguna. Penyelesaian: Gunakan peraturan peti masuk untuk menyekat penghantar yang tidak baik atau halakan emel automatik ke folder yang berbeza.
Perangkap Ralat 403 (The 403 Error Trap) Peraturan keluar (outbound rules) boleh menyekat penghantaran. Ini mengembalikan ralat 403. Logik cubaan semula (retry logic) standard akan terus mengulang ralat ini tanpa henti. Penyelesaian: Anggap 403 sebagai ralat terminal. Jangan cuba semula. Jika anda mendapat 503, anda boleh cuba semula.
Penyelesaian yang membosankan seperti penapis, kunci, dan had adalah perkara yang memastikan ejen kekal selamat.
Source: https://dev.to/qasim157/common-pitfalls-building-email-agents-and-fixes-29kg
Optional learning community: https://t.me/GyaanSetuAi