Spaces:
Sleeping
Sleeping
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() |