Nerdur commited on
Commit
604da52
·
verified ·
1 Parent(s): e5ca67a

Upload setup_endpoints.sh

Browse files
Files changed (1) hide show
  1. setup_endpoints.sh +74 -131
setup_endpoints.sh CHANGED
@@ -1,145 +1,88 @@
1
  #!/bin/bash
2
- set -euo pipefail
3
 
4
- BASE_URL="${BASE_URL:-http://localhost:8080}"
5
- ADMIN_EMAIL="${WEBUI_ADMIN_EMAIL:-}"
6
- ADMIN_PASSWORD="${WEBUI_ADMIN_PASSWORD:-}"
7
- ADMIN_NAME="${WEBUI_ADMIN_NAME:-admin}"
8
- SYSTEM_PROMPT="${DEFAULT_SYSTEM_PROMPT:-}"
9
- export BASE_URL
10
- export WEBUI_ADMIN_EMAIL="$ADMIN_EMAIL"
11
- export WEBUI_ADMIN_PASSWORD="$ADMIN_PASSWORD"
12
- export WEBUI_ADMIN_NAME="$ADMIN_NAME"
13
- export DEFAULT_SYSTEM_PROMPT="$SYSTEM_PROMPT"
14
 
15
- echo "Cekam da WebUI bude spreman..."
16
  for i in {1..30}; do
17
- STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/health" || true)
18
  if [ "$STATUS" = "200" ]; then
19
- echo "WebUI je spreman."
20
  break
21
  fi
 
22
  sleep 5
23
  done
24
 
25
- if [ -z "$ADMIN_EMAIL" ] || [ -z "$ADMIN_PASSWORD" ]; then
26
- echo "WEBUI_ADMIN_EMAIL i WEBUI_ADMIN_PASSWORD nisu postavljeni; preskacem automatsku konfiguraciju."
27
- exit 0
28
- fi
29
-
30
- python3 - <<'PY'
31
- import json
32
- import os
33
- import sys
34
- import urllib.error
35
- import urllib.request
36
-
37
- base_url = os.environ.get("BASE_URL", "http://localhost:8080")
38
- admin_email = os.environ["WEBUI_ADMIN_EMAIL"]
39
- admin_password = os.environ["WEBUI_ADMIN_PASSWORD"]
40
- admin_name = os.environ.get("WEBUI_ADMIN_NAME", "admin")
41
- system_prompt = os.environ.get("DEFAULT_SYSTEM_PROMPT", "")
42
-
43
- def request_json(path, payload, token=None):
44
- data = json.dumps(payload).encode("utf-8")
45
- headers = {"Content-Type": "application/json"}
46
- if token:
47
- headers["Authorization"] = f"Bearer {token}"
48
- req = urllib.request.Request(f"{base_url}{path}", data=data, headers=headers, method="POST")
49
- with urllib.request.urlopen(req, timeout=60) as resp:
50
- body = resp.read().decode("utf-8")
51
- return json.loads(body) if body else {}
52
-
53
- def login_or_signup():
54
- try:
55
- resp = request_json(
56
- "/api/v1/auths/signin",
57
- {"email": admin_email, "password": admin_password},
58
- )
59
- token = resp.get("token")
60
- if token:
61
- return token
62
- except Exception:
63
- pass
64
-
65
- resp = request_json(
66
- "/api/v1/auths/signup",
67
- {"name": admin_name, "email": admin_email, "password": admin_password},
68
- )
69
- token = resp.get("token")
70
- if not token:
71
- raise RuntimeError("Nije moguce dobiti token za admin nalog.")
72
- return token
73
 
