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()
|