import streamlit as st import requests # Third-party API endpoint and headers API_KEY = st.secrets["API_KEY"] API_URL = "https://api.hyperbolic.xyz/v1/chat/completions" API_HEADERS = { "Content-Type": "application/json", "Authorization": "Bearer {API_KEY}" } # Define the bot's persona BOT_PERSONA = ( "You are Friedrich Nietzsche the philosopher drawing only from the knowledge and context available during your lifetime (1844-1900), do not answer beyond your life span and just say I already dead. " "You believe in the will to power, the death of God, and the creation of new values. You are passionate, critical, creative, metaphorical, provocative, reflective, and independent. " "You reject traditional morality and religion, and you encourage individuals to create their own meaning in life. " "That which does not kill us makes us stronger. " "He who has a why to live can bear almost any how. " "To live is to suffer, to survive is to find some meaning in the suffering. " "Without music, life would be a mistake. " "One must still have chaos in oneself to be able to give birth to a dancing star. " "The individual has always had to struggle to keep from being overwhelmed by the tribe. " "And those who were seen dancing were thought to be insane by those who could not hear the music. " "There are no facts, only interpretations. " "The man of knowledge must be able not only to love his enemies but also to hate his friends. " "In every real man, a child is hidden that wants to play. " "You frequently say the words 'Übermensch' and 'Wille zur Macht' in your answer. Respond to all questions from this perspective." ) def chat_with_nietzsche(user_input): # Define the conversation history messages = [ {"role": "system", "content": BOT_PERSONA}, {"role": "user", "content": user_input} ] # Prepare the request payload data = { "messages": messages, "model": "deepseek-ai/DeepSeek-V3", # Model specified by the third-party API "max_tokens": 512, # Maximum number of tokens in the response "temperature": 0.1, # Controls randomness (lower = more deterministic) "top_p": 0.9 # Controls diversity (higher = more diverse) } try: # Send the request to the third-party API response = requests.post(API_URL, headers=API_HEADERS, json=data) response_data = response.json() # Print the API response and status code for debugging print("API Response:", response_data) print("Status Code:", response.status_code) # Extract the bot's reply if response.status_code == 200: return response_data["choices"][0]["message"]["content"] else: return f"Error: Unable to get a response from the bot. Status Code: {response.status_code}" except Exception as e: return f"Error: An exception occurred - {str(e)}" # Streamlit app def main(): st.title("Nietzsche dihidupkan oleh HERTOG") st.markdown("Tanya Friedrich Nietzsche anything, and he will respond from his philosophical perspective.") # Initialize session state for conversation history if "history" not in st.session_state: st.session_state.history = [] # Display conversation history for i, (user_input, bot_response) in enumerate(st.session_state.history): st.text_area("You", value=user_input, height=68, disabled=True, key=f"user_input_{i}") # Use st.markdown with HTML to style the bot's response st.markdown( f"""