Spaces:
Runtime error
Runtime error
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}"} |