JBHF commited on
Commit
11576c6
·
verified ·
1 Parent(s): 8b633c7

Create app.py_03-11-2024_ 01u30m_CET

Browse files
Files changed (1) hide show
  1. app.py_03-11-2024_ 01u30m_CET +156 -0
app.py_03-11-2024_ 01u30m_CET ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py 03-11-2024, 01:30 CET
2
+ # C:\Users\jfhmb\BIG 5 OCEAN PSYCHOLOGICAL PERSON PROFILE FROM ANSWERS TO QUESTION SET
3
+ # EVERNOTE :
4
+ # SYNTHETIC RANDOM BIG 5 PSYCHOLOGICAL GROUNDTRUTH PROFILE
5
+ # —> BIOGRAPHICAL PERSON DESCRIPTION
6
+ # —> ANTWOORDEN OP SET VAN VRAGEN OM PROFIEL UIT TE KUNNEN AFLEIDEN
7
+ # —> PSYCHOLOGISCH BIG 5 OCEAN PROFIEL
8
+ # -> VERGELIJKING BIG 5 OCEAN GROUNDTRUTH EN AFGELEID PROFIEL
9
+ #
10
+ # https://share.evernote.com/note/ba75c830-9a90-e368-b8f7-0c2a6f83b3c8
11
+ #
12
+ # EN
13
+ #
14
+ # KOPIE - SYNTHETIC RANDOM BIG 5 PSYCHOLOGICAL GROUNDTRUTH PROFILE —> BIOGRAPHICAL PERSON DESCRIPTION —> ANTWOORDEN OP SET VAN VRAGEN OM PROFIEL UIT TE KUNNEN AFLEIDEN —> PSYCHOLOGISCH BIG 5 OCEAN PROFIEL - VERGELIJKING BIG 5 OCEAN GROUNDTRUTH EN AFGELEID P
15
+ #
16
+ # https://share.evernote.com/note/04bd5628-aeb5-642f-0b69-c4d615aedf5e
17
+ #
18
+ # 03-11-2024
19
+
20
+ # CHANGES:
21
+ # IN enereer_big5_profiel(antwoorden):
22
+ #
23
+ # """AAN HET EINDE:
24
+ # GEEF EEN WEERGAVE VAN HET BIG 5 OCEAN MODEL IN 5 CIJFERS TUSSEN 1 EN 5,
25
+ # EN EEN SCHATTING VAN DE ONNAUWKEURIGHEID IN DIE CIJFERS
26
+ # IN DE VORM VAN EEN RANGE VAN MINIMUM TO MAXIMUM WAARDE DIE UIT DE ANALYSE KAN WORDEN AFGELEID.
27
+ # GEEF DIT DEEL VAN JE ANWOORD IN DE VORM VAN EEN KEURIGE TABEL IN MARKDOWN FORMAAT.\n"""
28
+ #
29
+ # IN ...
30
+
31
+
32
+ # Import necessary modules
33
+ import streamlit as st
34
+ import os
35
+ from datetime import datetime
36
+ from groq import Groq
37
+
38
+ # Initialize the GROQ client
39
+ client = Groq(
40
+ api_key=os.environ.get("GROQ_API_KEY"), # Ensure the API key is set in the environment variables
41
+ )
42
+
43
+ # Define the questions to ask the user
44
+ vragenlijst = [
45
+ "Hoe zou je jezelf in drie woorden beschrijven?",
46
+ "Wat beschouw je als je grootste sterkte en je grootste zwakte? Waarom?",
47
+ "Welke drie waarden vind je het belangrijkste in het leven?",
48
+ "Wat beschouw je als de belangrijkste motivatie achter je handelen?",
49
+ "Hoe vaak probeer je nieuwe dingen, zoals een nieuw gerecht, hobby of reismogelijkheid?",
50
+ "Kun je een voorbeeld geven van een situatie waarin je buiten je comfortzone bent gegaan?",
51
+ "Wat voor soort boeken of films trekt je aan?",
52
+ "Hoe belangrijk is het voor jou om plannen en doelen te hebben? Waarom?",
53
+ "Hoe ga je om met deadlines? Wat doe je als een deadline lastig te halen is?",
54
+ "Hoe voel je je over grote sociale bijeenkomsten en feestjes? Vind je ze leuk of vermoeiend?",
55
+ "Hoe belangrijk zijn vriendschappen voor je, en hoeveel tijd besteed je eraan?",
56
+ "Wat geeft je energie: tijd doorbrengen met anderen of alleen zijn?",
57
+ "Hoe ga je om met conflicten? Probeer je deze te vermijden of los je ze graag op?",
58
+ "Hoe belangrijk is het voor je om anderen te helpen?",
59
+ "Hoe vaak ervaar je stress, en hoe reageer je daarop?",
60
+ "Hoe reageer je op kritiek? Wat voor gevoelens roept dit bij je op?",
61
+ "Hoe belangrijk is het voor jou om emoties uit te drukken? Hoe doe je dat?",
62
+ "Hoe ga je om met teleurstellingen of tegenslagen?",
63
+ "Hoe reageer je wanneer iemand je pijn doet of teleurstelt?",
64
+ "Vind je het makkelijk om fouten van anderen te vergeven? Waarom wel of niet?",
65
+ "Hoe besteed je het liefst je vrije tijd?",
66
+ "Wat zijn activiteiten die je echt vreugde geven?",
67
+ "Wat zijn de drie grootste doelen die je op dit moment hebt?",
68
+ "Wat zou je willen dat mensen zich over jou herinneren?",
69
+ ]
70
+
71
+ # Define function to generate biography using the GROQ LLM model
72
+ def genereer_biografie(antwoorden):
73
+ prompt = "Hier zijn de antwoorden van de gebruiker:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
74
+ prompt += "BELANGRIJK: Doe je in response geen aannamen over het geslacht van de persoon, houd de beschrijving in die zin algemeen !\n"
75
+
76
+ chat_completion = client.chat.completions.create(
77
+ messages=[{"role": "user", "content": prompt}],
78
+ model="llama-3.1-70b-versatile",
79
+ )
80
+
81
+ return chat_completion.choices[0].message.content
82
+
83
+ # Define function to generate Big 5 profile using the GROQ LLM model
84
+ def genereer_big5_profiel(antwoorden):
85
+ prompt = (
86
+ "Geef je antwoorden uitsluitend en alleen in het Nederlands!\n"
87
+ "Dit is je opdracht:\n"
88
+ "You will analyze a provided text to identify the Big Five personality traits—Openness, Conscientiousness, Extraversion, Agreeableness, and Neuroticism (OCEAN model)—and produce a detailed psychological profile based on this analysis. Structure your response as follows:\n"
89
+ "1. Trait Analysis: For each of the Big Five traits, provide:\n"
90
+ "• Trait Level: Indicate if the trait appears high, moderate, or low.\n"
91
+ "• Supporting Evidence: Use specific words, phrases, or subtle language cues in the text to determine the intensity of each trait. Highlight both explicit statements and nuanced expressions.\n"
92
+ "• Trait Aspects: Identify any prominent sub-traits (e.g., Assertiveness within Extraversion, Compassion within Agreeableness).\n"
93
+ "• Illustrative Language: Provide sample language that might indicate high, moderate, and low levels of each trait.\n"
94
+ "2. Overall Psychological Profile: Synthesize how these traits combine to shape the individual’s personality.\n"
95
+ "3. Applications and Potential Outcomes:\n"
96
+ "• Life Impact: Use specific references from personality psychology to discuss how each trait level may influence areas like personal growth, social relationships, and career success.\n"
97
+
98
+ "Doe je in response geen aannamen over het geslacht van de persoon, houd de beschrijving in die zin algemeen.\n"
99
+
100
+ "BELANGRIJK: Output het Big 5 profiel in een keurig gestructureerde tabel in markdown format en op geen enkele andere manier! \n"
101
+
102
+ """AAN HET EINDE:
103
+ GEEF EEN WEERGAVE VAN HET BIG 5 OCEAN MODEL IN 5 CIJFERS TUSSEN 1 EN 5,
104
+ EN EEN SCHATTING VAN DE ONNAUWKEURIGHEID IN DIE CIJFERS
105
+ IN DE VORM VAN EEN RANGE VAN MINIMUM TO MAXIMUM WAARDE DIE UIT DE ANALYSE KAN WORDEN AFGELEID.
106
+ GEEF DIT DEEL VAN JE ANWOORD IN DE VORM VAN EEN KEURIGE TABEL IN MARKDOWN FORMAAT
107
+ MET KOLOM NAMEN Big 5 Persoonlijkheids Kenmerk, Niveau (1-5), Onnauwkeurigheid (range).
108
+ Gebruik voor de Big 5 Persoonlijkheids Kenmerken in de tabel uitsluiten de volgende benamingen:
109
+ Openheid
110
+ Nauwgezetheid
111
+ Extraversie
112
+ Vriendelijkheid
113
+ Neurotische tendensen\n"""
114
+
115
+ "INPUT:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
116
+ )
117
+
118
+ chat_completion = client.chat.completions.create(
119
+ messages=[{"role": "user", "content": prompt}],
120
+ model="llama-3.1-70b-versatile",
121
+ )
122
+
123
+ return chat_completion.choices[0].message.content
124
+
125
+ # Main application
126
+ def main():
127
+ st.set_page_config(page_title="Persoonlijkheidstest", page_icon=":smiley:", layout="wide")
128
+
129
+ # Title
130
+ st.title("Persoonlijkheidstest")
131
+
132
+ # Collect user answers
133
+ antwoorden = {}
134
+ for vraag in vragenlijst:
135
+ antwoord = st.text_input(vraag)
136
+ if antwoord:
137
+ antwoorden[vraag] = antwoord
138
+
139
+ # Generate biography and Big 5 profile if all questions are answered
140
+ if len(antwoorden) == len(vragenlijst):
141
+ if st.button("Genereer Biografie en Big 5 Profiel"):
142
+ # Generate biography
143
+ biografie = genereer_biografie(antwoorden)
144
+
145
+ # Generate Big 5 profile
146
+ big5_profiel = genereer_big5_profiel(antwoorden)
147
+
148
+ # Display results
149
+ st.subheader("Biografie")
150
+ st.markdown(biografie)
151
+
152
+ st.subheader("Big 5 OCEAN Profiel")
153
+ st.markdown(big5_profiel)
154
+
155
+ if __name__ == "__main__":
156
+ main()