Spaces:
Sleeping
Sleeping
File size: 4,134 Bytes
bf4c922 9b5b26a c19d193 6aae614 8fe992b 9b5b26a 6b057b5 eaebfa9 5df72d6 dc7259f 9b5b26a dc7259f 9b5b26a b9bf8b4 b934bcd f6aebea b9bf8b4 f6aebea 5785280 9b5b26a f6aebea e8fb99e f6aebea d91fcc9 6b057b5 b934bcd 9b5b26a f6aebea 6b057b5 b934bcd f6aebea 7236413 8c01ffb 5785280 6aae614 ae7a494 b9bf8b4 e121372 7236413 6aea8ad be3edd3 7236413 13d500a 8c01ffb 9b5b26a 8c01ffb b9bf8b4 861422e 9b5b26a b9bf8b4 8c21a97 8fe992b f6aebea 8c21a97 8c01ffb 5785280 861422e 8fe992b b7e6c92 6b057b5 b7e6c92 0d190e7 |
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
from PIL import Image
import gradio as gr
# Below is an example of a tool that does nothing. Amaze us with your creativity !
#@tool
#def my_custom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type
#Keep this format for the description / args / args description but feel free to modify the tool
# """A tool that does nothing yet
# Args:
# arg1: the first argument
# arg2: the second argument
# """
# return "What magic will you build ?"
# tool which i creating. A tool for generating an animal image
@tool
def animal_image_generation_tool(animal_name: str) -> Image.Image:
"""Generating an image of an animal by its name.
Args:
animal_name: A string representing the name of the animal to search for (e.g., 'cat').
Returns:
A string with the URL of the generated image or an error message.
"""
try:
# use the DuckDuckGo Search to find information about an animal by its name.
search_tool = DuckDuckGoSearchTool()
search_tool.run = f"{animal_name} animal description"
search_results = search_tool(search_tool.run)
# generates an image based on the description of an animal.
promt = f"Create a realistic image of a {animal_name}"
image = image_generation_tool(promt) # This returns a PIL image
return image # Return the path to the saved image
except Exception as e:
return f"Error during image generation: {str(e)}"
# Function to display the image in Gradio
def display_image(animal_name: str):
# Call the tool to generate the image
image = animal_image_generation_tool(animal_name)
if isinstance(image, str): # If an error message is returned
return image # Return the error message
return image # Return the PIL image object
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
# Create timezone object
tz = pytz.timezone(timezone)
# Get current time in that timezone
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
# Initializing the tool for the final response
final_answer = FinalAnswerTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
# configuring the model
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
#model_id="meta-llama/Llama-3.2-3B-Instruct",
custom_role_conversions=None,
)
# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# Uploading Suggestion Templates
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# creating an agent
agent = CodeAgent(
model=model,
tools=[final_answer, animal_image_generation_tool], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Gradio Interface
def gradio_interface(animal_name: str):
return display_image(animal_name)
# Launch Gradio UI
iface = gr.Interface(
fn=gradio_interface,
inputs="text",
outputs="image",
title="Animal Image Generator",
description="Generate an image of an animal by its name.",
)
GradioUI(agent).launch() |