from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool import datetime import requests import pytz import yaml import random from tools.final_answer import FinalAnswerTool from Gradio_UI import GradioUI @tool def my_custom_tool(arg1: str, arg2: int) -> str: """Простой инструмент, который возвращает строку с аргументами. Args: arg1: первый аргумент (строка) arg2: второй аргумент (число) """ return f"Вы передали аргументы: {arg1} и {arg2}" @tool def get_current_time_in_timezone(timezone: str) -> str: """Получает текущее локальное время в указанном часовом поясе. Args: timezone: Название часового пояса (например, 'Europe/Moscow'). """ try: tz = pytz.timezone(timezone) local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S") return f"Текущее время в {timezone}: {local_time}" except Exception as e: return f"Ошибка: {str(e)}" @tool def generate_random_number(min_value: int, max_value: int) -> int: """Генерирует случайное число в заданном диапазоне. Args: min_value: Минимальное значение. max_value: Максимальное значение. """ return random.randint(min_value, max_value) @tool def convert_text_case(text: str, to_upper: bool) -> str: """Конвертирует текст в верхний или нижний регистр. Args: text: Исходный текст. to_upper: Если True - в верхний регистр, иначе - в нижний. """ return text.upper() if to_upper else text.lower() @tool def get_current_date() -> str: """Возвращает текущую дату и день недели.""" now = datetime.datetime.now() return now.strftime("Сегодня %Y-%m-%d, %A") final_answer = FinalAnswerTool() model = HfApiModel( max_tokens=2096, temperature=0.5, model_id='Qwen/Qwen2.5-Coder-32B-Instruct', custom_role_conversions=None, ) 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, my_custom_tool, get_current_time_in_timezone, generate_random_number, convert_text_case, get_current_date], max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, prompt_templates=prompt_templates ) GradioUI(agent).launch()