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() | |