Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
import os | |
from openai import OpenAI | |
# Initialize the OpenAI client | |
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) | |
def fetch_data_from_api(url): | |
response = requests.get(url) | |
if response.status_code == 200: | |
return response.json() | |
else: | |
return None | |
def generate_summary(data): | |
if data is None or not isinstance(data, dict): | |
return "Error: Data is not available or not in the expected format" | |
text = " ".join(str(value) for value in data.values()) | |
return text | |
def generate_chat_response(summary, data, client): | |
try: | |
chat_completion = client.chat.completions.create( | |
messages=[{"role": "user", "content": f"{summary} {data}"}], | |
model="gpt-3.5-turbo", | |
) | |
return chat_completion.choices[0].message['content'] | |
except Exception as e: | |
return f"Failed to generate chat response: {e}" | |
def main(): | |
st.title("Display Data from API and Generate Chat Response") | |
# Fetch OpenAI API key from UI input | |
openai_api_key = st.text_input("Enter your OpenAI API key:", type="password") | |
api_endpoint = st.text_input("Enter the API endpoint:") | |
if api_endpoint and openai_api_key: | |
# Initialize the OpenAI client with the UI provided API key | |
client = OpenAI(api_key=openai_api_key) | |
data = fetch_data_from_api(api_endpoint) | |
if data: | |
st.subheader("Data from API") | |
st.write(data) | |
summary = generate_summary(data) | |
st.subheader("Summary Generated") | |
st.write(summary) | |
chat_response = generate_chat_response(summary, data, client) | |
st.subheader("Chat Response Generated") | |
st.write(chat_response) | |
else: | |
st.write("Error: Failed to fetch data from the API endpoint") | |
elif not openai_api_key: | |
st.warning("Please enter your OpenAI API key.") | |
if __name__ == "__main__": | |
main() | |