Spaces:
Runtime error
Runtime error
File size: 2,972 Bytes
0f92422 7ac47ff bb42f19 7ac47ff 9b5b26a c19d193 8fe992b bb42f19 9b5b26a 7ac47ff 9b5b26a 7ac47ff 9b5b26a 7ac47ff 9b5b26a 8c01ffb bb42f19 6aae614 0f92422 cef52d0 7ac47ff 13d500a 8c01ffb bb42f19 cef52d0 7ac47ff 8c01ffb 7ac47ff 9b5b26a 8c01ffb 7ac47ff 8c01ffb 8fe992b 7ac47ff bb42f19 7ac47ff 8c01ffb 861422e 8fe992b 7ac47ff |
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 |
from smolagents import CodeAgent, DuckDuckGoSearchTool, load_tool, tool, HfApiModel
from tools.final_answer import FinalAnswerTool
import Gradio_UI # ← we’ll patch its stream_to_gradio
from Gradio_UI import GradioUI
import datetime
import pytz
import yaml
# --- Monkey-patch to guard against None token counts ─────────────
# Wrap the original stream_to_gradio so that None → 0 for token counting
_original_stream = Gradio_UI.stream_to_gradio
def _patched_stream_to_gradio(agent, task, reset_agent_memory=False):
for msg in _original_stream(agent, task, reset_agent_memory):
# ensure these are ints
if agent.model.last_input_token_count is None:
agent.model.last_input_token_count = 0
if agent.model.last_output_token_count is None:
agent.model.last_output_token_count = 0
yield msg
Gradio_UI.stream_to_gradio = _patched_stream_to_gradio
# ────────────────────────────────────────────────────────────────────
# --- Custom Tool Example (You can edit this) ---
def my_custom_tool(arg1: str, arg2: int) -> str:
"""
A tool that does nothing yet
Args:
arg1: the first argument
arg2: the second argument
"""
return "What magic will you build ?"
# --- Working Timezone 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:
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)}"
# --- Load and configure model ---
final_answer = FinalAnswerTool()
model = HfApiModel(
model_id='Qwen/Qwen3-Coder-30B-A3B-Instruct',
max_tokens=2096,
temperature=0.5,
)
# initialize counters so they're never None
model.last_input_token_count = 0
model.last_output_token_count = 0
# --- Load System Prompts ---
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# --- Load External Tools ---
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# --- Create the Agent ---
agent = CodeAgent(
model=model,
tools=[
final_answer,
image_generation_tool,
# DuckDuckGoSearchTool(), # optional
# tool(my_custom_tool), # if you decorate it
# tool(get_current_time_in_timezone), # likewise
],
max_steps=6,
verbosity_level=1,
prompt_templates=prompt_templates
)
# --- Launch UI ---
GradioUI(agent).launch()
|