renminwansui1976 commited on
Commit
b2eb544
·
unverified ·
1 Parent(s): e0b8344

更新 start.sh

Browse files
Files changed (1) hide show
  1. start.sh +32 -26
start.sh CHANGED
@@ -1,52 +1,58 @@
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
- # ── 1. Validate required LiteLLM vars ─────────────────────────────────────────
5
- : "${LITELLM_API_KEY:?LITELLM_API_KEY is required}"
6
- : "${LITELLM_MODEL:?LITELLM_MODEL is required (e.g. openai/gpt-4o or anthropic/claude-3-5-sonnet-20241022)}"
7
 
8
- # ── 2. Generate LiteLLM proxy config ──────────────────────────────────────────
9
  LITELLM_CONFIG=/tmp/litellm_config.yaml
10
 
11
- cat > "$LITELLM_CONFIG" << YAML
12
- model_list:
13
- - model_name: default
14
- litellm_params:
15
- model: "${LITELLM_MODEL}"
16
- api_key: "${LITELLM_API_KEY}"
17
- $(if [ -n "${LITELLM_API_BASE:-}" ]; then echo " api_base: \"${LITELLM_API_BASE}\""; fi)
18
-
19
- litellm_settings:
20
- drop_params: true
21
- num_retries: 3
22
- request_timeout: 120
23
- YAML
24
-
25
- echo "[start.sh] LiteLLM config written to $LITELLM_CONFIG"
 
 
 
26
 
27
  # ── 3. Start LiteLLM proxy in the background ──────────────────────────────────
28
  litellm --config "$LITELLM_CONFIG" --port 4000 --host 127.0.0.1 &
29
  LITELLM_PID=$!
30
  echo "[start.sh] LiteLLM proxy started (pid $LITELLM_PID)"
31
 
32
- # ── 4. Wait for LiteLLM to be healthy ─────────────────────────────────────────
 
 
 
33
  MAX_WAIT=30
34
  WAITED=0
35
  until curl -sf http://127.0.0.1:4000/health/liveliness > /dev/null 2>&1; do
36
  if [ "$WAITED" -ge "$MAX_WAIT" ]; then
37
- echo "[start.sh] ERROR: LiteLLM did not become healthy within ${MAX_WAIT}s"
38
  exit 1
39
  fi
40
  sleep 1
41
  WAITED=$((WAITED + 1))
42
  done
43
- echo "[start.sh] LiteLLM is healthy after ${WAITED}s"
44
 
45
- # ── 5. Start OpenClaw pointing to the LiteLLM proxy ──────────────────────────
46
- # We expose LiteLLM as an OpenAI-compatible endpoint.
47
- # OPENCLAW_DEFAULT_MODEL must match the model_name we set above ("default").
48
  exec env \
49
  OPENCLAW_DEFAULT_MODEL=default \
50
  OPENAI_API_KEY=litellm-proxy \
51
  OPENAI_BASE_URL=http://127.0.0.1:4000 \
52
- node openclaw.mjs gateway --allow-unconfigured
 
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
+ {
12
+ echo "model_list:"
13
+ echo " - model_name: default"
14
+ echo " litellm_params:"
15
+ echo " model: \"${LITELLM_MODEL}\""
16
+ echo " api_key: \"${LITELLM_API_KEY}\""
17
+ if [ -n "${LITELLM_API_BASE:-}" ]; then
18
+ echo " api_base: \"${LITELLM_API_BASE}\""
19
+ fi
20
+ echo ""
21
+ echo "litellm_settings:"
22
+ echo " drop_params: true"
23
+ echo " num_retries: 3"
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
47
  WAITED=$((WAITED + 1))
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 \
57
  OPENAI_BASE_URL=http://127.0.0.1:4000 \
58
+ openclaw gateway --allow-unconfigured