Configuration
All course-specific settings are defined in a single CourseConfig dataclass.
This is the only thing you need to customize per course — the rest of aita-core
is fully generic.
Field Reference
Course Identity
Field |
Type |
Description |
|---|---|---|
|
|
Short identifier (e.g., |
|
|
Full display name (e.g., |
|
|
Sidebar title (e.g., |
|
|
Markdown text shown on the login page below the title. |
|
|
The LLM system prompt. This is the primary mechanism for pedagogical guardrails. |
Week & Topic Mappings
These fields control week-aware behavior: the chatbot won’t discuss topics from future weeks, and content is filtered during RAG retrieval.
Field |
Type |
Description |
|---|---|---|
|
|
Maps week number (1-15) to list of topic names covered that week. Used to build the system prompt’s topic awareness. |
|
|
Maps the number prefix in slide/handout filenames (e.g., |
|
|
Maps homework number to the week it’s assigned. Used for week-filtering during retrieval and for the “current homework” injection feature. |
|
|
Maps lab number to the week it belongs to. |
|
|
Maps study guide / quiz names to week. Matched by filename prefix. |
|
|
Example prompts shown as clickable buttons when chat is empty, organized by week. 4 prompts per week works well. |
Textbook (Optional)
Field |
Type |
Description |
|---|---|---|
|
|
Base URL for a Wikibook (e.g.,
|
|
|
Maps chapter URL slugs to week numbers (e.g.,
|
Paths
Field |
Type |
Description |
|---|---|---|
|
|
Root directory of the course project. |
|
|
Directory containing course PDFs and LaTeX files. |
|
|
Where the FAISS vector index is stored. |
|
|
Where document records ( |
|
|
Timestamped backups of previous FAISS indices. |
|
|
Where the SQLite database is stored. In Docker, this is
typically a mounted volume (e.g., |
Authentication
Field |
Type |
Description |
|---|---|---|
|
|
Password for the admin dashboard. |
|
|
Name of the JWT auth cookie (e.g., |
|
|
Secret key for signing JWT cookies. Set via |
|
|
OAuth redirect URI (must match Google Cloud Console config). |
|
|
Path to the Google OAuth client secret JSON file. Leave empty to disable Google Auth (falls back to student ID login). |
LLM & Embedding Settings
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
OpenAI model used for chat completions. |
|
|
|
LLM temperature. 0 gives deterministic, factual responses. |
|
|
|
OpenAI model for generating embeddings. |
|
|
|
Embedding vector dimensions. |
|
|
|
Characters per text chunk during ingestion. |
|
|
|
Overlap between consecutive chunks. |
|
|
|
Number of chunks to retrieve per query. |
Config Overrides (Admin Panel)
Settings can be modified at runtime through the Course Settings tab in the
admin dashboard. Changes are saved to config_overrides.json in the
data_dir and automatically loaded on startup.
Fields that can be edited at runtime:
Course identity (name, description, system prompt)
LLM settings (model, temperature, retrieval_k)
Week schedule and topic mappings
Example prompts
Textbook URL and chapter mappings
Note
Changes to embedding_model, chunk_size, and chunk_overlap
require re-running the document ingestion pipeline to take effect.
Computed Properties
CourseConfig provides several computed properties:
google_auth_enabled—Trueif a Google client secret file is set.week_to_hw— Inverse ofhw_num_to_week: maps week to"HWN"string.get_topics_covered(week)— Returns list of topics covered up to the given week.get_topics_not_covered(week)— Returns list of topics not yet covered.