File size: 2,434 Bytes
b2f7e9f
 
 
 
 
 
 
 
 
 
9b5b26a
 
c19d193
8fe992b
9b5b26a
b2f7e9f
 
 
9b5b26a
b2f7e9f
 
 
9b5b26a
b2f7e9f
 
9b5b26a
b2f7e9f
9b5b26a
b2f7e9f
 
 
 
9b5b26a
 
b2f7e9f
 
9b5b26a
b2f7e9f
9b5b26a
 
 
 
 
 
 
8c01ffb
 
b2f7e9f
 
 
6aae614
ae7a494
 
b2f7e9f
 
 
e121372
b2f7e9f
 
 
 
13d500a
8c01ffb
 
b2f7e9f
 
 
 
 
 
 
 
8c01ffb
b2f7e9f
 
 
 
861422e
b2f7e9f
 
 
 
 
8c01ffb
8fe992b
b2f7e9f
 
 
 
 
 
 
8c01ffb
 
 
 
 
 
b2f7e9f
8fe992b
 
9b5b26a
b2f7e9f
 
 
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
94
95
96
97
98
99
100
101
102
103
104
105
106
from smolagents import (
    CodeAgent,
    DuckDuckGoSearchTool,
    HfApiModel,
    load_tool,
    tool,
    FinalAnswerTool,
    GradioUI,
)

import datetime
import pytz
import yaml


# =========================
# 自定义工具 1:示例工具
# =========================
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
    """A simple custom tool example.

    Args:
        arg1: The first argument.
        arg2: The second argument.
    """
    return f"You passed arg1={arg1}, arg2={arg2}."


# =========================
# 自定义工具 2:查询指定时区当前时间
# =========================
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Fetch the current local time in a specified timezone.

    Args:
        timezone: A valid timezone string, for example 'Asia/Shanghai', 'Asia/Tokyo', or 'America/New_York'.
    """
    try:
        tz = pytz.timezone(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()


# =========================
# 模型配置
# =========================
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
    custom_role_conversions=None,
)


# =========================
# 从 Hugging Face Hub 加载图片生成工具
# =========================
image_generation_tool = load_tool(
    "agents-course/text-to-image",
    trust_remote_code=True,
)


# =========================
# 读取 prompts.yaml
# =========================
with open("prompts.yaml", "r", encoding="utf-8") as stream:
    prompt_templates = yaml.safe_load(stream)


# =========================
# 创建 Agent
# =========================
agent = CodeAgent(
    model=model,
    tools=[
        final_answer,
        image_generation_tool,
        get_current_time_in_timezone,
        my_custom_tool,
        DuckDuckGoSearchTool(),
    ],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates,
)


# =========================
# 启动 Gradio 页面
# =========================
GradioUI(agent).launch()