Spaces:
Sleeping
Sleeping
| set -euo pipefail | |
| ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)" | |
| cd "$ROOT_DIR" | |
| CONFIG_PATH="${1:-config.json}" | |
| SAMPLE_ID="${2:-capture-$(date -u +%Y%m%dT%H%M%SZ)}" | |
| QUESTION="${3:-广州天气}" | |
| MODEL="${4:-deepseek-v4-pro-search}" | |
| API_KEY="${5:-}" | |
| ADMIN_KEY="${DS2API_ADMIN_KEY:-admin}" | |
| if [[ -z "$API_KEY" ]]; then | |
| API_KEY="$(python3 - <<'PY' "$CONFIG_PATH" | |
| import json,sys | |
| cfg=json.load(open(sys.argv[1])) | |
| keys=cfg.get('keys') or [] | |
| print(keys[0] if keys else '') | |
| PY | |
| )" | |
| fi | |
| if [[ -z "$API_KEY" ]]; then | |
| echo "[capture] missing API key (pass as arg5 or set config.keys[0])" >&2 | |
| exit 1 | |
| fi | |
| HDR_FILE="$(mktemp)" | |
| BODY_FILE="$(mktemp)" | |
| cleanup() { | |
| rm -f "$HDR_FILE" "$BODY_FILE" | |
| pkill -f "cmd/ds2api" >/dev/null 2>&1 || true | |
| } | |
| trap cleanup EXIT | |
| DS2API_CONFIG_PATH="$CONFIG_PATH" \ | |
| DS2API_ADMIN_KEY="$ADMIN_KEY" \ | |
| DS2API_DEV_PACKET_CAPTURE=1 \ | |
| DS2API_DEV_PACKET_CAPTURE_LIMIT=20 \ | |
| go run ./cmd/ds2api >/tmp/ds2api_capture_server.log 2>&1 & | |
| for _ in $(seq 1 120); do | |
| if curl -sSf http://127.0.0.1:5001/healthz >/dev/null 2>&1; then | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| REQUEST_BODY="$(python3 - <<'PY' "$SAMPLE_ID" "$MODEL" "$QUESTION" "$API_KEY" | |
| import json,sys | |
| sample_id,model,question,api_key=sys.argv[1:5] | |
| payload={ | |
| 'sample_id': sample_id, | |
| 'api_key': api_key, | |
| 'model': model, | |
| 'stream': True, | |
| 'messages': [{'role': 'user', 'content': question}], | |
| } | |
| print(json.dumps(payload, ensure_ascii=False)) | |
| PY | |
| )" | |
| curl -sS \ | |
| -D "$HDR_FILE" \ | |
| http://127.0.0.1:5001/admin/dev/raw-samples/capture \ | |
| -H "Authorization: Bearer ${ADMIN_KEY}" \ | |
| -H 'Content-Type: application/json' \ | |
| --data-binary "${REQUEST_BODY}" \ | |
| >"$BODY_FILE" | |
| SAMPLE_DIR="$(python3 - <<'PY' "$HDR_FILE" | |
| import sys,pathlib | |
| headers=pathlib.Path(sys.argv[1]).read_text().splitlines() | |
| for line in headers: | |
| if line.lower().startswith('x-ds2-sample-dir:'): | |
| print(line.split(':',1)[1].strip()) | |
| raise SystemExit | |
| print('') | |
| PY | |
| )" | |
| SAMPLE_ID_HEADER="$(python3 - <<'PY' "$HDR_FILE" | |
| import sys,pathlib | |
| headers=pathlib.Path(sys.argv[1]).read_text().splitlines() | |
| for line in headers: | |
| if line.lower().startswith('x-ds2-sample-id:'): | |
| print(line.split(':',1)[1].strip()) | |
| raise SystemExit | |
| print('') | |
| PY | |
| )" | |
| echo "[capture] sample_id=${SAMPLE_ID_HEADER:-$SAMPLE_ID}" | |
| echo "[capture] sample_dir=${SAMPLE_DIR:-tests/raw_stream_samples/$SAMPLE_ID}" | |
| cat "$BODY_FILE" | |