Spaces:
Running
Running
File size: 4,419 Bytes
4b3d161 c693557 ae34c03 c693557 a81bc79 66afd66 a81bc79 8704615 8bcba39 8704615 c693557 d4ab616 c693557 2d6609f c693557 a81bc79 c693557 a81bc79 c693557 a81bc79 c693557 4b3d161 cc8cc5f 4cdbca9 4b3d161 00d7764 983c829 9093335 4cdbca9 9093335 5cc3227 00d7764 5cc3227 7eb4b57 5cc3227 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
import streamlit as st
import requests
import os
# Third-party API endpoint and headers
API_URL = "https://api.hyperbolic.xyz/v1/chat/completions"
API_HEADERS = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['API_TOKEN']}"
}
# 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"""
<div style="
font-size: 16px;
font-family: Arial, sans-serif;
color: #000000; /* black font color */
">
<strong>Nietzsche:</strong> {bot_response}
</div>
""",
unsafe_allow_html=True
)
# User input
user_input = st.text_input("Your Question", placeholder="Ask Nietzsche...", key="user_input")
# Submit button
if st.button("Submit"):
if user_input.strip(): # Check if input is not empty
bot_response = chat_with_nietzsche(user_input)
st.session_state.history.append((user_input, bot_response))
st.rerun() # Refresh the app to display the new response
# Run the Streamlit app
if __name__ == "__main__":
main() |