Spaces:
Sleeping
Sleeping
import gradio as gr | |
import os | |
from groq import Groq | |
from deep_translator import GoogleTranslator | |
# Set up Groq API client | |
client = Groq( | |
api_key=os.getenv("GROQ_API_KEY"), # Ensure you add this key to your environment variables | |
) | |
# Function to fetch team and player list from LLM (using Groq API) | |
def get_team_and_players(): | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{"role": "user", "content": "List all MLB teams and their top players."} | |
], | |
model="llama-3.3-70b-versatile", # You can adjust the model here | |
) | |
return chat_completion.choices[0].message.content.strip() | |
# Function to generate team overview | |
def get_team_overview(team): | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{"role": "user", "content": f"Provide an overview of the {team} MLB team, including recent performance and standings."} | |
], | |
model="llama-3.3-70b-versatile", | |
) | |
return chat_completion.choices[0].message.content.strip() | |
# Function for season predictions | |
def predict_season_outcomes(team): | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{"role": "user", "content": f"Predict the potential season outcomes for the {team} based on their current performance."} | |
], | |
model="llama-3.3-70b-versatile", | |
) | |
return chat_completion.choices[0].message.content.strip() | |
# Function for real-time strategy insights | |
def real_time_tooltips(game_event): | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{"role": "user", "content": f"Explain the strategy behind the following baseball play: {game_event}"} | |
], | |
model="llama-3.3-70b-versatile", | |
) | |
return chat_completion.choices[0].message.content.strip() | |
# Gradio app interface | |
def create_gradio_interface(): | |
with gr.Blocks() as demo: | |
gr.Markdown("# MLB Fan Engagement App") | |
with gr.Tab("Team and Player Selection"): | |
team_dropdown = gr.Dropdown(choices=[], label="Select Team") | |
player_dropdown = gr.Dropdown(choices=[], label="Select Player") | |
# Update teams and players dynamically using LLM | |
def update_teams_and_players(): | |
team_and_players = get_team_and_players() | |
teams = team_and_players.split("\n") # Assuming each team is on a new line | |
team_dropdown.update(choices=teams) | |
return team_dropdown, player_dropdown | |
# Load teams and players when app starts | |
update_teams_and_players_button = gr.Button("Load Teams and Players") | |
update_teams_and_players_button.click(update_teams_and_players, inputs=[], outputs=[team_dropdown, player_dropdown]) | |
with gr.Tab("Team Overview"): | |
team_dropdown_overview = gr.Dropdown(choices=[], label="Select Team") | |
overview_output = gr.Textbox(label="Team Overview") | |
team_dropdown_overview.change( | |
get_team_overview, inputs=team_dropdown_overview, outputs=overview_output | |
) | |
with gr.Tab("Season Predictions"): | |
team_dropdown_predictions = gr.Dropdown(choices=[], label="Select Team") | |
predictions_output = gr.Textbox(label="Season Predictions") | |
team_dropdown_predictions.change( | |
predict_season_outcomes, inputs=team_dropdown_predictions, outputs=predictions_output | |
) | |
with gr.Tab("Real-Time Strategy Insights"): | |
game_event_input = gr.Textbox( | |
label="Describe the game event (e.g., 'Why did the batter bunt in the 8th inning?')" | |
) | |
strategy_output = gr.Textbox(label="Strategy Explanation") | |
game_event_input.submit(real_time_tooltips, inputs=game_event_input, outputs=strategy_output) | |
demo.launch() | |
# Run the app | |
create_gradio_interface() | |