| --- |
| title: Poor Man's Interaction Models |
| colorFrom: blue |
| colorTo: green |
| sdk: docker |
| app_port: 7860 |
| fullWidth: true |
| --- |
| |
| # Laguna Anticipatory Chat Demo |
|
|
| Tiny Docker Space for the anticipatory chat demo. The browser only talks to the |
| local Space server; `PRIME_API_KEY` and any optional access controls are read |
| from Space secrets on the server. |
|
|
| Modes: |
| - Non-interactive: waits for Enter, then generates with `LAGUNA_BASE_MODEL`. |
| - Interactive: predicts user completion and assistant response with |
| `LAGUNA_BASE_MODEL`. |
| - Interactive RL: same interactive prompt, routed to `LAGUNA_RL_MODEL` when |
| set, otherwise `LAGUNA_BASE_MODEL:LAGUNA_RL_CHECKPOINT_ID`. |
|
|
| Interactive modes add `<|silence|>` to the model-visible user turn every 500ms |
| after the user stops at a completed word boundary. The tokens are kept in the |
| conversation history sent back to the model, but hidden in the browser UI. |
|
|
| The UI reports average TTFT and average accuracy. Accuracy is scored as |
| `1 / interactive_inference_calls` per committed interactive turn: one |
| prediction is 100%, two resynthesis calls is 50%, and so on. |
|
|
| ## Required Space Secrets |
|
|
| - `PRIME_API_KEY`: Prime Intellect inference API key. |
|
|
| For a private organization Space, set `DISABLE_APP_AUTH=1` and rely on |
| Hugging Face repository permissions. If the Space is not private, also set: |
|
|
| - `ACCESS_CODES`: comma-separated or newline-separated demo access codes. |
| - `SESSION_SECRET`: required random secret used to sign auth cookies. |
|
|
| ## Optional Variables |
|
|
| - `LAGUNA_BASE_MODEL`: base Laguna model used by Non-interactive and |
| Interactive modes, defaults to `poolside/Laguna-XS.2`. |
| - `LAGUNA_RL_MODEL`: full model id for Interactive RL mode. When unset, the app |
| uses the deployed adapter |
| `poolside/Laguna-XS.2:b6dx32frg4opcixaq4jgq0py`. |
| - `LAGUNA_RL_CHECKPOINT_ID`: LoRA checkpoint id for Interactive RL mode, |
| defaulting to checkpoint `au1xd3gbqhij4dgi438jp9cg` (step 45 from |
| `anticipatory-chat-laguna-xs2-structured-stage1-easy-h0`). This value must be |
| a checkpoint id, **not** a run id like `s50...`. |
| Set this as a Space secret to swap deployed checkpoints without code changes. |
| For compatibility, the app maps the known run id `s50rbs1ixegeqszfknp8r9uf` |
| and checkpoint id `au1xd3gbqhij4dgi438jp9cg` to deployed model |
| `poolside/Laguna-XS.2:b6dx32frg4opcixaq4jgq0py`. |
| - `LAGUNA_RL_ADAPTER_ID`: legacy alias for `LAGUNA_RL_CHECKPOINT_ID`. |
| - `PRIME_MODEL`: legacy alias for `LAGUNA_RL_MODEL`. |
| - `PRIME_API_BASE_URL`: defaults to `https://api.pinference.ai/api/v1`. |
| - `PRIME_CONFIG_PATH`: optional local-dev fallback path, defaulting to |
| `~/.prime/config.json` when `PRIME_API_KEY` is not set. |
| - `DISABLE_APP_AUTH`: set to `1` for private Hugging Face org Spaces where HF |
| permissions already gate access. |
| - `MAX_TOKENS`: defaults to `512`. |
| - `MAX_HISTORY_MESSAGES`: defaults to `24`. |
| - `MAX_HISTORY_CHARS`: defaults to `12000`. |
| - `INFERENCE_TIMEOUT_SECONDS`: defaults to `60`. |
| - `SESSION_TTL_SECONDS`: defaults to `43200`. |
|
|
| ## Local Run With Prime |
|
|
| ```bash |
| cd spaces/laguna-anticipatory-demo |
| DISABLE_APP_AUTH=1 ../../.venv/bin/python -m app.main |
| ``` |
|
|
| This uses `PRIME_API_KEY` when set, otherwise it falls back to |
| `~/.prime/config.json` for local development. The real Prime path uses the |
| OpenAI Python client, matching the environment-generation tooling. |
|
|
| ## Offline UI Smoke Run |
|
|
| ```bash |
| cd spaces/laguna-anticipatory-demo |
| DISABLE_APP_AUTH=1 DEMO_OFFLINE_MODE=1 python -m app.main |
| ``` |
|
|
| Then open `http://127.0.0.1:7860`. |
| Offline mode only verifies auth, SSE, and UI behavior; it does not call Laguna. |
|
|