File size: 3,067 Bytes
9b5b26a
 
 
 
c19d193
010daff
6aae614
73a613e
 
d8317bc
73a613e
b266103
 
73a613e
8fe992b
9b5b26a
 
5df72d6
9b5b26a
8137e3e
b11e2e3
d8317bc
 
 
 
 
 
 
d06eade
 
010daff
58e3a88
 
5f4462d
93042f0
5f4462d
 
 
 
 
 
 
010daff
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
ae7a494
 
 
 
e121372
bf6d34c
 
29ec968
fe328e0
13d500a
8c01ffb
 
9b5b26a
 
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
bd7216e
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
9b5b26a
8c01ffb
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
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from huggingface_hub import InferenceClient
from tools.final_answer import FinalAnswerTool
from gradio_client import Client
import os
import uuid

#client = Client("owner/space_name", hf_token=os.environ.get("HF_TOKEN"))
#result = client.predict("Astronaut riding a horse", api_name="/predict")


from Gradio_UI import GradioUI

# Below is an example of a tool that does nothing. Amaze us with your creativity !
@tool
def inference_image_tool(prompt: str, model: str = "black-forest-labs/FLUX.1-dev") -> str:
    #Keep this format for the description / args / args description but feel free to modify the tool
    """Generate an image from a text prompt using Hugging Face Inference Providers.
    
    Returns:
        A local file path to a PNG image.

    Args:
        prompt: Text prompt for the image.
        model: HF model id (e.g. black-forest-labs/FLUX.1-dev).
    """
    token = os.getenv("HF_TOKEN")
    if not token:
        raise RuntimeError("HF_TOKEN is missing. Add it in Space Settings → Secrets.")

    client = InferenceClient(provider="auto", api_key=token)
    img = client.text_to_image(prompt, model=model)  # PIL.Image

    out_dir = "/tmp/agent_images"
    os.makedirs(out_dir, exist_ok=True)
    out_path = os.path.join(out_dir, f"{uuid.uuid4().hex}.png")
    img.save(out_path)
    return out_path


@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)}"


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' 

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
custom_role_conversions=None,
)


# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)
    
agent = CodeAgent(
    model=model,
    tools=[final_answer, inference_image_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
)


GradioUI(agent).launch()