Skip to content

Chatbot Service

Chatbot Service adalah service Python + FastAPI yang menjadi mesin inferensi RAGA — inilah implementasi konkret dari konsep yang dijelaskan di halaman Raga Engine. Service ini menerima pertanyaan user beserta daftar sumber pengetahuan yang relevan, mengumpulkan konteks dari Elasticsearch dan service pendukung lain secara paralel, menyusun system prompt secara dinamis, lalu memanggil salah satu dari beberapa provider LLM untuk menghasilkan jawaban.

Chatbot Service dipanggil oleh API Tarantula (env var CHATBOT_URL) setiap kali ada chat masuk ke sebuah workspace.

Tech Stack

KomponenTeknologi
RuntimePython (FastAPI + uvicorn)
Search / Knowledge IndexElasticsearch
LLM Clientopenai SDK (OpenAI-compatible, dipakai untuk semua provider)
ObservabilityOpenTelemetry (traces + instrumentasi FastAPI/requests/logging)
Secret Managementinfisical_sdk (Python)

Detail environment variable, endpoint, dan alur penyusunan prompt lengkap ada di halaman Teknis.

Cara Kerja Singkat

  1. Caller mengirim POST /chatbot dengan pertanyaan user, daftar knowledge source (km) yang relevan, provider LLM yang dipilih, dan berbagai flag (chain, image, files, source, think, dll).
  2. Jika provider adalah model lokal (local/local_v2), request menunggu (polling) sampai antrian VLLM punya slot tersedia, sebelum diproses lebih lanjut.
  3. Kelima jenis sumber pengetahuan (basic, dokumen/OCR, audio, database, API) diambil paralel — kegagalan satu sumber tidak menggagalkan yang lain (degraded_sources dilaporkan ke caller).
  4. Untuk sumber database dan API, Chatbot Service tidak query langsung: ia meminta LLM menyusun query/pemanggilan yang tepat, lalu mengeksekusinya lewat Database Connect dan API Connect.
  5. Seluruh konteks (knowledge source, riwayat chat, file yang diunggah, deskripsi gambar, personalisasi) digabung menjadi satu system prompt, dikirim ke LLM, dan jawabannya dikembalikan — baik sekaligus maupun sebagai stream.

Ringkasan

Chatbot Service adalah otak RAGA: mengorkestrasikan lima jenis sumber pengetahuan, mendelegasikan Text-to-SQL dan Text-to-API ke service lain, lalu merangkai semuanya menjadi satu percakapan yang koheren lewat salah satu dari enam provider LLM yang didukung.