webui / setup_endpoints.sh
Nerdur's picture
Upload 3 files
097c30b verified
Raw
History Blame Contribute Delete
4.88 kB
#!/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!"