Spaces:
Runtime error
Runtime error
File size: 2,211 Bytes
7bd4e6e |
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 |
import requests
import logging
import os
logger = logging.getLogger(__name__)
SPACE_BUILDER_API_URL = os.getenv("SPACE_BUILDER_API_URL", "https://broadfield-dev-build-space.hf.space/run/predict")
def build_huggingface_space(build_prompt: str):
"""
Calls the build-space API to generate a Hugging Face Space.
Args:
build_prompt: A string describing the space to be built.
Returns:
A dictionary containing the result or an error message.
"""
logger.info(f"SPACE_BUILDER: Calling API with prompt: '{build_prompt[:100]}...'")
payload = {"data": [build_prompt]}
try:
# A long timeout is set as space building can take time.
response = requests.post(SPACE_BUILDER_API_URL, json=payload, timeout=300)
response.raise_for_status()
response_data = response.json()
if "data" in response_data and isinstance(response_data["data"], list) and len(response_data["data"]) > 0:
result_text = response_data["data"][0]
logger.info(f"SPACE_BUILDER: Successfully received response: {result_text}")
return {"prompt": build_prompt, "result": result_text}
else:
logger.error(f"SPACE_BUILDER: API response in unexpected format: {response_data}")
return {"prompt": build_prompt, "error": "API response format is invalid."}
except requests.exceptions.HTTPError as e:
error_message = f"HTTP error {e.response.status_code}: {e.response.text[:200]}"
logger.error(f"SPACE_BUILDER: {error_message}")
return {"prompt": build_prompt, "error": error_message}
except requests.exceptions.Timeout:
logger.error("SPACE_BUILDER: API call timed out.")
return {"prompt": build_prompt, "error": "The request timed out."}
except requests.exceptions.RequestException as e:
logger.error(f"SPACE_BUILDER: Request failed: {e}")
return {"prompt": build_prompt, "error": f"Request failed: {e}"}
except Exception as e:
logger.error(f"SPACE_BUILDER: An unexpected error occurred: {e}", exc_info=True)
return {"prompt": build_prompt, "error": f"An internal error occurred: {e}"} |