Spaces:
Running
Running
更新 start.sh
Browse files
start.sh
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
#!/usr/bin/env bash
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
-
# ── 1. Validate required
|
| 5 |
-
: "${LITELLM_API_KEY:?LITELLM_API_KEY
|
| 6 |
-
: "${LITELLM_MODEL:?LITELLM_MODEL
|
| 7 |
|
| 8 |
-
# ── 2.
|
| 9 |
LITELLM_CONFIG=/tmp/litellm_config.yaml
|
| 10 |
|
| 11 |
{
|
|
@@ -24,23 +24,23 @@ LITELLM_CONFIG=/tmp/litellm_config.yaml
|
|
| 24 |
echo " request_timeout: 120"
|
| 25 |
} > "$LITELLM_CONFIG"
|
| 26 |
|
| 27 |
-
echo "[start.sh] LiteLLM config
|
| 28 |
cat "$LITELLM_CONFIG"
|
| 29 |
|
| 30 |
# ── 3. Start LiteLLM proxy in the background ──────────────────────────────────
|
| 31 |
litellm --config "$LITELLM_CONFIG" --port 4000 --host 127.0.0.1 &
|
| 32 |
LITELLM_PID=$!
|
| 33 |
-
echo "[start.sh] LiteLLM proxy started (pid
|
| 34 |
|
| 35 |
-
#
|
| 36 |
-
trap 'kill $LITELLM_PID 2>/dev/null || true' EXIT TERM INT
|
| 37 |
|
| 38 |
-
# ── 4. Wait for LiteLLM to
|
| 39 |
-
MAX_WAIT=
|
| 40 |
WAITED=0
|
| 41 |
until curl -sf http://127.0.0.1:4000/health/liveliness > /dev/null 2>&1; do
|
| 42 |
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
|
| 43 |
-
echo "[start.sh] ERROR: LiteLLM
|
| 44 |
exit 1
|
| 45 |
fi
|
| 46 |
sleep 1
|
|
@@ -48,9 +48,10 @@ until curl -sf http://127.0.0.1:4000/health/liveliness > /dev/null 2>&1; do
|
|
| 48 |
done
|
| 49 |
echo "[start.sh] LiteLLM healthy after ${WAITED}s"
|
| 50 |
|
| 51 |
-
# ── 5.
|
| 52 |
-
#
|
| 53 |
-
# OPENCLAW_DEFAULT_MODEL
|
|
|
|
| 54 |
exec env \
|
| 55 |
OPENCLAW_DEFAULT_MODEL=default \
|
| 56 |
OPENAI_API_KEY=litellm-proxy \
|
|
|
|
| 1 |
#!/usr/bin/env bash
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
+
# ── 1. Validate required variables ────────────────────────────────────────────
|
| 5 |
+
: "${LITELLM_API_KEY:?Secret LITELLM_API_KEY is required}"
|
| 6 |
+
: "${LITELLM_MODEL:?Secret LITELLM_MODEL is required (e.g. openai/gpt-4o or anthropic/claude-3-5-sonnet-20241022)}"
|
| 7 |
|
| 8 |
+
# ── 2. Write LiteLLM proxy config ─────────────────────────────────────────────
|
| 9 |
LITELLM_CONFIG=/tmp/litellm_config.yaml
|
| 10 |
|
| 11 |
{
|
|
|
|
| 24 |
echo " request_timeout: 120"
|
| 25 |
} > "$LITELLM_CONFIG"
|
| 26 |
|
| 27 |
+
echo "[start.sh] LiteLLM config:"
|
| 28 |
cat "$LITELLM_CONFIG"
|
| 29 |
|
| 30 |
# ── 3. Start LiteLLM proxy in the background ──────────────────────────────────
|
| 31 |
litellm --config "$LITELLM_CONFIG" --port 4000 --host 127.0.0.1 &
|
| 32 |
LITELLM_PID=$!
|
| 33 |
+
echo "[start.sh] LiteLLM proxy started (pid=$LITELLM_PID)"
|
| 34 |
|
| 35 |
+
# Kill LiteLLM on any exit
|
| 36 |
+
trap 'echo "[start.sh] shutting down LiteLLM"; kill "$LITELLM_PID" 2>/dev/null || true' EXIT TERM INT
|
| 37 |
|
| 38 |
+
# ── 4. Wait for LiteLLM to be healthy (max 60 s) ─────────────────────────────
|
| 39 |
+
MAX_WAIT=60
|
| 40 |
WAITED=0
|
| 41 |
until curl -sf http://127.0.0.1:4000/health/liveliness > /dev/null 2>&1; do
|
| 42 |
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
|
| 43 |
+
echo "[start.sh] ERROR: LiteLLM not healthy after ${MAX_WAIT}s"
|
| 44 |
exit 1
|
| 45 |
fi
|
| 46 |
sleep 1
|
|
|
|
| 48 |
done
|
| 49 |
echo "[start.sh] LiteLLM healthy after ${WAITED}s"
|
| 50 |
|
| 51 |
+
# ── 5. Start OpenClaw gateway pointing at LiteLLM ─────────────────────────────
|
| 52 |
+
# OPENAI_API_KEY / OPENAI_BASE_URL: tell OpenClaw to use LiteLLM as its backend.
|
| 53 |
+
# OPENCLAW_DEFAULT_MODEL=default: matches the model_name in litellm_config.yaml.
|
| 54 |
+
# OPENCLAW_API_PORT is already set to 7860 in the Dockerfile ENV.
|
| 55 |
exec env \
|
| 56 |
OPENCLAW_DEFAULT_MODEL=default \
|
| 57 |
OPENAI_API_KEY=litellm-proxy \
|