كما كتبت، اعتقدت في الأصل أن هذه مشكلة في مكدس الشبكة، ومع ذلك، فإن استدعاءات OpenAI API المتكررة من نفس الحاوية تعمل بشكل جيد.
هذا أيضًا مع أحدث إصدار، التزامات اعتبارًا من 21 فبراير.
لإثبات ذلك (بتكلفة حرق الرموز)، قمت بإعداد برنامج نصي سريع للتحقق من مكدس شبكة OpenAI.
- يعمل لمدة 600 ثانية (10 دقائق)
- يقوم بإجراء مكالمة إكمال دردشة واحدة في الثانية
- يغير المطالبة لتجنب ذاكرة التخزين المؤقت
قم بالتنفيذ داخل الحاوية ./launcher enter app، واحفظ البرنامج النصي أدناه، واجعله قابلاً للتنفيذ باستخدام chmod +x test_openai.sh ثم قم باستدعائه باستخدام OPENAI_API_KEY=.... ./test_openai.sh
test_openai.sh
#!/bin/bash
# Duration to run
DURATION_SECS=600
# Initialize counters
successful=0
unsuccessful=0
declare -A error_messages
# Function to calculate percentage
calc_percentage() {
local total=$(($1 + $2))
if [ $total -eq 0 ]; then
echo "0.00"
else
echo "scale=2; ($2 * 100) / $total" | bc
fi
}
# Function to print statistics
print_stats() {
local percent=$(calc_percentage $successful $unsuccessful)
echo "-------------------"
echo "Successful calls: $successful"
echo "Failed calls: $unsuccessful"
echo "Failure rate: ${percent}%"
echo "Error messages:"
for error in "${!error_messages[@]}"; do
echo " - $error (${error_messages[$error]} times)"
done
}
end_time=$((SECONDS + DURATION_SECS))
counter=1
while [ $SECONDS -lt $end_time ]; do
# Make the API call with timeout
response=$(curl -s -w "\n%{http_code}" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d "{
\"model\": \"gpt-4o-mini\",
\"messages\": [{\"role\": \"user\", \"content\": \"Use this number to choose a one word response: $counter\"}]
}" \
--connect-timeout 5 \
--max-time 10 \
https://api.openai.com/v1/chat/completions 2>&1)
# Get the last line (status code) and response body
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')
# Check if the call was successful
if [ "$http_code" = "200" ]; then
((successful++))
else
((unsuccessful++))
# Extract error message
error_msg=$(echo "$body" | grep -o '"message":"[^"]*"' | cut -d'"' -f4)
if [ -z "$error_msg" ]; then
error_msg="Connection error: $body"
fi
# Increment error message counter
((error_messages["$error_msg"]++))
fi
# Print current statistics
print_stats
((counter++))
# Wait for 1 second before next call
sleep 1
done
بالنسبة للبرنامج النصي للاختبار، كان معدل الفشل لدي أقل من 0.5٪، وهو أمر مقبول بهذا الحجم.
هذا يخبرني أن المشكلة تكمن في برنامج Discourse البرمجي بدلاً من الحاوية أو مكدس الشبكة الذي يدعمها.
إذا لم يتم إصلاحه بتثبيت حديث، فسألقي نظرة أعمق عليه.