File size: 3,831 Bytes
608c807
9b5b26a
 
 
c19d193
6aae614
8fd5ca8
 
9b5b26a
 
8fd5ca8
9b5b26a
2d84b2a
 
9b5b26a
2d84b2a
9b5b26a
2d84b2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9b5b26a
608c807
9b5b26a
2d84b2a
 
 
 
9b5b26a
2d84b2a
 
9b5b26a
2d84b2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
ae7a494
8fd5ca8
ae7a494
608c807
ae7a494
e121372
608c807
 
 
 
13d500a
8c01ffb
 
9b5b26a
 
8c01ffb
608c807
861422e
608c807
8c01ffb
8fe992b
608c807
 
2d84b2a
 
8fd5ca8
608c807
8c01ffb
 
 
 
 
 
608c807
8fe992b
 
9b5b26a
608c807
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
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from tools.visit_webpage import VisitWebpageTool
from tools.web_search import DuckDuckGoSearchTool
from Gradio_UI import GradioUI


@tool
def get_color_palette_based_on_emotion(emotion: str) -> str:
    """A tool that creates the color palette of a given emotion.
    Args:
        emotion: the emotion to create the color palette of.
    """
    model = HfApiModel(
        max_tokens=2096,
        temperature=0.5,
        model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
        custom_role_conversions=None,
    )

    messages = [
        {
            "role": "system",
            "content": (
                "ROLE: you are a cute color palette generator. "
                "TASK: take the emotion and create a color palette which will complement the emotion. Use only pastel colors. "
                "OUTPUT: a list of 6 colors in hex format. "
                "CONSTRAINTS: Do not add any words or explanations. Just return the list of colors."
            ),
        },
        {
            "role": "user",
            "content": emotion,
        },
    ]
    response = model(messages, stop_sequences=["END"])
    return response.content


@tool
def get_postcard_prompt_based_on_color_palette_and_greeting(
    color_palette: str, greeting: str
) -> str:
    """A tool that creates the image prompt for post card based on the color palette and greeting.
    Args:
        color_palette: 6 colors in hex format to create the image prompt of.
        greeting: the greeting to create the image prompt of.
    """
    model = HfApiModel(
        max_tokens=2096,
        temperature=0.5,
        model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
        custom_role_conversions=None,
    )

    messages = [
        {
            "role": "system",
            "content": (
                "ROLE: you are a cute postcard image prompt generator. "
                "TASK: take the color palette and greeting and create a postcard image prompt which simbolses the greeting. "
                "Use simple vector shapes, and pastel colors from the color palette. "
                "OUTPUT: a postcard image prompt. "
                "CONSTRAINTS: Use only the colors from the color palette. Include the greeting into the image prompt so it would be rendered as a text. "
            ),
        },
        {
            "role": "user",
            "content": f"Color palette: {color_palette}, Greeting: {greeting}",
        },
    ]
    response = model(messages, stop_sequences=["END"])
    return response.content


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,
        get_color_palette_based_on_emotion,
        get_postcard_prompt_based_on_color_palette_and_greeting,
        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,
)


GradioUI(agent).launch()