API de chatbot en Python con:
- Genkit (OpenAI compatible)
- FastAPI (endpoints HTTP)
- Memoria JSON persistente:
- summary (texto)
- structured_memory (perfil/preferencias/hechos/tareas)
- messages (historial)
- Tests con pytest
Objetivo: código simple, claro, reproducible en Windows 11 + VS Code.
src/api.py: endpoints FastAPIsrc/flows.py:chat_flow(Genkit/OpenAI) + prompt con memoriasrc/memory_json.py: persistencia en JSON + locks + merge structuredsrc/run_api.py: arranque uvicorntests/test_api.py: tests API (mock de chat_flow)tests/test_memory_json.py: tests de persistencia realdata/memory/: sesiones JSON (no versionar)
- No introducir dependencias innecesarias.
- No guardar secretos en repo.
- Mantener tests deterministas y sin red.
- Mantener compatibilidad Windows (paths + nombres de fichero).
- Los tests de API NO deben llamar a OpenAI:
- Se debe parchear/mockear
chat_flowsiempre.
- Se debe parchear/mockear
- Los tests de persistencia deben usar
tmp_pathymonkeypatch.chdir(tmp_path).
Comandos:
pytestpytest tests/test_api.py -vvpytest tests/test_memory_json.py -vv
summarydebe ser corto y estable (hechos persistentes, preferencias).structured_memory:profileypreferences: merge de dictsfactsytodos: listas limitadas, sin duplicados exactos
messages: mantener ventana reciente cuando el historial crezca- Evitar deadlocks: locks reentrantes por sesión (RLock)
-
python src/run_api.pyfunciona -
pytestpasa - No hay secretos en commits
- README/REQUIREMENTS actualizados si cambia el comportamiento
-
.gitignorecubre.env,.venv,.genkit,data/memory, caches