AI chatbot for applicants and students – get instant answers about studies, teaching, and campus life.
(Under development)
ask.UOS is designed to provide an interactive interface for users to communicate with a chatbot and access up-to-date university information. It leverages the LangChain
library for natural language processing and Streamlit
for the web interface. The system supports both German and English, and can be easily extended to other languages.
ask.UOS can answer a wide range of general questions about university life in just a few moments, including inquiries about the application process, academic requirements, and various study programs. The chatbot enables users to receive quick support in a conversational manner, without having to wait for office hours or search for the right contact person—available 24/7. For university departments such as student advisory services, the chatbot also helps reduce the volume of support requests.
- Interactive chatbot interface for students and applicants
- Content summarization and document insights
- PDF reading and processing
- Web scraping and data extraction
- Multilingual support (German and English)
- Customizable prompts and responses
- Vector database (Milvus) for efficient unstructured data retrieval
- Docker and Docker Compose
- (For development) See
requirements.txt
- (For production) See
requirements.prod.txt
-
Clone the repository
git clone <your-repo-url> cd <your-repo>
-
Create and configure environment file
cp .env.dev-example .env.dev # Edit .env.dev as needed
-
Start the application
docker compose up -d
-
Access the chatbot
Open http://localhost:8501/ in your browser.
Note: If you run the application without Docker, you must set up a Milvus server manually.
-
Create and configure environment file
cp .env.prod-example .env.prod # Edit .env.prod as needed
-
Set up Nginx configuration (optional, for reverse proxy)
cp ./nginx/nginx.conf.example nginx.conf # Edit nginx.conf as needed
-
Start the application in production mode
docker compose -f docker-compose.prod.yml up -d
This application uses a configuration file (config.yaml
) to manage its settings. The configuration is validated at startup using Pydantic
, ensuring all required fields are present and correctly formatted.
-
Modify the example file as needed for your environment.
cp config_example.yamo config.yaml # Edit config.yaml as needed
- A vector database (Milvus) is used for indexing and storage of unstructured data (e.g., pdf files).
- Milvus is automatically set up via Docker Compose and does not require manual installation.
- If you are already running a Milvus instance, you can connect ask.UOS with it. See
config_example.yaml
ask.UOS supports both German and English, allowing users to switch languages seamlessly. The translation mechanism is implemented using Python’s gettext
library.
-
Translation Setup
- The system generates a
base.mo
file fromlocale/de/LC_MESSAGES/base.po
(automatically during Docker build). - The project sets up German translation using
gettext.translation
and provides a function for dynamic text translation.
- The system generates a
-
Language Initialization
- Streamlit presents a radio button for language selection (default: German).
- The selected language is stored in the session state and query parameters.
-
Usage in Streamlit
- Throughout the app, the translation function is used to display text in the user’s chosen language.