AI Gateway (LiteLLM) lokalt oppsett + collect-docs script
- LiteLLM container i docker-compose.dev.yml med healthcheck - Config med sidelinja/rutine (Gemini 2.5 Flash Lite) og sidelinja/resonering (Gemini 2.5 Flash) — flere leverandører legges til når API-nøkler er klare - collect-docs.sh samler all dokumentasjon til én fil for deling - Gitignore: server_context.md (generert output) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2100184f4e
commit
747244d078
4 changed files with 87 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -4,6 +4,9 @@
|
|||
# Scratch (testfiler, notater, midlertidig)
|
||||
.scratch/
|
||||
|
||||
# Generert kontekstfil
|
||||
scripts/server_context.md
|
||||
|
||||
# Miljovariabler
|
||||
.env.local
|
||||
.env
|
||||
|
|
|
|||
25
config/litellm/config.yaml
Normal file
25
config/litellm/config.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
model_list:
|
||||
# === sidelinja/rutine — billig, høyt volum ===
|
||||
- model_name: "sidelinja/rutine"
|
||||
litellm_params:
|
||||
model: "gemini/gemini-2.5-flash-lite"
|
||||
api_key: "os.environ/GEMINI_API_KEY"
|
||||
- model_name: "sidelinja/rutine"
|
||||
litellm_params:
|
||||
model: "gemini/gemini-2.5-flash"
|
||||
api_key: "os.environ/GEMINI_API_KEY"
|
||||
|
||||
# === sidelinja/resonering — presis, lav volum ===
|
||||
# 2.5 Flash brukes til resonering inntil vi legger til Anthropic/OpenRouter
|
||||
- model_name: "sidelinja/resonering"
|
||||
litellm_params:
|
||||
model: "gemini/gemini-2.5-flash"
|
||||
api_key: "os.environ/GEMINI_API_KEY"
|
||||
|
||||
router_settings:
|
||||
routing_strategy: "simple-shuffle"
|
||||
num_retries: 2
|
||||
timeout: 60
|
||||
|
||||
general_settings:
|
||||
master_key: "os.environ/LITELLM_MASTER_KEY"
|
||||
|
|
@ -41,6 +41,27 @@ services:
|
|||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# === AI Gateway ===
|
||||
|
||||
ai-gateway:
|
||||
image: ghcr.io/berriai/litellm:main-stable
|
||||
restart: unless-stopped
|
||||
command: --config /etc/litellm/config.yaml
|
||||
environment:
|
||||
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
|
||||
GEMINI_API_KEY: ${GEMINI_API_KEY}
|
||||
volumes:
|
||||
- ./config/litellm/config.yaml:/etc/litellm/config.yaml:ro
|
||||
ports:
|
||||
- "127.0.0.1:4000:4000"
|
||||
networks:
|
||||
- sidelinja-dev
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:4000/health/liveliness || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
|
||||
# === Whisper: Transkripsjon ===
|
||||
|
||||
whisper:
|
||||
|
|
|
|||
38
scripts/collect-docs.sh
Executable file
38
scripts/collect-docs.sh
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env bash
|
||||
# Samler all prosjektdokumentasjon til én fil for deling med AI-er etc.
|
||||
# Bruk: ./collect-docs.sh → skriver scripts/server_context.md
|
||||
# ./collect-docs.sh - → skriver til stdout (for piping)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
OUT="$SCRIPT_DIR/server_context.md"
|
||||
|
||||
files=(
|
||||
"$ROOT/ARCHITECTURE.md"
|
||||
"$ROOT/CLAUDE.md"
|
||||
"$ROOT"/docs/features/*.md
|
||||
"$ROOT"/migrations/*.sql
|
||||
)
|
||||
|
||||
collect() {
|
||||
for f in "${files[@]}"; do
|
||||
[[ -f "$f" ]] || continue
|
||||
rel="${f#"$ROOT/"}"
|
||||
echo "================================================================"
|
||||
echo "FILE: $rel"
|
||||
echo "================================================================"
|
||||
echo ""
|
||||
cat "$f"
|
||||
echo ""
|
||||
echo ""
|
||||
done
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "-" ]]; then
|
||||
collect
|
||||
else
|
||||
collect > "$OUT"
|
||||
echo "Wrote $OUT ($(wc -l < "$OUT") lines)"
|
||||
fi
|
||||
Loading…
Add table
Reference in a new issue