Spaces:
Sleeping
Sleeping
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() | |