File size: 4,884 Bytes
ee2218d d6c807d 7b306ed 097c30b e768617 d6c807d e768617 604da52 a76c39e 604da52 97b9885 604da52 97b9885 a76c39e 97b9885 d6c807d 604da52 e768617 7b306ed 604da52 7b306ed 604da52 e768617 604da52 7b306ed d6c807d 7b306ed fcc7f02 a76c39e d6c807d 604da52 d6c807d fcc7f02 d6c807d fcc7f02 d6c807d fcc7f02 d6c807d fcc7f02 d6c807d fcc7f02 d6c807d 5e3277c d6c807d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #!/bin/bash
# setup_endpoints.sh — Pametna konfiguracija API provajdera
BASE_URL="http://localhost:7860"
ADMIN_EMAIL="${WEBUI_ADMIN_EMAIL:-}"
ADMIN_PASSWORD="${WEBUI_ADMIN_PASSWORD:-}"
ADMIN_NAME="${WEBUI_ADMIN_NAME:-admin}"
if [ -z "$ADMIN_EMAIL" ] || [ -z "$ADMIN_PASSWORD" ]; then
echo "❌ WEBUI_ADMIN_EMAIL ili WEBUI_ADMIN_PASSWORD nisu postavljeni."
exit 0
fi
echo "Čekam da WebUI bude spreman..."
for i in {1..60}; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/health")
if [ "$STATUS" = "200" ]; then
echo "✅ WebUI je spreman!"
break
fi
echo "Pokušaj $i — čekam još 2s..."
sleep 2
done
# Login/Signup
LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/auths/signin" \
-H "Content-Type: application/json" \
-d "{\"email\": \"${ADMIN_EMAIL}\", \"password\": \"${ADMIN_PASSWORD}\"}")
TOKEN=$(echo $LOGIN_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('token', ''))")
if [ -z "$TOKEN" ]; then
echo "❌ Login neuspješan, pokušavam registraciju..."
REGISTER_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/auths/signup" \
-H "Content-Type: application/json" \
-d "{\"name\": \"${ADMIN_NAME}\", \"email\": \"${ADMIN_EMAIL}\", \"password\": \"${ADMIN_PASSWORD}\"}")
TOKEN=$(echo $REGISTER_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('token', ''))")
fi
if [ -z "$TOKEN" ]; then echo "❌ Nije moguće dobiti token."; exit 0; fi
# Pokreni instalaciju funkcija u pozadini
python3 /app/install_functions.py "$BASE_URL" "$TOKEN" &
echo "✅ Ulogovan, filtriram provajdere s praznim ključevima..."
python3 - <<PYEOF
import requests, os, json
base_url = "$BASE_URL"
token = "$TOKEN"
# NVIDIA: podržava i NVIDIA_API_KEY i NVIDIA_ID_API_KEY
nvidia_key = os.getenv("NVIDIA_ID_API_KEY") or os.getenv("NVIDIA_API_KEY")
# Cloudflare: sklopi URL samo ako postoji account ID
cf_account = os.getenv("CLOUDFLARE_ACCOUNT_ID") or ""
cf_url = f"https://api.cloudflare.com/client/v4/accounts/{cf_account}/ai/v1" if cf_account else None
providers = [
("https://api.openai.com/v1", os.getenv("OPENAI_API_KEY")),
("https://api.anthropic.com/v1", os.getenv("ANTHROPIC_API_KEY")),
("https://generativelanguage.googleapis.com/v1beta/openai", os.getenv("GOOGLE_API_KEY")),
("https://models.inference.ai.azure.com", os.getenv("GITHUB_TOKEN")),
("https://api.groq.com/openai/v1", os.getenv("GROQ_API_KEY")),
("https://api.mistral.ai/v1", os.getenv("MISTRAL_API_KEY")),
("https://api.deepseek.com/v1", os.getenv("DEEPSEEK_API_KEY")),
("https://api.together.xyz/v1", os.getenv("TOGETHER_API_KEY")),
("https://integrate.api.nvidia.com/v1", nvidia_key),
("https://api.sambanova.ai/v1", os.getenv("SAMBANOVA_API_KEY")),
("https://openrouter.ai/api/v1", os.getenv("OPENROUTER_API_KEY")),
("https://api.cerebras.ai/v1", os.getenv("CEREBRAS_API_KEY")),
("https://api.fireworks.ai/inference/v1", os.getenv("FIREWORKS_API_KEY")),
("https://api.x.ai/v1", os.getenv("XAI_API_KEY")),
("https://router.huggingface.co/v1", os.getenv("HF_INFERENCE_TOKEN")),
("https://api.cohere.ai/compatibility/v1", os.getenv("COHERE_API_KEY")),
("https://gen.pollinations.ai/v1", "noapikey"),
]
# Dodaj Cloudflare samo ako postoji account ID
if cf_url:
providers.append((cf_url, os.getenv("CLOUDFLARE_API_TOKEN")))
valid_urls = []
valid_keys = []
for url, key in providers:
if not url:
continue
if not key or not key.strip() or key in ['""', "''"]:
continue
valid_urls.append(url)
valid_keys.append(key)
print(f" ✔ {url.split('/')[2]}")
payload = {
"ENABLE_OPENAI_API": True,
"OPENAI_API_BASE_URLS": valid_urls,
"OPENAI_API_KEYS": valid_keys,
"OPENAI_API_CONFIGS": {
"https://api.groq.com/openai/v1": {
"model_ids": ["llama-3.3-70b-versatile", "llama-3.1-8b-instant", "meta-llama/llama-4-scout-17b-16e-instruct"]
},
"https://api.cerebras.ai/v1": {
"model_ids": ["llama-4-scout-17b-16e-instruct", "llama3.1-8b"]
}
}
}
try:
r = requests.post(
f"{base_url}/openai/config/update",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json=payload,
timeout=10
)
if r.status_code == 200:
print(f"✅ Konfigurisano {len(valid_urls)} provajdera.")
else:
print(f"❌ Greška pri updateu: {r.status_code} - {r.text}")
except Exception as e:
print(f"❌ Request greška: {e}")
PYEOF
echo "✅ Gotovo!"
|