File size: 3,961 Bytes
0256c0c
89471f6
fbfac53
0256c0c
 
 
a3a4a48
 
 
0256c0c
 
48b2b94
0256c0c
a3a4a48
0256c0c
48b2b94
0256c0c
48b2b94
0256c0c
 
 
 
a3a4a48
0256c0c
a3a4a48
 
0256c0c
48b2b94
0256c0c
a3a4a48
 
 
0256c0c
 
a3a4a48
 
 
 
0256c0c
 
a3a4a48
0256c0c
a3a4a48
 
0256c0c
 
a3a4a48
 
 
0256c0c
 
 
a3a4a48
0256c0c
 
 
a3a4a48
 
 
0256c0c
 
a3a4a48
0256c0c
 
48b2b94
0256c0c
 
 
 
 
 
 
 
704c6ae
0256c0c
704c6ae
0256c0c
 
b201b3e
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
from smolagents import CodeAgent, DuckDuckGoSearchTool, FinalAnswerTool, HfApiModel, Tool, tool, VisitWebpageTool
import os

@tool
def suggest_menu(occasion: str) -> str:
    """
    Предлагает меню на основе случая.
    Args:
        occasion: Тип случая для вечеринки.
    """
    if occasion == "casual":
        return "Пицца, закуски и напитки."
    elif occasion == "formal":
        return "3-ходовой ужин с вином и десертом."
    elif occasion == "superhero":
        return "Буфет с высокоэнергетической и здоровой едой."
    else:
        return "Пользовательское меню для дворецкого."

@tool
def catering_service_tool(query: str) -> str:
    """
    Этот инструмент возвращает самый рейтинговый сервис кейтеринга в Готэм-Сити.
    
    Args:
        query: Поисковый запрос для поиска сервисов кейтеринга.
    """
    # Примерный список сервисов кейтеринга и их рейтингов
    services = {
        "Gotham Catering Co.": 4.9,
        "Wayne Manor Catering": 4.8,
        "Gotham City Events": 4.7,
    }
    
    # Найти самый рейтинговый сервис кейтеринга (симуляция фильтрации поискового запроса)
    best_service = max(services, key=services.get)
    
    return best_service

class SuperheroPartyThemeTool(Tool):
    name = "superhero_party_theme_generator"
    description = """
    Этот инструмент предлагает творческие идеи вечеринок на тему супергероев на основе категории.
    Он возвращает уникальную идею вечеринки."""
    
    inputs = {
        "category": {
            "type": "string",
            "description": "Тип вечеринки супергероев (например, 'классические герои', 'маскарад злодеев', 'футуристический Готэм').",
        }
    }
    
    output_type = "string"

    def forward(self, category: str):
        themes = {
            "classic heroes": "Гала Лиги Справедливости: Гости приходят одетыми в своих любимых героев DC с тематическими коктейлями, такими как 'Панч Криптонита'.",
            "villain masquerade": "Бал злодеев Готэма: Таинственный маскарад, где гости одеваются как классические злодеи Бэтмена.",
            "futuristic Gotham": "Ночь Нео-Готэма: Вечеринка в стиле киберпанка, вдохновленная Бэтменом из будущего, с неоновыми украшениями и футуристическими гаджетами."
        }
        
        return themes.get(category.lower(), "Идея тематической вечеринки не найдена. Попробуйте 'классические герои', 'маскарад злодеев' или 'футуристический Готэм'.")


# Альфред, дворецкий, готовит меню для вечеринки
agent = CodeAgent(
    tools=[
        DuckDuckGoSearchTool(), 
        VisitWebpageTool(),
        suggest_menu,
        catering_service_tool,
        SuperheroPartyThemeTool()
    ], 
    model=HfApiModel(token=os.getenv('hf_token')),
    max_steps=10,
    verbosity_level=2
)

agent.run("Дайте мне лучшее меню для вечеринки в особняке Уэйна. Идея вечеринки - тема 'маскарад злодеев'")