whiran/First_agent_template
0
1from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool2import datetime3import requests4import pytz5import yaml6import torch7from diffusers import StableDiffusionPipeline8from pathlib import Path9from typing import Optional10from tools.final_answer import FinalAnswerTool11from Gradio_UI import GradioUI12 13@tool14def generate_image_tool(15 prompt: str,16 model_name: str = "stabilityai/stable-diffusion-2-1",17 num_inference_steps: int = 50,18 output_path: str = "generated_image.png"19) -> str:20 """A tool for generating images from text prompts using Stable Diffusion.21 Args:22 prompt: Text description of the image (must be SFW)23 model_name: AI model to use (default: stabilityai/stable-diffusion-2-1)24 num_inference_steps: Quality steps (20-100)25 output_path: Where to save the image26 """27 # Safety check28 unsafe_keywords = ["nude", "porn", "explicit", "adult", "nsfw"]29 if any(kw in prompt.lower() for kw in unsafe_keywords):30 return "Error: Content policy violation detected in prompt"31 32 try:33 pipe = StableDiffusionPipeline.from_pretrained(34 model_name,35 torch_dtype=torch.float1636 ).to("cuda")37 38 image = pipe(39 prompt=prompt,40 num_inference_steps=num_inference_steps41 ).images[0]42 43 Path(output_path).parent.mkdir(parents=True, exist_ok=True)44 image.save(output_path)45 return f"Image generated successfully at: {output_path}"46 47 except Exception as e:48 return f"Image generation failed: {str(e)}"49 50@tool51def get_current_time_in_timezone(timezone: str) -> str:52 """A tool that fetches the current local time in a specified timezone.53 Args:54 timezone: A valid timezone (e.g., 'America/New_York')55 """56 try:57 tz = pytz.timezone(timezone)58 local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")59 return f"Current time in {timezone}: {local_time}"60 except Exception as e:61 return f"Error: {str(e)}"62 63final_answer = FinalAnswerTool()64 65model = HfApiModel(66 max_tokens=2096,67 temperature=0.5,68 model_id='Qwen/Qwen2.5-Coder-32B-Instruct',69 custom_role_conversions=None,70)71 72with open("prompts.yaml", 'r') as stream:73 prompt_templates = yaml.safe_load(stream)74 75agent = CodeAgent(76 model=model,77 tools=[generate_image_tool, get_current_time_in_timezone, final_answer],78 max_steps=6,79 verbosity_level=1,80 prompt_templates=prompt_templates,81 grammar=None,82 planning_interval=None,83 name="Creative Assistant",84 description="AI assistant capable of generating images and providing time information"85)86 87GradioUI(agent).launch()