File size: 2,115 Bytes
7573954
5f64962
7573954
 
 
 
 
 
 
 
 
 
 
5f64962
7573954
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ba67ac0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7573954
 
 
 
 
 
 
 
 
 
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
from langchain.tools import tool
from backend.core.logging_config import logger

MOCK_STATS_DB = {
    "Scottie Scheffler": {"SG Putting": 0.73, "Driving Distance": 311.2},
    "Rory McIlroy": {"SG Putting": 0.19, "Driving Distance": 326.3},
    "Jon Rahm": {"SG Putting": 0.45, "Driving Distance": 320.5},
    "Bryson DeChambeau": {"SG Putting": -0.12, "Driving Distance": 337.8}
}

@tool
def get_pro_stats(query: str) -> str:
    """Returns mock stat data for one or two PGA players from a simulated database."""
    logger.debug(f"[TOOL CALLED] get_pro_stats: {query}")

    stat_keywords = ["putting", "distance", "accuracy", "driving"]
    selected_stat = None
    for keyword in stat_keywords:
        if keyword in query.lower():
            selected_stat = {
                "putting": "SG Putting",
                "distance": "Driving Distance",
                "driving": "Driving Distance",
                "accuracy": "Driving Accuracy"  # placeholder
            }[keyword]
            break

    if not selected_stat:
        return "Could not determine which stat to compare."

    # Find players in the query
    found_players = []
    for player in MOCK_STATS_DB:
        if player.lower() in query.lower():
            found_players.append(player)
    
    # If no exact matches, try partial matches
    if not found_players:
        for player in MOCK_STATS_DB:
            # Split player name into parts and check if any part is in the query
            name_parts = player.lower().split()
            for part in name_parts:
                if part in query.lower() and len(part) > 2:  # Only match parts longer than 2 chars
                    found_players.append(player)
                    break

    if not found_players:
        return "Please specify at least one known player."

    lines = [f"{name}: {MOCK_STATS_DB[name].get(selected_stat, 'N/A')}" for name in found_players]
    
    if len(found_players) == 1:
        return f"{selected_stat} for {found_players[0]}: {lines[0]}"
    else:
        return f"{selected_stat} comparison:\n" + "\n".join(f"- {line}" for line in lines)