Spaces:
Sleeping
Sleeping
|
Download README.md from jostlebot/secondthoughts: direct link, hf CLI and curl.
- Browser
- Download file 2.7 kB
-
https://huggingface.co/spaces/jostlebot/secondthoughts/resolve/main/README.md
- Command line
-
hf download hf://spaces/jostlebot/secondthoughts/README.md
-
curl -L -o README.md https://huggingface.co/spaces/jostlebot/secondthoughts/resolve/main/README.md
2.7 kB
| title: Second Thoughts | |
| emoji: ποΈ | |
| colorFrom: red | |
| colorTo: gray | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| short_description: A private space to say the complicated thing out loud. | |
| # Second Thoughts | |
| *For exploring the complicated feelings that come with second thoughts β and practicing how to put them into words.* | |
| A support space β not a debate bot β for people sitting with complicated | |
| feelings about a vote they cast: regret, shame, confusion, grief, ambivalence. | |
| It uses reflective, motivational-interviewing-style conversation to help people | |
| process their own experience at their own pace. It does not argue politics, | |
| does not diagnose, and does not push toward any conclusion. | |
| See [`DESIGN.md`](DESIGN.md) for the conversational approach, the guardrails, | |
| and the reasoning behind the product decisions. | |
| ## Setup | |
| 1. In **Settings β Variables and secrets**, add a secret named | |
| `ANTHROPIC_API_KEY`. | |
| 2. Push this repo to the Space. It builds and launches on its own. | |
| Without the secret the UI still loads and explains that it isn't connected to a | |
| model yet β it won't crash or leak a stack trace. | |
| ## How it's built | |
| - **Docker SDK**, not Gradio. The interface is a custom mobile-first page | |
| matching the design mockup; Gradio's chat components can't take that shape | |
| without fighting the framework. | |
| - **FastAPI** serves the static page and one streaming endpoint, `POST | |
| /api/chat`. The API key stays server-side and is never sent to the browser. | |
| - **Claude Opus 5**, streaming, with the system prompt marked for prompt | |
| caching (it's long and identical on every turn, so it's cheap to reuse). | |
| ## Privacy | |
| Conversations are never persisted. History lives in the browser tab's memory | |
| and is posted back with each turn so the model has context; closing the tab | |
| ends the conversation for good. There is no database, no logging of message | |
| content, and no analytics. Client IPs are held in memory only as rate-limit | |
| counters and are never written down. | |
| If you later add logging or persistence, anonymize it and disclose it clearly | |
| to users **before** they start typing β the whole premise here is that it's | |
| safe to say something out loud. | |
| ## Limits | |
| `POST /api/chat` is metered per client: 40 messages an hour, 4,000 characters | |
| a message, and the most recent 40 turns of history. The key is server-side on | |
| a public Space, so the endpoint is open to anyone who finds it. | |
| ## Safety | |
| If someone in crisis reaches this bot, it surfaces the 988 Suicide & Crisis | |
| Lifeline (US) proactively rather than waiting to be asked. A persistent | |
| footer carries the same number. This is not a replacement for 988 or for | |
| professional mental health support, and the interface says so. | |