Files
apress/deploy/workshop-llm/litellm-config.yaml
T
Omar SobhandClaude Opus 4.8 766f2946af chore: add workshop-llm LiteLLM proxy deploy + ignore vendored/generated files
Commits the workshop inference pool (LiteLLM → boards: pooled coding plans,
per-attendee virtual keys, failover) — config + docs only, no secrets. Ignores
the vendored Uno-QClaw reference repo and the generated qr-sheet.html.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-16 11:42:05 -07:00

78 lines
2.8 KiB
YAML

# LiteLLM proxy — workshop inference pool for ZeroClaw / Uno Q boards.
#
# One OpenAI-compatible endpoint the boards talk to. It pools your paid coding
# plans (Kimi + GLM, load-balanced), overflows to Groq → Gemini on saturation,
# and keeps your Claude subscription on a separate, restricted model name.
#
# Board-facing model names:
# workshop → Kimi K2 + GLM (load-balanced) → Groq → Gemini fallback
# instructor-claude → your Claude subscription via claude_shim
# RESTRICTED: attendee virtual keys must NOT be granted
# this model (Anthropic ToS — see README). Instructor key
# only.
#
# Model ids below are examples — verify against your plan's current model names
# (Kimi/GLM rev them often) before the event.
model_list:
# ── Backbone: pooled coding plans (same model_name ⇒ load-balanced) ──
- model_name: workshop
litellm_params:
model: openai/kimi-k2.7-code
api_base: https://api.moonshot.ai/v1
api_key: os.environ/MOONSHOT_API_KEY
rpm: 1500 # Kimi allows ~30 concurrent; leave headroom
model_info:
id: kimi-workshop
- model_name: workshop
litellm_params:
model: openai/glm-4.6
api_base: https://api.z.ai/api/paas/v4 # coding plan: /api/coding/paas/v4
api_key: os.environ/ZAI_API_KEY
model_info:
id: glm-workshop
# ── Overflow / fallback tier (also load-balanced under one name) ──
- model_name: workshop-overflow
litellm_params:
model: groq/llama-3.3-70b-versatile
api_key: os.environ/GROQ_API_KEY
model_info:
id: groq-overflow
- model_name: workshop-overflow
litellm_params:
model: gemini/gemini-2.5-flash
api_key: os.environ/GEMINI_API_KEY
model_info:
id: gemini-overflow
# ── Instructor only: Claude subscription via the claude_shim on the host ──
# Do NOT list this model on any attendee key. See README "Terms boundary".
- model_name: instructor-claude
litellm_params:
model: openai/sonnet
api_base: os.environ/CLAUDE_SHIM_URL # e.g. http://host.docker.internal:8090/v1
api_key: os.environ/CLAUDE_SHIM_KEY # any non-empty string; the shim ignores it
model_info:
id: claude-instructor
router_settings:
routing_strategy: simple-shuffle # balance the two "workshop" deployments
num_retries: 2
timeout: 120
allowed_fails: 2
cooldown_time: 30
fallbacks:
- workshop: ["workshop-overflow"] # Kimi/GLM exhausted → Groq/Gemini
litellm_settings:
drop_params: true # tolerate per-provider param differences
request_timeout: 120
set_verbose: false
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
database_url: os.environ/DATABASE_URL # Postgres → virtual keys, budgets, spend