TMD-Golf-Caddie-Agent / backend /tools /get_pro_stats_tool.py
mwalker22's picture
Replace the debug_print function and environment variable dependency with a logger implementation. Logging level is now controlled via an API.
5f64962
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)