|
|
||
|---|---|---|
| .. | ||
| app | ||
| prompts | ||
| scripts | ||
| tests | ||
| uploads/focus-group-68af42ff19ed40daa02b0392 | ||
| .dockerignore | ||
| .DS_Store | ||
| .env.example | ||
| Dockerfile | ||
| hypercorn_config.py | ||
| logging_config.py | ||
| migrate_legacy_folders.py | ||
| MIGRATION_README.md | ||
| README.md | ||
| requirements.txt | ||
| run.py | ||
| test_asset.txt | ||
| test_image.png | ||
| test_websocket_cross_process.py | ||
Cohorta Backend
This is the Python backend for the Cohorta project. It provides API endpoints for authentication, personas, and focus groups.
Setup
- Make sure you have Python 3.8+ installed
- Create a virtual environment:
cd backend python -m venv venv - Activate the virtual environment:
- On macOS/Linux:
source venv/bin/activate - On Windows:
venv\Scripts\activate
- On macOS/Linux:
- Install dependencies:
pip install -r requirements.txt
Running the Backend
python run.py
The server will start on http://localhost:5000
API Endpoints
Authentication
POST /api/auth/login- Login with username and passwordPOST /api/auth/register- Register a new userGET /api/auth/me- Get current user profile
Personas
GET /api/personas- Get personas for current userGET /api/personas/all- Get all personasGET /api/personas/:id- Get persona by IDPOST /api/personas- Create a new personaPUT /api/personas/:id- Update a personaDELETE /api/personas/:id- Delete a personaPOST /api/personas/batch- Create multiple personas
Focus Groups
GET /api/focus-groups- Get focus groups for current userGET /api/focus-groups/all- Get all focus groupsGET /api/focus-groups/:id- Get focus group by IDPOST /api/focus-groups- Create a new focus groupPUT /api/focus-groups/:id- Update a focus groupDELETE /api/focus-groups/:id- Delete a focus groupPOST /api/focus-groups/:id/participants- Add participant to focus groupDELETE /api/focus-groups/:id/participants/:personaId- Remove participant from focus groupGET /api/focus-groups/:id/messages- Get messages for a focus groupPOST /api/focus-groups/:id/messages- Add a message to a focus group
AI Personas
POST /api/ai-personas/generate- Generate a synthetic persona using AIPOST /api/ai-personas/generate-and-save- Generate and save a synthetic personaPOST /api/ai-personas/batch-generate- Generate multiple synthetic personasPOST /api/ai-personas/batch-generate-and-save- Generate and save multiple synthetic personas
Focus Group AI
POST /api/focus-group-ai/generate-response- Generate an AI response from a persona in a focus group discussion
AI Response Generation Example
Request Body:
{
"focus_group_id": "focus_group_id",
"persona_id": "persona_id",
"current_topic": "What do you think about this product?",
"temperature": 0.7 // Optional, controls randomness (0.0 to 1.0)
}
Response:
{
"message": "Response generated successfully",
"response": "I find the product quite interesting. As someone who values efficiency, I appreciate the intuitive interface and how it streamlines my workflow. However, I'm concerned about the price point, which seems high compared to similar options on the market.",
"message_id": "message_id"
}
How AI Response Generation Works
The system generates realistic persona responses by:
- Using the persona's demographic details, personality traits, goals, and frustrations
- Including the full discussion guide text
- Taking up to 50 most recent conversation messages for context
- Processing the current topic/question
- Generating a response in the persona's authentic voice
The current_topic parameter can be any text: a moderator question, a specific prompt, or a summary of discussion points. The AI will respond as if the persona is directly addressing this topic.
Default User
A default user with the following credentials is automatically created:
- Username: user
- Password: pass
- Role: admin