MLB-Fanbase / app.py
ans123's picture
Update app.py
eda8825 verified
raw
history blame
4.01 kB
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()