Sub-app FastAPI montada en /web-search con búsqueda vía ddgs. OpenAPI 3.0.3 + servers absoluto + operationId webSearch listo para importar como external tool en wxO. Sin auth (uso de taller/demo). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
1022 B
Python
37 lines
1022 B
Python
import os
|
|
from functools import lru_cache
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class WebSearchSettings:
|
|
public_base_url: str
|
|
default_max_results: int
|
|
default_region: str
|
|
request_timeout: int
|
|
|
|
|
|
def _int_env(name: str, default: int) -> int:
|
|
raw = os.environ.get(name)
|
|
if raw is None or raw == "":
|
|
return default
|
|
try:
|
|
return int(raw)
|
|
except ValueError:
|
|
return default
|
|
|
|
|
|
@lru_cache
|
|
def get_web_search_settings() -> WebSearchSettings:
|
|
base_url = os.environ.get("BASE_URL", "https://taller-wox.fitlabs.dev").rstrip("/")
|
|
public_base_url = os.environ.get(
|
|
"WEB_SEARCH_PUBLIC_BASE_URL",
|
|
f"{base_url}/web-search",
|
|
).rstrip("/")
|
|
return WebSearchSettings(
|
|
public_base_url=public_base_url,
|
|
default_max_results=_int_env("WEB_SEARCH_DEFAULT_MAX_RESULTS", 5),
|
|
default_region=os.environ.get("WEB_SEARCH_DEFAULT_REGION", "wt-wt"),
|
|
request_timeout=_int_env("WEB_SEARCH_REQUEST_TIMEOUT", 12),
|
|
)
|