#!/usr/bin/env bash # 作业12 · 步骤1:单次 curl /v1/chat/completions,记录延迟 # 用法: # bash hw12_01_单次延迟.sh # bash hw12_01_单次延迟.sh --via-higress # ROUNDS=5 bash hw12_01_单次延迟.sh set -euo pipefail VIA_HIGRESS=0 for a in "$@"; do [ "$a" = "--via-higress" ] && VIA_HIGRESS=1 done ROUNDS="${ROUNDS:-3}" MODEL="${MODEL:-qwen3.6-27b}" KEY="${LITELLM_MASTER_KEY:-sk-litellm-bocheng-207}" OUT_DIR="${HW12_OUT:-/opt/workbuddy/data/homework12}" mkdir -p "$OUT_DIR" if [ "$VIA_HIGRESS" = "1" ]; then URL="${HIGRESS_LLM_BASE:-http://192.168.110.207:18080/llm/v1}/chat/completions" else URL="${LITELLM_BASE:-http://192.168.110.207:4000}/v1/chat/completions" fi BODY="$(mktemp)" trap 'rm -f "$BODY"' EXIT cat >"$BODY" <"$CSV" echo "[INFO] URL=$URL" echo "[INFO] ROUNDS=$ROUNDS 结果 → $CSV" echo for i in $(seq 1 "$ROUNDS"); do TMP_HDR="$(mktemp)" TMP_BODY="$(mktemp)" # curl -w 输出 timing;响应体另存 CODE_TIME="$( curl -sS -o "$TMP_BODY" -D "$TMP_HDR" \ -w "%{http_code} %{time_total}" \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ --data-binary @"$BODY" \ --max-time 180 \ "$URL" || echo "000 0" )" CODE="$(echo "$CODE_TIME" | awk '{print $1}')" T="$(echo "$CODE_TIME" | awk '{print $2}')" SNIP="$(python3 - <>"$CSV" rm -f "$TMP_HDR" "$TMP_BODY" done echo echo "[OK] CSV=$CSV" python3 - <