Spaces:
Runtime error
Runtime error
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool | |
import sys # Add this import to fix the error | |
import datetime | |
import time | |
import requests | |
from checks.failed_check import create_failed_gradio_ui | |
from checks.endpoint_check import check_public_endpoint | |
from checks.health_check import check_model_endpoint, should_launch_ui | |
import os | |
import pytz # Had to give it permission in Code agent | |
from tools.tools import load_tools | |
from agents.model import load_huggingface_model | |
from agents.prompts import load_prompts | |
from ContentGradio import ContentAgentUI | |
def initialize_agent(endpoint_uri: str): | |
# Load prompts | |
combined_prompts = load_prompts() | |
combined_tools = load_tools() ## from the tools folder (don't remove final answer) | |
"""Initialize and configure the CodeAgent""" | |
model = HfApiModel( | |
max_tokens=2096, | |
temperature=0.5, | |
model_id=endpoint_uri, | |
custom_role_conversions=None, | |
) | |
return CodeAgent( | |
model=model, | |
tools=combined_tools, | |
max_steps=6, | |
verbosity_level=3, | |
name="content_agent", | |
description="Evaluates whether text is polite or impolite.", | |
prompt_templates=combined_prompts(), | |
additional_authorized_imports=["pytz"] | |
) | |
def wake_up_endpoint(endpoint_uri, max_wait=30): | |
"""Poll the endpoint until it responds OK or timeout.""" | |
# Get token from environment variable or secrets store | |
hf_token = os.environ.get("HF_TOKEN") # Or replace with your secret loading logic | |
headers = {"Authorization": f"Bearer {hf_token}"} if hf_token else {} | |
payload = {"inputs": "ping"} # Adjust to minimal valid input | |
start = time.time() | |
while time.time() - start < max_wait: | |
try: | |
print("Pinging endpoint...") | |
print(endpoint_uri) | |
response = requests.post(endpoint_uri, json=payload, timeout=5) | |
if response.ok: | |
print("✅ Endpoint is awake.") | |
return True | |
# If it's a 503 or 504, it's likely still warming up | |
print(f"Response: {response.status_code}, retrying...") | |
except requests.exceptions.RequestException as e: | |
print(f"Exception: {e}, retrying...") | |
time.sleep(3) # fixed short backoff; can be exponential if needed | |
print("❌ Timed out waiting for endpoint to wake up.") | |
return False | |
def main(): | |
# Load endpoint and check health | |
# Prechecks | |
endpoint_uri = load_huggingface_model() # Get the URI for the endpoint | |
# Wake it up before health check | |
wake_up_successful = wake_up_endpoint(endpoint_uri) | |
if not wake_up_successful: | |
print("Warning: Could not wake up the endpoint. Exiting.") | |
exit(0) | |
is_healthy, status_info = check_model_endpoint(endpoint_uri) # Test the endpoint | |
if not is_healthy: | |
interface = create_failed_gradio_ui(status_info) | |
interface.launch(show_error=True, share=True) | |
return | |
# Initialize and run the agent | |
agent = initialize_agent(endpoint_uri) | |
# Create an instance of the ContentAgentUI class | |
ui = ContentAgentUI() | |
ui.pass_through_agent(agent) # Pass through the agent | |
if __name__ == "__main__": | |
main() |