MLB-Fanbase / app.py
ans123's picture
Update app.py
0e6321c verified
raw
history blame
4.95 kB
import gradio as gr
import os
import requests
from groq import Groq
# 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 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 to predict season outcomes
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 player wildcards
def get_player_wildcards(player):
chat_completion = client.chat.completions.create(
messages=[
{"role": "user", "content": f"Describe any standout performances or recent achievements for the player {player} in MLB."}
],
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()
# Function to fetch images and news for a team or player
def fetch_news(query):
url = "https://www.searchapi.io/api/v1/search"
params = {
"engine": "google",
"q": query,
"api_key": "PMjgK27a8Lyb6uMXP2jnSNnB", # Replace with your API key
}
try:
response = requests.get(url, params=params)
data = response.json()
# Extract news articles
news = "\n".join([f"{item['title']}: {item['link']}" for item in data.get("items", [])[:5]])
# Extract image URLs
images = [item["image"] for item in data.get("items", []) if "image" in item][:5]
return news, images
except Exception as e:
return f"Error fetching data: {e}", []
# Gradio app interface
def create_gradio_interface():
with gr.Blocks() as demo:
gr.Markdown("# Enhanced MLB Fan Engagement App with News and Images")
with gr.Tab("Team Overview"):
team_input = gr.Textbox(label="Enter Team Name")
team_output = gr.Textbox(label="Team Overview")
team_news_output = gr.Textbox(label="Team News")
team_image_output = gr.Gallery(label="Team Images")
team_input.submit(get_team_overview, inputs=team_input, outputs=team_output)
team_input.submit(
fetch_news_images,
inputs=team_input,
outputs=[team_news_output, team_image_output],
)
with gr.Tab("Season Predictions"):
team_input_pred = gr.Textbox(label="Enter Team Name")
predictions_output = gr.Textbox(label="Season Predictions")
team_news_output_pred = gr.Textbox(label="Team News")
team_image_output_pred = gr.Gallery(label="Team gallery")
team_input_pred.submit(predict_season_outcomes, inputs=team_input_pred, outputs=predictions_output)
team_input_pred.submit(
fetch_news_images,
inputs=team_input_pred,
outputs=[team_news_output_pred, team_image_output_pred],
)
with gr.Tab("Player Wildcards"):
player_input = gr.Textbox(label="Enter Player Name")
player_output = gr.Textbox(label="Player Highlights")
player_news_output = gr.Textbox(label="Player News")
player_image_output = gr.Gallery(label="Player Gallery")
player_input.submit(get_player_wildcards, inputs=player_input, outputs=player_output)
player_input.submit(
fetch_news_images,
inputs=player_input,
outputs=[player_news_output, player_image_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()