import streamlit as st import json from openai import OpenAI from pathlib import Path import tempfile import os # Initialize OpenAI client with hardcoded API key # WARNING: This is not secure and should only be used for testing API_KEY = os.getenv("openai") client = OpenAI(api_key=API_KEY) # System prompt for GPT-4 SYSTEM_PROMPT = """ You are an AI assistant that converts user commands into structured JSON data. Your task is to interpret the user's intent and create a JSON object with relevant fields. Always include a 'response' field in the JSON with a friendly, conversational reply to the user's command. For example: User: "Play Taylor Swift on Spotify" JSON: { "action": "play music", "application": "Spotify", "artist": "Taylor Swift", "response": "Sure, I'm playing Taylor Swift on Spotify for you now. Enjoy the music!" } User: "What's the weather like in New York?" JSON: { "action": "check weather", "location": "New York", "response": "I'm checking the weather in New York for you. One moment please." } Adapt the JSON structure to fit the context of the command, but always include the 'response' field. """ def process_command(command): text=command response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": text} ] ) print("Raw API Response:", response) return json.loads(response.choices[0].message.content) def text_to_speech(text): speech_file_path = Path(tempfile.gettempdir()) / "speech.mp3" response = client.audio.speech.create( model="tts-1", voice="nova", input=text ) response.stream_to_file(speech_file_path) return speech_file_path st.title("Text Command Assistant") # Text input for user command command = st.text_input("Enter your command:") if st.button("Process Command"): if command: # Process the text command with st.spinner("Processing command..."): result = process_command(command) # Display JSON result st.json(result) # Extract response and convert to speech response_text = result["response"] with st.spinner("Generating speech..."): speech_file = text_to_speech(response_text) # Play the generated speech st.audio(str(speech_file)) else: st.warning("Please enter a command.") st.markdown("---") st.write("Created by Shrestha Singh")