pdfchat / app.py
ogegadavis254's picture
Update app.py
c1cf6d8 verified
raw
history blame
3.99 kB
import streamlit as st
import requests
import os
import json
import pandas as pd
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 get performance data from AI
def get_performance_data(conditions):
all_message = (
f"Provide the expected sports performance score at conditions: "
f"Temperature {conditions['temperature']}°C."
)
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
# Example: Replace with actual data from API
performance_scores = [75, 80, 70, 85, 78, 72, 82] # Replace with actual data from API
return performance_scores
# Streamlit app layout
st.title("Climate Impact on Sports Performance")
st.write("Analyze and visualize the impact of temperature on sports performance.")
# Input for temperature
temperature = st.number_input("Temperature (°C):", min_value=-50, max_value=50, value=25)
# Button to generate predictions
if st.button("Generate Prediction"):
conditions = {
"temperature": temperature
}
try:
with st.spinner("Generating predictions..."):
# Call AI model to get qualitative analysis
qualitative_analysis = (
f"Assess the impact on sports performance at temperature: "
f"{temperature}°C."
)
qualitative_result = call_ai_model(qualitative_analysis)
# Get performance score for specified conditions
performance_scores = get_performance_data(conditions)
st.success("Predictions generated.")
# Display qualitative analysis
st.subheader("Qualitative Analysis")
st.write(qualitative_result)
# Display performance score
st.subheader("Performance Score")
st.write(f"Predicted Performance Scores: {performance_scores}")
# Plotting the data
st.subheader("Performance Score vs Temperature")
# Plot performance score against temperature
fig, ax = plt.subplots()
ax.plot(conditions['temperature'], performance_scores, marker='o', linestyle='-', color='b')
ax.set_xlabel('Temperature (°C)')
ax.set_ylabel('Performance Score')
ax.set_title('Performance Score vs Temperature')
ax.grid(True)
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}")