# 测试每个模型 for MODEL in"${MODELS[@]}"; do echo -n "${MODEL}:" # 发送请求(设置30秒超时) RESPONSE=$(curl -s -w "\n%{http_code}" --max-time 30 -X POST "${BASE_URL}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${API_KEY}" \ -d "{ \"model\": \"${MODEL}\", \"messages\": [ { \"role\": \"user\", \"content\": \"请只回复:我能用!\" } ], \"max_tokens\": 30 }" 2>&1) # 检查curl是否成功执行 if [ $? -ne 0 ]; then echo"请求失败(超时或网络错误)" continue fi # 分离响应体和状态码 HTTP_CODE=$(echo"$RESPONSE" | tail -n1) BODY=$(echo"$RESPONSE" | sed '$d') # 检查HTTP状态码 if [ "$HTTP_CODE" -eq 200 ]; then # 尝试提取模型回复内容 ifcommand -v jq &> /dev/null; then # 如果有jq,使用jq解析 CONTENT=$(echo"$BODY" | jq -r '.choices[0].message.content // empty' 2>/dev/null) else # 否则使用grep和sed CONTENT=$(echo"$BODY" | grep -o '"content":"[^"]*"' | head -1 | sed 's/"content":"//;s/"$//' | sed 's/\\n//g') fi if [ -n "$CONTENT" ]; then echo"$CONTENT" AVAILABLE_MODELS+=("$MODEL") else echo"响应成功但内容为空" fi elif [ "$HTTP_CODE" -eq 400 ]; then echo"HTTP 400 (Bad Request) - 请求格式错误" elif [ "$HTTP_CODE" -eq 429 ]; then echo"HTTP 429 (Too Many Requests) - 请求频率限制" else # 提取错误信息 ifcommand -v jq &> /dev/null; then ERROR=$(echo"$BODY" | jq -r '.message // .error // .error.message // empty' 2>/dev/null) else ERROR=$(echo"$BODY" | grep -o '"message":"[^"]*"' | head -1 | sed 's/"message":"//;s/"$//') if [ -z "$ERROR" ]; then ERROR=$(echo"$BODY" | grep -o '"error":"[^"]*"' | head -1 | sed 's/"error":"//;s/"$//') fi fi if [ -z "$ERROR" ]; then echo"HTTP ${HTTP_CODE}" else echo"$ERROR" fi fi done
echo"测试完成!" echo""
# 打印可用模型的配置信息 if [ ${#AVAILABLE_MODELS[@]} -gt 0 ]; then echo"可用模型配置信息:" echo"base_url=\"https://api-inference.modelscope.cn/v1/\"" echo"api_key=\"${API_KEY}\"" echo"" echo"可用的模型:" for MODEL in"${AVAILABLE_MODELS[@]}"; do echo"MODEL_NAME=\"${MODEL}\"" done else echo"没有可用的模型" fi