File size: 2,842 Bytes
418f5c6
9b5b26a
 
 
c19d193
418f5c6
6aae614
9b5b26a
 
 
418f5c6
 
9b5b26a
418f5c6
 
9b5b26a
418f5c6
9b5b26a
 
 
418f5c6
9b5b26a
418f5c6
9b5b26a
 
 
 
418f5c6
9b5b26a
418f5c6
8c01ffb
418f5c6
 
 
 
 
 
 
 
8c01ffb
418f5c6
 
 
 
 
 
 
 
ae7a494
418f5c6
 
 
 
 
ae7a494
418f5c6
e121372
418f5c6
 
 
 
13d500a
8c01ffb
9b5b26a
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
418f5c6
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
418f5c6
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
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()