This commit is contained in:
@@ -19,8 +19,9 @@ from urllib.request import Request, urlopen
|
||||
|
||||
MAX_SECRET = 4096
|
||||
MAX_MODEL = 160
|
||||
ALLOWED_PROVIDERS = {"nous_portal", "nous_portal_web_research"}
|
||||
ALLOWED_PROVIDERS = {"nous_portal", "nous_portal_web_research", "stepfun"}
|
||||
DEFAULT_NOUS_URL = "https://inference-api.nousresearch.com/v1"
|
||||
DEFAULT_STEP_URL = "https://api.stepfun.ai/v1"
|
||||
DEFAULT_FIRECRAWL_URL = "https://api.firecrawl.dev/v2"
|
||||
DEFAULT_SEARXNG_URL = "http://searxng:8080"
|
||||
|
||||
@@ -83,7 +84,8 @@ def validate_payload(payload: dict) -> dict:
|
||||
enabled = payload.get("enabled", True)
|
||||
if not isinstance(enabled, bool):
|
||||
raise ValueError("invalid_enabled")
|
||||
urls = {"nous_base_url": DEFAULT_NOUS_URL, "firecrawl_base_url": str(payload.get("searxng_base_url", DEFAULT_SEARXNG_URL)).strip() or DEFAULT_SEARXNG_URL}
|
||||
default_nous = DEFAULT_STEP_URL if provider == "stepfun" else DEFAULT_NOUS_URL
|
||||
urls = {"nous_base_url": str(payload.get("step_base_url", payload.get("nous_base_url", default_nous))).strip() or default_nous, "firecrawl_base_url": str(payload.get("searxng_base_url", DEFAULT_SEARXNG_URL)).strip() or DEFAULT_SEARXNG_URL}
|
||||
for field, default in urls.items():
|
||||
value = str(payload.get(field, default)).strip().rstrip("/")
|
||||
parsed = urlparse(value)
|
||||
@@ -94,7 +96,7 @@ def validate_payload(payload: dict) -> dict:
|
||||
if not isinstance(credentials, dict):
|
||||
raise ValueError("invalid_credentials")
|
||||
result = {"provider": provider, "model": model, "enabled": enabled, **urls, "credentials": {}}
|
||||
for name in ("nous_api_key", "firecrawl_api_key"):
|
||||
for name in ("nous_api_key", "step_api_key", "firecrawl_api_key"):
|
||||
if name in credentials:
|
||||
value = credentials[name]
|
||||
if not isinstance(value, str) or not value or len(value) > MAX_SECRET:
|
||||
@@ -114,8 +116,15 @@ def test_connectivity(row) -> dict:
|
||||
if not row or not row["enabled"] or not row["credentials_ciphertext"]:
|
||||
return {"status": "not_configured", "network_calls": 0, "outbound_calls": False}
|
||||
credentials = json.loads(decrypt(row["credentials_ciphertext"]))
|
||||
check_defs = []
|
||||
provider = row["provider"]
|
||||
model_label = "stepfun" if provider == "stepfun" else "nous"
|
||||
key_name = "step_api_key" if provider == "stepfun" else "nous_api_key"
|
||||
check_defs.append((model_label, row["nous_base_url"] + "/models", key_name))
|
||||
if not row["firecrawl_base_url"].startswith("http://searxng"):
|
||||
check_defs.append(("firecrawl", row["firecrawl_base_url"], "firecrawl_api_key"))
|
||||
checks = []
|
||||
for label, url, key_name in (("nous", row["nous_base_url"] + "/models", "nous_api_key"), ("firecrawl", row["firecrawl_base_url"], "firecrawl_api_key")):
|
||||
for label, url, key_name in check_defs:
|
||||
key = credentials.get(key_name)
|
||||
if not isinstance(key, str) or not key:
|
||||
checks.append({"provider": label, "ok": False})
|
||||
|
||||
Reference in New Issue
Block a user