74
- def build_provider_config():
75
- openai_base = os.environ.get("OPENAI_API_BASE_URL", "https://api.openai.com/v1")
76
- providers = [
77
- (openai_base, os.environ.get("OPENAI_API_KEY", ""), False),
78
- ("https://api.anthropic.com/v1", os.environ.get("ANTHROPIC_API_KEY", ""), False),
79
- ("https://generativelanguage.googleapis.com/v1beta/openai", os.environ.get("GOOGLE_API_KEY", ""), False),
80
- ("https://models.github.ai/inference", os.environ.get("GITHUB_TOKEN", ""), False),
81
- ("https://api.groq.com/openai/v1", os.environ.get("GROQ_API_KEY", ""), False),
82
- ("https://api.mistral.ai/v1", os.environ.get("MISTRAL_API_KEY", ""), False),
83
- ("https://api.deepseek.com/v1", os.environ.get("DEEPSEEK_API_KEY", ""), False),
84
- ("https://api.together.xyz/v1", os.environ.get("TOGETHER_API_KEY", ""), False),
85
- ("https://integrate.api.nvidia.com/v1", os.environ.get("NVIDIA_API_KEY", ""), False),
86
- ("https://api.sambanova.ai/v1", os.environ.get("SAMBANOVA_API_KEY", ""), False),
87
- ("https://openrouter.ai/api/v1", os.environ.get("OPENROUTER_API_KEY", ""), False),
88
- ("https://gen.pollinations.ai/v1", os.environ.get("POLLINATIONS_API_KEY", ""), True),
89
- ("https://api.cerebras.ai/v1", os.environ.get("CEREBRAS_API_KEY", ""), False),
90
- ("https://api.fireworks.ai/inference/v1", os.environ.get("FIREWORKS_API_KEY", ""), False),
91
- ("https://api.x.ai/v1", os.environ.get("XAI_API_KEY", ""), False),
92
- ("https://api.cohere.ai/compatibility/v1", os.environ.get("COHERE_API_KEY", ""), False),
93
- ("https://api.tavily.com", os.environ.get("TAVILY_API_KEY", ""), False),
94
- ("https://router.huggingface.co/v1", os.environ.get("HF_INFERENCE_TOKEN", ""), False),
95
- ]
96
 
97
- urls = []
98
- keys = []
99
- for url, key, allow_empty in providers:
100
- if url and (key or allow_empty):
101
- urls.append(url)
102
- keys.append(key)
103
-
104
- cf_account = os.environ.get("CLOUDFLARE_ACCOUNT_ID", "")
105
- cf_token = os.environ.get("CLOUDFLARE_API_TOKEN", "")
106
- if cf_account and cf_token:
107
- urls.append(f"https://api.cloudflare.com/client/v4/accounts/{cf_account}/ai/v1")
108
- keys.append(cf_token)
109
-
110
- return urls, keys
111
-
112
- token = login_or_signup()
113
-
114
- if system_prompt.strip():
115
- try:
116
- request_json(
117
- "/api/v1/configs/default/system/prompt",
118
- {"DEFAULT_SYSTEM_PROMPT": system_prompt},
119
- token=token,
120
- )
121
- print("System prompt postavljen.")
122
- except Exception as exc:
123
- print(f"System prompt nije postavljen: {exc}")
124
 
125
- urls, keys = build_provider_config()
126
- if urls and keys:
127
- try:
128
- request_json(
129
- "/openai/config/update",
130
- {
131
- "ENABLE_OPENAI_API": True,
132
- "OPENAI_API_BASE_URLS": urls,
133
- "OPENAI_API_KEYS": keys,
134
- "OPENAI_API_CONFIGS": {},
135
- },
136
- token=token,
137
- )
138
- print("Endpointi konfigurirani.")
139
- except Exception as exc:
140
- print(f"Konfiguracija endpointa nije uspjela: {exc}")
141
- else:
142
- print("Nema postavljenih provider secret-a; preskacem openai endpoint konfiguraciju.")
143
 
144
- print("Automatska konfiguracija zavrsena.")
145
- PY
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #!/bin/bash
 
2
 
3
+ BASE_URL="http://localhost:8080"
 
 
 
 
 
 
 
 
 
4
 
5
+ echo "Čekam da WebUI bude spreman..."
6
  for i in {1..30}; do
