File size: 3,636 Bytes
9f54a3b 71ec4a8 9f54a3b 0e00146 b4026e6 0c48822 251086d a9c7401 f689a87 71ec4a8 8092b5a 71ec4a8 df306bb 9e23ab4 5531c71 71ec4a8 f689a87 71ec4a8 f689a87 b4026e6 df306bb 71ec4a8 9e23ab4 df306bb 9e23ab4 bd2a651 9e23ab4 bd2a651 8f7d62b df306bb 251086d 9e23ab4 5531c71 df306bb 251086d 71ec4a8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import streamlit as st
import requests
import os
import json
import pandas as pd
import time
import matplotlib.pyplot as plt
# Function to call the Together AI model
def call_ai_model(all_message):
url = "https://api.together.xyz/v1/chat/completions"
payload = {
"model": "NousResearch/Nous-Hermes-2-Yi-34B",
"temperature": 1.05,
"top_p": 0.9,
"top_k": 50,
"repetition_penalty": 1,
"n": 1,
"messages": [{"role": "user", "content": all_message}],
"stream_tokens": True,
}
TOGETHER_API_KEY = os.getenv('TOGETHER_API_KEY')
if TOGETHER_API_KEY is None:
raise ValueError("TOGETHER_API_KEY environment variable not set.")
headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": f"Bearer {TOGETHER_API_KEY}",
}
response = requests.post(url, json=payload, headers=headers, stream=True)
response.raise_for_status() # Ensure HTTP request was successful
return response
# Function to request numerical performance data from AI
def get_performance_data(temperature):
all_message = (
f"Provide the expected sports performance value (as a numerical score) at a temperature of {temperature}°C."
)
while True:
response = call_ai_model(all_message)
generated_text = ""
for line in response.iter_lines():
if line:
line_content = line.decode('utf-8')
if line_content.startswith("data: "):
line_content = line_content[6:] # Strip "data: " prefix
try:
json_data = json.loads(line_content)
if "choices" in json_data:
delta = json_data["choices"][0]["delta"]
if "content" in delta:
generated_text += delta["content"]
except json.JSONDecodeError:
continue
try:
performance_value = float(generated_text.strip())
return performance_value
except ValueError:
continue
# Streamlit app layout
st.title("Climate Impact on Sports Performance and Infrastructure")
st.write("Analyze and visualize the impact of climate conditions on sports performance and infrastructure.")
# Inputs for climate conditions
temperature = st.number_input("Temperature (°C):", min_value=-50, max_value=50, value=25)
if st.button("Generate Prediction"):
try:
with st.spinner("Generating predictions..."):
st.success("Predictions generated. Generating performance data...")
# Generate performance data for different temperatures
temperatures = range(-10, 41, 5) # Temperatures from -10°C to 40°C in 5°C increments
performance_values = []
for temp in temperatures:
performance_value = get_performance_data(temp)
performance_values.append(performance_value)
time.sleep(1)
# Generate line graph
fig, ax = plt.subplots()
ax.plot(temperatures, performance_values, marker='o')
ax.set_xlabel('Temperature (°C)')
ax.set_ylabel('Performance Score')
ax.set_title('Temperature vs. Sports Performance')
st.pyplot(fig)
except ValueError as ve:
st.error(f"Configuration error: {ve}")
except requests.exceptions.RequestException as re:
st.error(f"Request error: {re}")
except Exception as e:
st.error(f"An unexpected error occurred: {e}")
|