System overview
Snapshot of the selected voice agent's wiring: tools, use cases, the request flow, and the live system prompt. Each agent built in the Builder shows up here independently.
Tools (0)
Use cases (0)
Architecture
System prompt
| Code | Use case | Tool chain |
|---|
┌──────────────────────────────────────────────────────────────────────┐
│ HRopal portal (host page) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ localStorage.hropal_jwt ← user already logged in │ │
│ └─────────────────────┬─────────────────────────────────────┘ │
│ │ widget reads JWT │
│ ▼ │
│ ╭─ floating mic icon (this widget) ─────────────────────────╮ │
│ │ click → open panel → POST /session/start (with JWT) │ │
│ │ ↓ │ │
│ │ backend decodes JWT, stores identity, says greeting │ │
│ │ ↓ │ │
│ │ mic arms → MediaRecorder + Web Audio VAD │ │
│ │ (5 animated bars show level in real time) │ │
│ ╰────────────────────────┬──────────────────────────────────╯ │
└────────────────────────────┼──────────────────────────────────────────┘
│ blob (webm/opus)
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FastAPI backend (this server) │
│ │
│ POST /turn │
│ ├── stt.py → Groq Whisper Large v3 turbo (≈ 750 ms) │
│ │ ↓ text │
│ ├── llm.py → Groq Llama 3.3 70B + 15 tool schemas │
│ │ ┌─────────────────────────────────────────┐ │
│ │ │ LLM decides whether to: │ │
│ │ │ (a) reply directly, OR │ │
│ │ │ (b) call one of the 15 HRMS tools │ │
│ │ └────────────────┬────────────────────────┘ │
│ │ │ if tool_call: │
│ │ ▼ │
│ │ tools.py → httpx call to HRMS API │
│ │ Authorization: Bearer (from session JWT) │
│ │ │ │
│ │ ▼ │
│ │ HRopal HRMS (https://apis-hropal.vprc.in) │
│ │ │ │
│ │ ▼ JSON response │
│ │ tool result fed back to LLM for narration │
│ │ ↓ final text │
│ └── tts.py → ElevenLabs Flash v2.5 (≈ 1.3 s) │
│ ↓ mp3 bytes │
│ │
└────────────────────────────────────────────────┬─────────────────────┘
│
▼ played in widget
(Aria speaks)
Loaded from backend/PHASE2_PROMPT.md. Placeholders {{employeeId}}, {{employee_name}}, etc. are substituted at session-start time using the JWT claims.
Loading…