PennGPT is an intelligent AI assistant specifically designed for the University of Pennsylvania community. Built with cutting-edge RAG (Retrieval-Augmented Generation) technology, it provides accurate, contextual information about Penn academics, student life, events, clubs, and campus resources.
- π― Penn-Specific Knowledge: Comprehensive information about UPenn academics, clubs, events, and resources
- π¬ Natural Conversations: Chat-based interface with contextual understanding
- π Smart Search: Vector-powered semantic search across Penn's knowledge base
- π± Responsive Design: Modern, mobile-friendly React frontend
- π Secure & Fast: SSL-encrypted with optimized performance
- π Citations: Provides sources for all information shared
| Service | URL | Status |
|---|---|---|
| Main Application | https://penngpt.com | π’ Live |
| Secondary Domain | https://penngpt.velroi.com | π’ Live |
| API Endpoint | https://api.penngpt.velroi.com | π’ Live |
| Health Check | /api/health | π’ Active |
graph TB
A[π€ User] --> B[π HTTPS Frontend<br/>penngpt.com]
B --> C[π Nginx Reverse Proxy]
C --> D[βοΈ React SPA<br/>Vite + TypeScript]
C --> E[π API Proxy<br/>/api/*]
E --> F[π FastAPI Backend<br/>Python + Uvicorn]
F --> G[π§ Azure OpenAI<br/>GPT-4 + Embeddings]
F --> H[π Milvus Vector DB<br/>Semantic Search]
F --> I[π Knowledge Base<br/>Penn Data + Clubs]
style A fill:#e1f5fe
style B fill:#e8f5e8
style G fill:#fff3e0
style H fill:#f3e5f5
style I fill:#e0f2f1
Frontend:
- βοΈ React 18.3 with TypeScript
- β‘ Vite for fast development and building
- π¨ Tailwind CSS for modern styling
- π± Responsive Design with mobile-first approach
- π Zustand for state management
Backend:
- π Python FastAPI for high-performance APIs
- π§ Azure OpenAI (GPT-4, text-embedding-3-large)
- π Milvus vector database for semantic search
- π Async/Await for concurrent processing
- π RAG Pipeline for contextual responses
Infrastructure:
- π Nginx with SSL termination
- π Let's Encrypt SSL certificates
- βοΈ AWS EC2 hosting
- π DNS with multiple domain support
- π Auto-renewal for certificates
Simply visit penngpt.com and start chatting! Ask about:
- π Academics: Course information, requirements, schedules
- π Student Life: Clubs, organizations, events
- ποΈ Campus Resources: Libraries, dining, facilities
- π Events: Upcoming activities and deadlines
- βΉοΈ General Info: Penn policies, contacts, directions
Base URL: https://penngpt.com/api/ or https://api.penngpt.velroi.com/
curl -X POST https://penngpt.com/api/chat \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Tell me about Penn clubs"}
],
"top_k": 5
}'curl https://penngpt.com/api/healthResponse Format:
{
"answer": "Detailed response with Penn-specific information...",
"citations": [
{
"title": "Source Title",
"url": "https://example.com",
"excerpt": "Relevant excerpt..."
}
],
"session_id": "unique-session-identifier"
}cd frontend/frontend/client
npm install
npm run dev # Development server on :5173
npm run build # Production build# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Configure Azure OpenAI credentials
# Run development server
python -m uvicorn chat_assistant_api:app --reload --host 127.0.0.1 --port 8010# Azure OpenAI Configuration
AZURE_OPENAI_API_KEY=your_api_key_here
AZURE_OPENAI_ENDPOINT=your_endpoint_here
AZURE_OPENAI_API_VERSION=2024-12-01-preview
AZURE_OPENAI_MODEL=gpt-4
AZURE_OPENAI_EMBEDDING_MODEL=text-embedding-3-large
# Vector Database
MILVUS_DB_PATH=./milvus_lite.db
COLLECTION_NAME=web_documents- π‘οΈ SSL/TLS Encryption: All communications encrypted with Let's Encrypt certificates
- π Security Headers: HSTS, CSP, XSS protection, and more
- π« CORS Protection: Properly configured cross-origin policies
- π Auto-Renewal: Certificates automatically renewed
- π Rate Limiting: API endpoint protection
- π Input Validation: Secure request processing
- π§ Intelligent Responses: Context-aware answers using RAG architecture
- π Comprehensive Knowledge: 1,399+ Penn clubs and extensive university data
- π Semantic Search: Vector-based similarity matching for relevant information
- π¬ Conversational Memory: Maintains context throughout chat sessions
- π± Mobile Optimized: Responsive design works on all devices
- β‘ Fast Performance: Optimized for quick response times
- π Real-time Processing: Async backend for concurrent request handling
- π Scalable Architecture: Designed to handle multiple users
- π¨ Modern UI/UX: Clean, intuitive chat interface
- π Citation System: Provides sources for all information
- π Vector Indexing: Efficient similarity search across knowledge base
- π οΈ API-First Design: RESTful API for integration possibilities
| Metric | Value |
|---|---|
| Penn Clubs Indexed | 1,399+ |
| Knowledge Base Entries | 10,000+ |
| Response Time | < 2 seconds |
| SSL Certificate Grade | A+ |
| Uptime | 99.9% |
| Supported Domains | 3 |
We welcome contributions to make PennGPT even better!
- π΄ Fork the repository
- πΏ Create a feature branch (
git checkout -b feature/amazing-feature) - πΎ Commit your changes (
git commit -m 'Add amazing feature') - π€ Push to the branch (
git push origin feature/amazing-feature) - π Open a Pull Request
| Method | Endpoint | Description |
|---|---|---|
POST |
/chat |
Main chat interface |
GET |
/health |
Service health check |
GET |
/docs |
Interactive API documentation |
Chat Endpoint:
messages: Array of conversation messagestop_k: Number of knowledge base results to retrieve (default: 5)session_id: Optional session identifier for conversation tracking
- π Website: penngpt.com
- π§ API: api.penngpt.velroi.com
- π§ Contact: [email protected]
- π Issues: GitHub Issues