Spaces:
Runtime error
Runtime error
File size: 4,050 Bytes
9b5b26a c19d193 7272a0d 6aae614 8fe992b 9b5b26a 5df72d6 9b5b26a 3d1237b 9b5b26a 8c01ffb 377f457 c659003 377f457 9d8d7da 377f457 9d8d7da 377f457 5fe85ac 377f457 5fe85ac 377f457 5fe85ac 377f457 5fe85ac 377f457 5fe85ac 377f457 8c01ffb 6aae614 ae7a494 e121372 bf6d34c 29ec968 fe328e0 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b bc0314b 8c01ffb 861422e 8fe992b 9b5b26a 01cb9b3 |
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 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
import feedparser # RSS
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# 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
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)}"
@tool
def get_news(rss_url: str, max_items: int) -> str:
"""
從 rss_url 獲取最新的新聞。
Args:
rss_url: https://rthk.hk/rthk/news/rss/c_expressnews_clocal.xml
max_items: 要顯示的最大新聞條目數量。
"""
# 如果 rss_url 未提供或為空,則使用預設 URL
url_to_fetch = rss_url if rss_url and rss_url.strip() else DEFAULT_RSS_URL
# 確保 max_items 是正整數,如果不是或未提供,則使用預設值
try:
num_items = int(max_items)
if num_items <= 0:
num_items = 5 # 預設顯示 5 條
except (ValueError, TypeError):
num_items = 5 # 預設顯示 5 條
try:
feed = feedparser.parse(url_to_fetch)
if not feed.entries:
return f"無法從 {url_to_fetch} 獲取新聞,或者 RSS Feed 為空。"
news_output = f"來自 {url_to_fetch} 的最新新聞 (最多 {num_items} 條):\n"
for entry in feed.entries[:num_items]:
title = entry.get("title", "無標題")
link = entry.get("link", "#")
summary = entry.get("summary", "") # 嘗試獲取摘要
news_output += f"- 標題: {title}\n"
news_output += f" 連結: {link}\n"
if summary:
# 簡單清理 HTML 標籤 (如果有的話),並截斷摘要長度
import re
clean_summary = re.sub(r'<[^>]+>', '', summary)
news_output += f" 摘要: {clean_summary[:100]}...\n" # 顯示前100個字元
news_output += "\n"
return news_output
except Exception as e:
return f"讀取 RSS Feed ({url_to_fetch}) 時發生錯誤:{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, get_news, get_current_time_in_timezone], ## 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() |