| name | chappie-backend |
| description | Backend development for CHAPPiE. Use when working on FastAPI APIs, vLLM brain, Cerebras integration, training daemon, or backend_wrapper.py. |
CHAPPiE Backend Development
Stack
- API: FastAPI (port 8010), CORS wildcard
- Brain: vLLM (local), Cerebras (cloud fallback)
- Database: ChromaDB for episodic memory
- Training: daemon_manager subprocess pattern
Key Files
| File | Role |
|---|
api/main.py | App entry, routers, root JSON endpoint |
api/routers/*.py | chat, system, memory, runtime, training, context |
api/schemas.py | Pydantic models |
web_infrastructure/backend_wrapper.py | Main CHAPPiE backend class |
brain/vllm_brain.py | vLLM OpenAI-compatible client |
brain/base_brain.py | Abstract base + GenerationConfig |
Chappies_Trainingspartner/daemon_manager.py | Subprocess daemon control |
Generation Pipeline (Two-Step)
- Step 1: Intent analysis via Cerebras (fast model:
llama-3.1-8b)
- Step 2: Response generation via vLLM (Qwen3.5-4B)
- Post-processing: Cerebras GPT-OSS-120B formats CoT + Answer
Post-Processing (_format_via_cerebras)
- Method in
backend_wrapper.py (~line 602)
- Sends raw CHAPPiE output to Cerebras for formatting
- Returns
<cot> + <antwort> tagged blocks
- NEVER changes content — only formatting
Testing Without vLLM
import sys
from unittest.mock import MagicMock
sys.modules["ollama"] = MagicMock()
sys.modules["cerebras"] = MagicMock()
sys.modules["chromadb"] = MagicMock()
Key Rules
repetition_penalty muss via extra_body, nicht direkt als Keyword
enable_thinking=True für Qwen3.5 Modelle (in _prepare_extra_body)
- Reasoning-Loop-Detektor:
_detect_reasoning_loop() in vllm_brain.py
- Alle Settings über
config.config.settings → update_from_ui() persistiert