Files
2025-12-04 10:30:23 +01:00

2.2 KiB

LLM Tutor API (v1)

Die mobile App soll dieselben Tutor-Funktionen wie das Web nutzen, ohne eigene Prompts zu pflegen. Die API stellt deshalb zwei Endpunkte bereit:

GET /api/v1/personalities

  • Liefert die verfügbaren, vordefinierten Tutor-Charaktere.
  • Response: { personalities: [{ id, name, description, image }] }

POST /api/v1/llm/chat

  • Baut den System Prompt serverseitig (auf Basis der ausgewählten Personality) und sendet die Anfrage an Gemini.
  • Body:
    • apiKey (string, Pflicht): Nutzer-Gemini-Key (Server erzeugt den System Prompt, nicht die App).
    • personalityId (string, Pflicht): Eine id aus /api/v1/personalities.
    • language (string, Pflicht): Sprache, z.B. en, de, fr (muss zu SupportedLanguage passen).
    • playerColor ("white" | "black", Pflicht): Spielerfarbe des Users; der Tutor übernimmt die Gegenseite.
    • message (string, Pflicht): Nutzereingabe oder systemischer Trigger-Text.
    • context (optional): Zusätzliche Positions- und Analyseinfos, damit das LLM konkrete Hinweise geben kann.
      • Move-Exchange-Modus ({ type: "move_exchange", ... }):
        • userMoveSan, tutorMoveSan: SAN-Notation der letzten Züge.
        • fenBeforeUser, fenAfterUser, fenAfterTutor: Stellungs-FENs (vor/nach den Zügen).
        • preEvaluation, postEvaluation: Stockfish-Bewertungen (Score/Mate aus Weiß-Perspektive).
        • openingCandidates: Liste möglicher Eröffnungen ({ name, eco? }).
        • missedTactics: String-Liste zu erkannten taktischen Themen.
      • Allgemeiner Modus: { currentFen?, evaluation?, openingCandidates?, missedTactics? }
    • history (optional): Bisherige Unterhaltung { role: "user" | "model", text }[]; der Server ergänzt immer den System Prompt.
    • modelName (optional): Overrides des Default-Modells gemini-2.5-flash.
  • Response: { reply: string }

Warum serverseitiger System Prompt?

  • Nur vordefinierte Charaktere sind erlaubt (keine generischen Chats).
  • Der Prompt erzwingt die Tutor-Rolle (Gegner + Coach), Sprache und Verhaltensregeln.
  • Die App übergibt nur Zustand (FEN, Bewertungen, Taktiken) und User-Text; der Server kapselt die Instruktionen.