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()