π Day 5 β Proyek Akhir: Agentic RAG + Voice Agent + Twilio β
Minggu 2 Β· Hari 5 β Green Day (Proyek) Topik: Agentic RAG Agent (Gemini + Supabase), Voice Agent ElevenLabs, Integrasi Webhook, Deployment Produksi, Twilio Phone Number
π Daftar Isi β
- Recap & Game Plan
- Fase 2: Question-Answering Agent
- Mengubah ke Webhook untuk Voice
- Integrasi ElevenLabs + n8n
- Deploy ke Produksi
- Twilio Phone Number (Opsional)
- Rangkuman & Poin Penting
π Recap & Game Plan β
Progress dari Kemarin β
Kemarin kita menyelesaikan Fase 1 β Data Ingest Pipeline:
β
Google Sheets (60 produk) β Edit Fields β Chunk β OpenAI Embeddings β Supabase Vector StoreHari ini kita membangun Fase 2 β Question Answering plus integrasi suara!
Rencana Hari Ini β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Step 1: Bangun Chat-Based RAG Agent (teks) β
β Step 2: Konversi ke Webhook Endpoint (API) β
β Step 3: Hubungkan dengan ElevenLabs (suara) β
β Step 4: Deploy ke Produksi (live) β
β Step 5: (Bonus) Twilio Phone Number (telepon) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββπ€ Fase 2: Question-Answering Agent β
Arsitektur Agentic RAG β
ββββββββββββββββββββββββββββββββββββββββββββ
β AI AGENT (Gemini) β
β β
β System Prompt: β
β "You are a product expert..." β
β β
β ββββββββββββββββ ββββββββββββββββββ β
β β LLM Model β β Tool: β β
β β Gemini 2.0 β β Supabase β β
β β Flash β β Vector Store β β
β ββββββββββββββββ β (Retrieval) β β
β β² βββββββββ¬βββββββββ β
β β β β
β Answers with Searches β
β retrieved context for relevant β
β products β
ββββββββββββββββββββββββββββββββββββββββββββ
β² β
β βΌ
User Question Answer with
"What keyboard product data
is best for from Supabase
gaming?"Langkah Membangun β
1. Trigger: On Chat Message β
Kita mulai dengan trigger Chat (bawaan n8n) untuk testing cepat.
2. AI Agent Node β
| Parameter | Nilai |
|---|---|
| Agent Type | Tools Agent |
| System Prompt | "You are a product expert for a computer accessories store. Use the provided tools to look up product information." |
| Input | {{ $json.chatInput }} (default dari Chat trigger) |
3. Sub-node: LLM (Gemini) β
| Parameter | Nilai |
|---|---|
| Provider | Google Gemini |
| Model | gemini-2.0-flash |
| Credentials | Google AI API key (gratis) |
4. Sub-node: Tool β Supabase Vector Store β
| Parameter | Nilai |
|---|---|
| Operation | Retrieve documents (as tool) |
| Table | knowledge_base |
| Credentials | Supabase (sama seperti kemarin) |
| Top K (Limit) | 10 (ambil 10 dokumen paling relevan) |
| Tool Description | "Use this tool to look up any product information" |
π‘ Tool Description sangat penting. Ini yang dibaca LLM untuk memutuskan kapan harus menggunakan tool ini. Deskripsi yang baik = penggunaan tool yang tepat.
Sub-node di Dalam Tool: Embedding Model β
| Parameter | Nilai |
|---|---|
| Provider | OpenAI Embeddings |
| Model | text-embedding-3-small |
β οΈ Model harus SAMA dengan yang digunakan saat data ingest! Jika ingest pakai
text-embedding-3-small, retrieval juga harus pakai model yang sama.
Testing Chat Agent β
User: "What keyboard do you have?"
Agent: "We have several keyboards:
1. NovaKey Tactile Keyboard ($129.99) - Premium mechanical...
2. ProType Slim Keyboard ($89.99) - Ultra-slim wireless...
3. ..."
User: "Which one is best for gaming?"
Agent: "For gaming, I'd recommend the NovaKey Tactile Keyboard
because of its mechanical switches and low latency..."Agen berhasil:
- β Menerima pertanyaan
- β Menggunakan tool Supabase untuk cari produk
- β Mendapat 10 dokumen relevan
- β Menjawab berdasarkan data produk nyata
π Mengubah ke Webhook untuk Voice β
Mengapa Perlu Webhook? β
Chat trigger hanya untuk testing. Untuk integrasi dengan ElevenLabs, kita butuh HTTP endpoint yang bisa dipanggil dari luar.
Perubahan Arsitektur β
SEBELUM (Chat-based): SESUDAH (Webhook-based):
βββββββββββββββ βββββββββββββββββββ
β Chat MessageββββΆ AI Agent βββΆ Chat β Webhook (POST) ββββΆ AI Agent
β Trigger β β /rag-agent β β
βββββββββββββββ βββββββββββββββββββ β
βΌ
βββββββββββββββββββ
β Respond to β
β Webhook β
β (JSON response) β
βββββββββββββββββββLangkah Konversi β
- Ganti trigger dari "Chat Message" β Webhook (POST)
- Sesuaikan input AI Agent:
{{ $json.chatInput }}β{{ $json.body.question }} - Hapus Memory node β setiap panggilan dari ElevenLabs adalah request independen, tidak perlu konteks percakapan sebelumnya
- Tambahkan "Respond to Webhook" di akhir flow β return jawaban agent sebagai JSON response
Konfigurasi Webhook β
| Parameter | Nilai |
|---|---|
| Method | POST |
| Path | rag-agent |
| Response | Respond to Webhook node |
Konfigurasi Respond to Webhook β
| Parameter | Nilai |
|---|---|
| Respond With | Text |
| Response Body | {{ $json.output }} |
π‘ Mengapa hapus memory? Setiap request dari ElevenLabs adalah independent call. ElevenLabs menangani konteks percakapan di sisi mereka. Backend n8n cukup menjawab pertanyaan satuan.
ποΈ Integrasi ElevenLabs + n8n β
Setup ElevenLabs Agent β
- Buat agent baru: "Electronics E-commerce Sales Expert"
- System prompt: Expert di aksesoris komputer, ramah, helpful
Konfigurasi Webhook Tool di ElevenLabs β
| Parameter | Nilai |
|---|---|
| Tool Type | Webhook |
| Tool Name | Product Lookup |
| URL | n8n Webhook URL (test URL dulu, production nanti) |
| Method | POST |
| Body Parameter | question (type: string) |
| Timeout | 60 detik (beri waktu cukup) |
| Pre-tool Speech | β Enable |
| Typing Sound | β Enable |
Pre-tool Speech β
Saat agent memanggil tool (yang butuh waktu), daripada diam saja β
Agent akan bilang sesuatu seperti:
"Let me check our product catalog for you..."Ini membuat pengalaman lebih natural β user tidak merasa ditinggalkan.
Alur Lengkap (Round-trip) β
ββββββββββββ ββββββββββββββββ βββββββββββ ββββββββββββββββ
β User βββββΆβ ElevenLabs βββββΆβ n8n βββββΆβ AI Agent β
β "What β β Voice Agent β β Webhook β β (Gemini + β
β keyboardβ β (STT) β β /rag β β Supabase) β
β is best β β β β β β β
β for β β β β β β β
β gaming?"β β β β β β β
ββββββββββββ ββββββββ¬ββββββββ βββββββββββ ββββββββ¬ββββββββ
β β
β βββββββββββ β
β βSupabase ββββββββββββββββ
β β Vector β Tool call:
β β Search β "gaming keyboard"
β ββββββ¬βββββ
β β Returns 10 relevant products
β βΌ
β ββββββββββββββββ
β β Gemini LLM β
β β Generates β
βββββββββββ Answer β
β ββββββββββββββββ
β
ββββββββΌββββββββ
β ElevenLabs β
β (TTS) βββββΆ π "For gaming, I'd recommend..."
ββββββββββββββββπ Deploy ke Produksi β
Langkah Deploy β
n8n Side β
- Activate workflow (toggle ON)
- Catat Production URL (berbeda dari Test URL!)
- Pastikan workflow sudah di-publish
ElevenLabs Side β
- Update Webhook URL di tool config β ganti Test URL dengan Production URL
- Test agent sekali lagi untuk memastikan production URL berfungsi
- Publish agent β dapatkan shareable link
Testing Produksi β
User (suara): "Hey, can you tell me about your webcams?"
Agent (suara): "Absolutely! We have several webcams available..."
[data real dari Supabase via n8n]β Berhasil! Agent suara menjawab pertanyaan produk secara real-time dengan data dari vector database.
π Twilio Phone Number (Opsional) β
Mengapa Twilio? β
Sampai sekarang, voice agent hanya bisa dimainkan di widget web. Twilio memungkinkan user menelepon nomor telepon sungguhan dan berbicara dengan agent.
Setup β
1. Beli Nomor Twilio β
| Detail | Nilai |
|---|---|
| Platform | twilio.com |
| Biaya nomor | ~$1.25/bulan |
| Tipe | Phone number (US/International) |
| Per menit | ~$0.0085/menit inbound |
2. Import ke ElevenLabs β
- ElevenLabs β Agent β Phone Numbers tab
- Klik Import from Twilio
- Masukkan:
- Account SID (dari Twilio dashboard)
- Auth Token (dari Twilio dashboard)
- Pilih nomor β Import
- Assign nomor ke agent
Testing via Telepon β
π± Telepon nomor Twilio
β
π ElevenLabs menerima panggilan
β
π£οΈ User: "Do you have any good microphones?"
β
π ElevenLabs β n8n Webhook β Gemini + Supabase β Response
β
π Agent: "Yes! We carry three excellent microphones..."
β
π± User mendengar jawaban via teleponπ Full round-trip berhasil! User menelepon nomor biasa β jawaban AI tentang produk dikirim via suara β semuanya otomatis.
Biaya Estimasi β
| Komponen | Biaya |
|---|---|
| Twilio number | ~$1.25/bulan |
| Twilio minutes | ~$0.0085/menit (inbound) |
| ElevenLabs | Tergantung plan (free tier ada) |
| OpenAI embed | ~$0.02 per 1M tokens |
| Supabase | Free tier cukup |
| n8n Cloud | Tergantung plan |
π Rangkuman β
Proyek Lengkap Week 2: End-to-End Stack β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββ βββββββββββββ ββββββββββ βββββββββββββ β
β β Twilio β βElevenLabs β β n8n β β Supabase β β
β β Phone # βββΆβVoice AgentβββΆβWebhook βββΆβ Vector DB β β
β β β β(STT + TTS)β β+ Agent β β(pgvector) β β
β βββββββββββ βββββββββββββ β+ Geminiβ βββββββββββββ β
β ββββββββββ β
β β
β Data Pipeline: Sheets β Edit Fields β Embed β Supabase β
β Query Flow: Phone β STT β Webhook β Agent β DB β TTS β Phone β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββPoin-Poin Utama β
| # | Konsep | Penjelasan |
|---|---|---|
| 1 | Agentic RAG | AI Agent + Vector Store tool = agent yang bisa cari data |
| 2 | Tool Description | Deskripsi yang jelas β agent tahu kapan pakai tool |
| 3 | Webhook konversi | Chat trigger β Webhook + Respond to Webhook |
| 4 | Hapus memory untuk API | Setiap webhook call independen, tidak perlu history |
| 5 | Pre-tool speech | UX trick: agent bicara sambil menunggu tool |
| 6 | Production URL | HARUS ganti dari test URL sebelum deploy |
| 7 | Twilio integration | Import nomor ke ElevenLabs via Account SID + Auth Token |
Teknologi Stack Minggu Ini β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ
β Layer β Teknologi β
βββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β Voice I/O β ElevenLabs (STT + TTS) β
β Phone β Twilio (opsional) β
β Orchestration β n8n (workflow + webhook) β
β AI/LLM β Gemini 2.0 Flash (gratis) β
β Embedding β OpenAI text-embedding-3-small (1536d) β
β Vector DB β Supabase (PostgreSQL + pgvector) β
β Data Source β Google Sheets (60 produk) β
β Transform β Edit Fields node (n8n) β
βββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββπ Pencapaian β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
Membangun Agentic RAG agent (Gemini + Supabase tool) β
β β
Konversi chat β webhook endpoint β
β β
Integrasi ElevenLabs Voice Agent + n8n backend β
β β
Deploy ke produksi (kedua platform) β
β β
Twilio phone number β agent bisa dihubungi via telepon β
β β
Full round-trip: telepon β STT β RAG β TTS β suara β
β β
β π Progress Kursus: 67% ββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββWeek 2 Selesai! Selanjutnya: Week 3 β Multi-Agent Systems & MCP β menuju kemampuan tingkat lanjut.