JBHF commited on
Commit
872fb21
·
verified ·
1 Parent(s): a6ec743

Create app.py_03-11-2024_16u45m_ CET.py

Browse files
Files changed (1) hide show
  1. app.py_03-11-2024_16u45m_ CET.py +170 -0
app.py_03-11-2024_16u45m_ CET.py ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py 03-11-2024, 16:45 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
+ # Hoofdapplicatie
32
+ def main():
33
+
34
+ import streamlit as st
35
+ import pandas as pd
36
+ import json
37
+ import os
38
+ from datetime import datetime
39
+ from groq import Groq
40
+
41
+ # Initialiseer de GROQ client
42
+ client = Groq(
43
+ api_key=os.environ.get("GROQ_API_KEY"), # Zorg ervoor dat de API-sleutel is ingesteld
44
+ )
45
+
46
+ # os.environ.get("GROQ_API_KEY") # JB OK
47
+
48
+
49
+
50
+ # Voorbeeldantwoorden van VIRTUAL_PERSON_A
51
+ voorbeeld_antwoorden = {
52
+ "Hoe zou je jezelf in drie woorden beschrijven?": "Energiek, spontaan, en sociaal.",
53
+ "Wat beschouw je als je grootste sterkte en je grootste zwakte? Waarom?": "Mijn grootste sterkte is mijn vermogen om makkelijk contact te maken; mijn grootste zwakte is dat ik niet altijd even georganiseerd ben.",
54
+ "Welke drie waarden vind je het belangrijkste in het leven?": "Creativiteit, vrijheid, en vriendschap.",
55
+ "Wat beschouw je als de belangrijkste motivatie achter je handelen?": "Ik wil zoveel mogelijk uit het leven halen en nieuwe ervaringen opdoen.",
56
+ "Hoe vaak probeer je nieuwe dingen, zoals een nieuw gerecht, hobby of reismogelijkheid?": "Regelmatig; ik hou ervan om nieuwe dingen te proberen.",
57
+ "Kun je een voorbeeld geven van een situatie waarin je buiten je comfortzone bent gegaan?": "Bijvoorbeeld een reis naar een onbekend land zonder van tevoren iets te plannen.",
58
+ "Wat voor soort boeken of films trekt je aan?": "Avonturenverhalen, fictie en alles wat mijn verbeelding prikkelt.",
59
+ "Hoe belangrijk is het voor jou om plannen en doelen te hebben? Waarom?": "Het is handig, maar ik ben ook flexibel en zie wel hoe dingen lopen.",
60
+ "Hoe ga je om met deadlines? Wat doe je als een deadline lastig te halen is?": "Ik probeer mijn best te doen, maar blijf meestal flexibel en maak me niet snel zorgen.",
61
+ "Hoe voel je je over grote sociale bijeenkomsten en feestjes? Vind je ze leuk of vermoeiend?": "Ik vind ze geweldig! Ik haal er veel energie uit.",
62
+ "Hoe belangrijk zijn vriendschappen voor je, en hoeveel tijd besteed je eraan?": "Vriendschappen zijn essentieel voor mij, en ik besteed er veel tijd aan.",
63
+ "Wat geeft je energie: tijd doorbrengen met anderen of alleen zijn?": "Zeker tijd doorbrengen met anderen.",
64
+ "Hoe ga je om met conflicten? Probeer je deze te vermijden of los je ze graag op?": "Ik los conflicten graag op, maar ga een confrontatie niet uit de weg als dat nodig is.",
65
+ "Hoe belangrijk is het voor je om anderen te helpen?": "Ik help graag, vooral mijn vrienden en familie.",
66
+ "Hoe vaak ervaar je stress, en hoe reageer je daarop?": "Niet zo vaak; ik kan goed omgaan met stress en blijf meestal kalm.",
67
+ "Hoe reageer je op kritiek? Wat voor gevoelens roept dit bij je op?": "Kritiek raakt me niet snel; ik neem het zoals het komt en leer ervan.",
68
+ "Hoe belangrijk is het voor jou om emoties uit te drukken? Hoe doe je dat?": "Ik deel mijn emoties meestal openlijk, vooral met mensen die dichtbij me staan.",
69
+ "Hoe ga je om met teleurstellingen of tegenslagen?": "Ik laat het snel los en focus me liever op wat ik kan veranderen.",
70
+ "Hoe reageer je wanneer iemand je pijn doet of teleurstelt?": "Ik probeer het uit te praten en snel te vergeven.",
71
+ "Vind je het makkelijk om fouten van anderen te vergeven? Waarom wel of niet?": "Ja, iedereen maakt fouten; ik neem het niet snel persoonlijk.",
72
+ "Hoe besteed je het liefst je vrije tijd?": "Ik doe graag leuke dingen met vrienden, zoals reizen of uit eten gaan.",
73
+ "Wat zijn activiteiten die je echt vreugde geven?": "Reizen, nieuwe dingen proberen, en tijd doorbrengen met vrienden.",
74
+ "Wat zijn de drie grootste doelen die je op dit moment hebt?": "De wereld rondreizen, nieuwe vaardigheden leren, en een brede vriendengroep opbouwen.",
75
+ "Wat zou je willen dat mensen zich over jou herinneren?": "Dat ik een spontaan, zorgzaam en sociaal persoon was die mensen inspireerde om plezier te hebben in het leven."
76
+ }
77
+
78
+
79
+
80
+ # Functie om de biografie te genereren via het GROQ LLM-model
81
+ def genereer_biografie(antwoorden):
82
+ prompt = "Hier zijn de antwoorden van de gebruiker:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
83
+ prompt = prompt + "Doe je in response geen aannamen over het geslacht van de persoon, houd de beschrijving in die zin algemeen.\n"
84
+
85
+ chat_completion = client.chat.completions.create(
86
+ messages=[
87
+ {
88
+ "role": "user",
89
+ "content": prompt,
90
+ }
91
+ ],
92
+ model="llama-3.1-70b-versatile",
93
+ )
94
+
95
+ return chat_completion.choices[0].message.content
96
+
97
+
98
+
99
+
100
+ # Functie om het Big 5 OCEAN profiel te genereren via het GROQ LLM-model
101
+ def genereer_big5_profiel(antwoorden):
102
+ prompt = (
103
+ "Geef je antwoorden uitsluitend en alleen in het Nederlands!\n"
104
+ "Dit is je opdracht:\n"
105
+ "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"
106
+ "1. Trait Analysis: For each of the Big Five traits, provide:\n"
107
+ "• Trait Level: Indicate if the trait appears high, moderate, or low.\n"
108
+ "• 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"
109
+ "• Trait Aspects: Identify any prominent sub-traits (e.g., Assertiveness within Extraversion, Compassion within Agreeableness).\n"
110
+ "• Illustrative Language: Provide sample language that might indicate high, moderate, and low levels of each trait.\n"
111
+ "2. Overall Psychological Profile: Synthesize how these traits combine to shape the individual’s personality.\n"
112
+ "3. Applications and Potential Outcomes:\n"
113
+ "• 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"
114
+
115
+ "Doe je in response geen aannamen over het geslacht van de persoon, houd de beschrijving in die zin algemeen.\n"
116
+
117
+ """AAN HET EINDE:
118
+ GEEF EEN WEERGAVE VAN HET BIG 5 OCEAN MODEL IN 5 CIJFERS TUSSEN 1 EN 5,
119
+ EN EEN SCHATTING VAN DE ONNAUWKEURIGHEID IN DIE CIJFERS
120
+ IN DE VORM VAN EEN RANGE VAN MINIMUM TO MAXIMUM WAARDE DIE UIT DE ANALYSE KAN WORDEN AFGELEID.
121
+ GEEF DIT DEEL VAN JE ANWOORD IN DE VORM VAN EEN KEURIGE TABEL IN MARKDOWN FORMAAT
122
+ MET KOLOM NAMEN Big 5 Persoonlijkheids Kenmerk, Niveau (1-5), Onnauwkeurigheid (range).
123
+ Gebruik voor de Big 5 Persoonlijkheids Kenmerken in de tabel uitsluiten de volgende benaminge:
124
+ Openheid
125
+ Nauwgezetheid
126
+ Extraversie
127
+ Vriendelijkheid
128
+ Neurotische tendensen\n"""
129
+
130
+ "INPUT:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
131
+ )
132
+
133
+ chat_completion = client.chat.completions.create(
134
+ messages=[
135
+ {
136
+ "role": "user",
137
+ "content": prompt,
138
+ }
139
+ ],
140
+ model="llama-3.1-70b-versatile",
141
+ )
142
+
143
+ return chat_completion.choices[0].message.content
144
+
145
+
146
+
147
+
148
+
149
+ st.set_page_config(page_title="Persoonlijkheidstest", page_icon=":smiley:", layout="wide")
150
+
151
+ # Titel
152
+ st.title("Persoonlijkheidstest")
153
+
154
+ # Antwoorden weergeven
155
+ if st.button("Genereer Biografie en Big 5 Profiel"):
156
+ # Biografie genereren
157
+ biografie = genereer_biografie(voorbeeld_antwoorden)
158
+
159
+ # Big 5 profiel genereren
160
+ big5_profiel = genereer_big5_profiel(voorbeeld_antwoorden)
161
+
162
+ # Resultaten weergeven
163
+ st.subheader("Biografie")
164
+ st.markdown(biografie)
165
+
166
+ st.subheader("Big 5 OCEAN Profiel")
167
+ st.markdown(big5_profiel)
168
+
169
+ if __name__ == "__main__":
170
+ main()