renminwansui1976 commited on
Commit
6fe25e1
·
unverified ·
1 Parent(s): e8d0479

更新 start.sh

Browse files
Files changed (1) hide show
  1. start.sh +15 -14
start.sh CHANGED
@@ -1,11 +1,11 @@
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
- # ── 1. Validate required LiteLLM variables ────────────────────────────────────
5
- : "${LITELLM_API_KEY:?LITELLM_API_KEY secret is required}"
6
- : "${LITELLM_MODEL:?LITELLM_MODEL secret is required (e.g. openai/gpt-4o)}"
7
 
8
- # ── 2. Generate LiteLLM proxy config dynamically ──────────────────────────────
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 written:"
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
- # Forward SIGTERM to LiteLLM when we exit
36
- trap 'kill $LITELLM_PID 2>/dev/null || true' EXIT TERM INT
37
 
38
- # ── 4. Wait for LiteLLM to become healthy (max 30 s) ─────────────────────────
39
- MAX_WAIT=30
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 did not become healthy within ${MAX_WAIT}s — aborting"
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. Launch OpenClaw gateway pointing at the LiteLLM proxy ─────────────────
52
- # We expose LiteLLM as an OpenAI-compatible endpoint on 127.0.0.1:4000.
53
- # OPENCLAW_DEFAULT_MODEL must match the model_name defined above ("default").
 
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 \