File size: 2,992 Bytes
f457dfb 9b5b26a f457dfb 9b5b26a f457dfb 6aae614 9b5b26a f457dfb 9b5b26a f457dfb 9b5b26a f457dfb 9b5b26a f457dfb 8c01ffb f457dfb 8c01ffb f457dfb ae7a494 f457dfb ae7a494 f457dfb 8c01ffb f457dfb 8c01ffb f457dfb 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b f457dfb 8c01ffb 861422e 8fe992b 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 |
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() |