Spaces:
Runtime error
Runtime error
import os | |
import streamlit as st | |
from openai import OpenAI | |
from typing import List, Dict | |
import random | |
import base64 | |
# Advanced Styling and Cosmic Theme | |
st.set_page_config( | |
page_title="Grok Cosmic Companion", | |
page_icon="π", | |
layout="wide", | |
initial_sidebar_state="expanded" | |
) | |
# Cosmic Background Generator | |
def get_cosmic_background(): | |
# Create a dynamic, gradient cosmic background | |
colors = [ | |
"linear-gradient(135deg, #1e2ad2, #8e2de2)", | |
"linear-gradient(135deg, #ff6a00, #ee0979)", | |
"linear-gradient(135deg, #000428, #004e92)", | |
"linear-gradient(135deg, #2c3e50, #3498db)" | |
] | |
return random.choice(colors) | |
# Advanced CSS with Cosmic Design | |
st.markdown(f""" | |
<style> | |
body {{ | |
background: {get_cosmic_background()}; | |
color: #ffffff; | |
font-family: 'Orbitron', sans-serif; | |
}} | |
.stApp {{ | |
background: transparent; | |
}} | |
.main-container {{ | |
background: rgba(0,0,0,0.7); | |
border-radius: 15px; | |
padding: 20px; | |
backdrop-filter: blur(10px); | |
}} | |
.chat-message {{ | |
background: rgba(255,255,255,0.1); | |
border-radius: 10px; | |
padding: 15px; | |
margin-bottom: 10px; | |
transition: all 0.3s ease; | |
}} | |
.chat-message:hover {{ | |
transform: scale(1.02); | |
box-shadow: 0 0 20px rgba(255,255,255,0.2); | |
}} | |
.stTextInput > div > div > input {{ | |
background: rgba(255,255,255,0.1); | |
color: white; | |
border: 2px solid rgba(255,255,255,0.2); | |
border-radius: 10px; | |
}} | |
.stButton > button {{ | |
background: linear-gradient(45deg, #ff6b6b, #4ecdc4); | |
color: white; | |
border: none; | |
padding: 10px 20px; | |
border-radius: 20px; | |
transition: all 0.3s ease; | |
}} | |
.stButton > button:hover {{ | |
transform: scale(1.1); | |
box-shadow: 0 0 20px rgba(255,255,255,0.3); | |
}} | |
</style> | |
""", unsafe_allow_html=True) | |
class AdvancedGrokChatApp: | |
def __init__(self): | |
# Cosmic AI Configuration | |
self.XAI_API_KEY = "X-ai = xai-1HSpHLqxC3LnInrYpwAobgEVsjchUG0PP0adniSXWGQXwq6YfvcPto9MhsS6ouQtC4a4Dh2qqXmERgQQ" | |
if not self.XAI_API_KEY: | |
st.error("πΈ Cosmic Connection Lost: API Key Missing!") | |
st.stop() | |
self.client = OpenAI( | |
api_key=self.XAI_API_KEY, | |
base_url="https://api.x.ai/v1" | |
) | |
# Advanced Personality Prompts | |
self.personality_modes = { | |
"Cosmic Philosopher": "You are a wise AI that speaks like a blend of Douglas Adams and Carl Sagan.", | |
"Intergalactic Comedian": "You are a witty AI that makes jokes about the universe's absurdities.", | |
"Scientific Oracle": "You provide deep scientific insights with poetic eloquence." | |
} | |
self.current_mode = "Cosmic Philosopher" | |
self.messages: List[Dict] = [] | |
def generate_response(self, user_input: str) -> str: | |
try: | |
# Enhanced Conversation Context | |
system_prompt = ( | |
f"{self.personality_modes[self.current_mode]} " | |
"Respond creatively, with depth and a touch of cosmic wonder." | |
) | |
conversation = [ | |
{"role": "system", "content": system_prompt} | |
] + self.messages + [ | |
{"role": "user", "content": user_input} | |
] | |
response = self.client.chat.completions.create( | |
model="grok-beta", | |
messages=conversation, | |
temperature=0.7, # More creative responses | |
max_tokens=300 | |
) | |
return response.choices[0].message.content | |
except Exception as e: | |
return f"π Cosmic Disruption: {str(e)}" | |
def add_message(self, role: str, content: str): | |
self.messages.append({"role": role, "content": content}) | |
def main(): | |
st.title("π Grok: Cosmic Companion") | |
# Initialize chat app with session state | |
if 'chat_app' not in st.session_state: | |
st.session_state.chat_app = AdvancedGrokChatApp() | |
# Sidebar with Advanced Controls | |
with st.sidebar: | |
st.header("π Cosmic Controls") | |
# Personality Mode Selector | |
mode = st.selectbox( | |
"Choose Grok's Personality", | |
list(st.session_state.chat_app.personality_modes.keys()) | |
) | |
st.session_state.chat_app.current_mode = mode | |
# Conversation Management | |
col1, col2 = st.columns(2) | |
with col1: | |
if st.button("π Reset"): | |
st.session_state.chat_app.messages = [] | |
st.success("Conversation reset to cosmic zero!") | |
with col2: | |
if st.button("πΎ Save Conversation"): | |
# Placeholder for conversation saving logic | |
st.info("Conversation saved to cosmic archives!") | |
# Chat Interface | |
for msg in st.session_state.chat_app.messages: | |
with st.chat_message(msg['role'], avatar='π€' if msg['role'] == 'assistant' else 'π€'): | |
st.markdown(msg['content']) | |
# User Input | |
if user_input := st.chat_input("Whisper your cosmic query..."): | |
# User Message | |
st.session_state.chat_app.add_message("user", user_input) | |
with st.chat_message("user", avatar='π€'): | |
st.markdown(user_input) | |
# AI Response | |
with st.chat_message("assistant", avatar='π'): | |
with st.spinner("Traversing cosmic data streams..."): | |
response = st.session_state.chat_app.generate_response(user_input) | |
st.markdown(response) | |
st.session_state.chat_app.add_message("assistant", response) | |
if __name__ == "__main__": | |
main() |