- Add multi-provider LLM architecture supporting OpenRouter, OpenAI, Gemini, and custom providers - Implement global LLM on/off switch with default DISABLED state for cost protection - Add per-character LLM configuration with provider-specific models and settings - Create performance-optimized caching system for LLM enabled status checks - Add API key validation before enabling LLM providers to prevent broken configurations - Implement audit logging for all LLM enable/disable actions for cost accountability - Create comprehensive admin UI with prominent cost warnings and confirmation dialogs - Add visual indicators in character list for custom AI model configurations - Build character-specific LLM client system with global fallback mechanism - Add database schema support for per-character LLM settings - Implement graceful fallback responses when LLM is globally disabled - Create provider testing and validation system for reliable connections
67 lines
1.5 KiB
Docker
67 lines
1.5 KiB
Docker
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
gcc \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Node.js for frontend build
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \
|
|
&& apt-get install -y nodejs
|
|
|
|
# Copy requirements first for better caching
|
|
COPY requirements-admin.txt .
|
|
RUN pip install --no-cache-dir -r requirements-admin.txt
|
|
|
|
# Install additional dependencies needed for production
|
|
RUN pip install --no-cache-dir asyncpg python-dotenv
|
|
|
|
# Copy application code
|
|
COPY src/ ./src/
|
|
COPY config/ ./config/
|
|
COPY migrations/ ./migrations/
|
|
COPY alembic.ini ./
|
|
|
|
# Build frontend
|
|
COPY admin-frontend/package*.json ./admin-frontend/
|
|
WORKDIR /app/admin-frontend
|
|
|
|
# Install dependencies first (better caching)
|
|
RUN npm install --silent
|
|
|
|
# Copy frontend source code
|
|
COPY admin-frontend/ ./
|
|
|
|
# Build with increased memory for Node.js and disable optimization
|
|
ENV NODE_OPTIONS="--max-old-space-size=4096"
|
|
ENV GENERATE_SOURCEMAP=false
|
|
ENV DISABLE_ESLINT_PLUGIN=true
|
|
ENV CI=false
|
|
ENV REACT_APP_API_URL=""
|
|
ENV PUBLIC_URL="/admin"
|
|
ENV TSC_COMPILE_ON_ERROR=true
|
|
ENV ESLINT_NO_DEV_ERRORS=true
|
|
|
|
# Build React app
|
|
RUN npm run build
|
|
|
|
# Verify build output
|
|
RUN ls -la build/ && test -f build/index.html
|
|
|
|
# Back to main directory
|
|
WORKDIR /app
|
|
|
|
# Create logs directory
|
|
RUN mkdir -p logs
|
|
|
|
# Set Python path
|
|
ENV PYTHONPATH=/app/src
|
|
|
|
# Expose admin port
|
|
EXPOSE 8294
|
|
|
|
# Run the admin interface
|
|
CMD ["python", "-m", "src.admin.app"] |