feat(stt): mémoire court-terme de session côté serveur (5a)

Serveur : SessionStore (historique borné + TTL, en mémoire), /v1/ask accepte session_id
et injecte l'historique dans l'appel LLM, /v1/reset l'efface. Dockerfile en 1 worker
(cohérence mémoire process).

Client : session_id généré par run (uuid), envoyé à chaque requête ; commande /reset
en mode texte.

Testé en process (TestClient) : historique croît 0→2→4, reset→0, sessions isolées,
sans session_id = sans état.

Mémoire long-terme Qdrant (5b) + réparation Qdrant (5c) à suivre.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT
This commit is contained in:
Claude 2026-06-17 13:25:20 +00:00
parent bcdb4f8b2a
commit 20dc7e4f82
No known key found for this signature in database
8 changed files with 107 additions and 17 deletions

View file

@ -12,13 +12,14 @@ import httpx
from stt_server.config import settings
async def ask(text: str, model: str | None = None) -> str:
async def ask(text: str, model: str | None = None, history: list[dict] | None = None) -> str:
messages = [{"role": "system", "content": settings.system_prompt}]
if history:
messages += history
messages.append({"role": "user", "content": text})
payload = {
"model": model or settings.model,
"messages": [
{"role": "system", "content": settings.system_prompt},
{"role": "user", "content": text},
],
"messages": messages,
"max_tokens": settings.max_tokens,
"temperature": settings.temperature,
}