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