feat: Add Gradio UI apps for AI services

- embeddings.py: BGE embeddings demo with similarity
- stt.py: Whisper speech-to-text demo
- tts.py: XTTS text-to-speech demo
- theme.py: Shared DaviesTechLabs Gradio theme
- K8s deployments for each app
This commit is contained in:
2026-02-01 20:45:10 -05:00
parent 8f5de96130
commit 1f833e0124
11 changed files with 1733 additions and 1 deletions

95
embeddings.yaml Normal file
View File

@@ -0,0 +1,95 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: embeddings-ui
namespace: ai-ml
labels:
app: embeddings
component: demo-ui
spec:
replicas: 1
selector:
matchLabels:
app: embeddings
template:
metadata:
labels:
app: embeddings
component: demo-ui
spec:
containers:
- name: gradio
image: ghcr.io/billy-davies-2/llm-apps:v2-202601271655
imagePullPolicy: Always
command: ["python", "embeddings_demo.py"]
ports:
- containerPort: 7860
name: http
protocol: TCP
env:
- name: EMBEDDINGS_URL
value: "http://embeddings-predictor.ai-ml.svc.cluster.local"
- name: MLFLOW_TRACKING_URI
value: "http://mlflow.mlflow.svc.cluster.local:80"
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /
port: 7860
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /
port: 7860
initialDelaySeconds: 5
periodSeconds: 10
imagePullSecrets:
- name: ghcr-registry
---
apiVersion: v1
kind: Service
metadata:
name: embeddings-ui
namespace: ai-ml
labels:
app: embeddings
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 7860
protocol: TCP
name: http
selector:
app: embeddings
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: embeddings-ui
namespace: ai-ml
annotations:
external-dns.alpha.kubernetes.io/hostname: embeddings-ui.lab.daviestechlabs.io
spec:
parentRefs:
- name: envoy-internal
namespace: network
sectionName: https
hostnames:
- embeddings-ui.lab.daviestechlabs.io
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: embeddings-ui
port: 80