7
+ STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/health")
8
  if [ "$STATUS" = "200" ]; then
9
+ echo "✅ WebUI je spreman!"
10
  break
11
  fi
12
+ echo "Pokušaj $i — čekam još 5s..."
13
  sleep 5
14
  done
15
 
16
+ # Login
17
+ echo "Logujem se kao admin..."
18
+ LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/auths/signin" \
19
+ -H "Content-Type: application/json" \
20
+ -d '{"email": "nermindurma1981@gmail.com", "password": "nerko1508"}')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
+ TOKEN=$(echo $LOGIN_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('token', ''))")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+ if [ -z "$TOKEN" ]; then
25
+ echo "❌ Login neuspješan, pokušavam registraciju..."
26
+ REGISTER_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/auths/signup" \
27
+ -H "Content-Type: application/json" \
28
+ -d '{"name": "nermin", "email": "nermindurma1981@gmail.com", "password": "nerko1508"}')
29
+ TOKEN=$(echo $REGISTER_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('token', ''))")
30
+ fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ if [ -z "$TOKEN" ]; then
33
+ echo "❌ Nije moguće dobiti token."
34
+ exit 0
35
+ fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
+ echo "✅ Ulogovan, konfiguriram endpointe kroz /openai/config/update..."
38
+
39
+ curl -s -X POST "$BASE_URL/openai/config/update" \
40
+ -H "Content-Type: application/json" \
41
+ -H "Authorization: Bearer $TOKEN" \
42
+ -d "{
43
+ \"ENABLE_OPENAI_API\": true,
44
+ \"OPENAI_API_BASE_URLS\": [
45
+ \"https://api.openai.com/v1\",
46
+ \"https://api.anthropic.com/v1\",
47
+ \"https://generativelanguage.googleapis.com/v1beta/openai\",
48
+ \"https://models.inference.ai.azure.com\",
49
+ \"https://api.groq.com/openai/v1\",
50
+ \"https://api.mistral.ai/v1\",
51
+ \"https://api.deepseek.com/v1\",
52
+ \"https://api.together.xyz/v1\",
53
+ \"https://integrate.api.nvidia.com/v1\",
54
+ \"https://api.sambanova.ai/v1\",
55
+ \"https://openrouter.ai/api/v1\",
56
+ \"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/v1\",
57
+ \"https://api.cerebras.ai/v1\",
58
+ \"https://api.fireworks.ai/inference/v1\",
59
+ \"https://api.x.ai/v1\",
60
+ \"https://api-inference.huggingface.co/v1\",
61
+ \"https://api.cohere.ai/compatibility/v1\",
62
+ \"https://gen.pollinations.ai\"
63
+ ],
64
+ \"OPENAI_API_KEYS\": [
65
+ \"$OPENAI_API_KEY\",
66
+ \"$ANTHROPIC_API_KEY\",
67
+ \"$GOOGLE_API_KEY\",
68
+ \"$GITHUB_TOKEN\",
69
+ \"$GROQ_API_KEY\",
70
+ \"$MISTRAL_API_KEY\",
71
+ \"$DEEPSEEK_API_KEY\",
72
+ \"$TOGETHER_API_KEY\",
73
+ \"$NVIDIA_API_KEY\",
74
+ \"$SAMBANOVA_API_KEY\",
75
+ \"$OPENROUTER_API_KEY\",
76
+ \"$CLOUDFLARE_API_TOKEN\",
77
+ \"$CEREBRAS_API_KEY\",
78
+ \"$FIREWORKS_API_KEY\",
79
+ \"$XAI_API_KEY\",
80
+ \"$HUGGINGFACE_API_KEY\",
81
+ \"$COHERE_API_KEY\",
82
+ \"$POLLINATIONS_API_KEY\"
83
+ ],
84
+ \"OPENAI_API_CONFIGS\": {}
85
+ }"
86
+
87
+ echo ""
88
+ echo "✅ Svi endpointi su konfigurirani!"