from smolagents import CodeAgent, HfApiModel, load_tool, tool import datetime import random import pytz yaml from deep_translator import GoogleTranslator from tools.final_answer import FinalAnswerTool from Gradio_UI import GradioUI @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") @tool def translate_text(text: str) -> str: """Переводит текст на немецкий язык. Args: text: Исходный текст. """ return GoogleTranslator(source='auto', target='de').translate(text) @tool def generate_password(length: int) -> str: """Генерирует случайный пароль заданной длины. Args: length: Длина пароля. """ characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()" return "".join(random.choice(characters) for _ in range(length)) final_answer = FinalAnswerTool() model = HfApiModel( max_tokens=2096, temperature=0.5, model_id='Qwen/Qwen2.5-Coder-32B-Instruct', custom_role_conversions=None, ) with open("prompts.yaml", 'r') as stream: prompt_templates = yaml.safe_load(stream) agent = CodeAgent( model=model, tools=[final_answer, get_current_time_in_timezone, generate_random_number, convert_text_case, get_current_date, translate_text, generate_password], max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, prompt_templates=prompt_templates ) GradioUI(agent).launch()