JBHF commited on
Commit
73a846c
·
verified ·
1 Parent(s): aa10741

Create app.py

Browse files

Initiaql commit - app.py 03-11-2024, 15:25 CET

Files changed (1) hide show
  1. app.py +142 -0
app.py ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py 03-11-2024, 15:25 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
+ # Hoofdapplicatie
21
+ def main():
22
+
23
+ import streamlit as st
24
+ import pandas as pd
25
+ import json
26
+ import os
27
+ from datetime import datetime
28
+ from groq import Groq
29
+
30
+ # Initialiseer de GROQ client
31
+ client = Groq(
32
+ api_key=os.environ.get("GROQ_API_KEY"), # Zorg ervoor dat de API-sleutel is ingesteld
33
+ )
34
+
35
+ # os.environ.get("GROQ_API_KEY") # JB OK
36
+
37
+
38
+
39
+ # Voorbeeldantwoorden van VIRTUAL_PERSON_A
40
+ voorbeeld_antwoorden = {
41
+ "Hoe zou je jezelf in drie woorden beschrijven?": "Energiek, spontaan, en sociaal.",
42
+ "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.",
43
+ "Welke drie waarden vind je het belangrijkste in het leven?": "Creativiteit, vrijheid, en vriendschap.",
44
+ "Wat beschouw je als de belangrijkste motivatie achter je handelen?": "Ik wil zoveel mogelijk uit het leven halen en nieuwe ervaringen opdoen.",
45
+ "Hoe vaak probeer je nieuwe dingen, zoals een nieuw gerecht, hobby of reismogelijkheid?": "Regelmatig; ik hou ervan om nieuwe dingen te proberen.",
46
+ "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.",
47
+ "Wat voor soort boeken of films trekt je aan?": "Avonturenverhalen, fictie en alles wat mijn verbeelding prikkelt.",
48
+ "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.",
49
+ "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.",
50
+ "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.",
51
+ "Hoe belangrijk zijn vriendschappen voor je, en hoeveel tijd besteed je eraan?": "Vriendschappen zijn essentieel voor mij, en ik besteed er veel tijd aan.",
52
+ "Wat geeft je energie: tijd doorbrengen met anderen of alleen zijn?": "Zeker tijd doorbrengen met anderen.",
53
+ "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.",
54
+ "Hoe belangrijk is het voor je om anderen te helpen?": "Ik help graag, vooral mijn vrienden en familie.",
55
+ "Hoe vaak ervaar je stress, en hoe reageer je daarop?": "Niet zo vaak; ik kan goed omgaan met stress en blijf meestal kalm.",
56
+ "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.",
57
+ "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.",
58
+ "Hoe ga je om met teleurstellingen of tegenslagen?": "Ik laat het snel los en focus me liever op wat ik kan veranderen.",
59
+ "Hoe reageer je wanneer iemand je pijn doet of teleurstelt?": "Ik probeer het uit te praten en snel te vergeven.",
60
+ "Vind je het makkelijk om fouten van anderen te vergeven? Waarom wel of niet?": "Ja, iedereen maakt fouten; ik neem het niet snel persoonlijk.",
61
+ "Hoe besteed je het liefst je vrije tijd?": "Ik doe graag leuke dingen met vrienden, zoals reizen of uit eten gaan.",
62
+ "Wat zijn activiteiten die je echt vreugde geven?": "Reizen, nieuwe dingen proberen, en tijd doorbrengen met vrienden.",
63
+ "Wat zijn de drie grootste doelen die je op dit moment hebt?": "De wereld rondreizen, nieuwe vaardigheden leren, en een brede vriendengroep opbouwen.",
64
+ "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."
65
+ }
66
+
67
+
68
+
69
+ # Functie om de biografie te genereren via het GROQ LLM-model
70
+ def genereer_biografie(antwoorden):
71
+ prompt = "Hier zijn de antwoorden van de gebruiker:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
72
+
73
+ chat_completion = client.chat.completions.create(
74
+ messages=[
75
+ {
76
+ "role": "user",
77
+ "content": prompt,
78
+ }
79
+ ],
80
+ model="llama-3.1-70b-versatile",
81
+ )
82
+
83
+ return chat_completion.choices[0].message.content
84
+
85
+
86
+
87
+
88
+ # Functie om het Big 5 OCEAN profiel te genereren via het GROQ LLM-model
89
+ def genereer_big5_profiel(antwoorden):
90
+ prompt = (
91
+ "Geef je antwoorden uitsluitend en alleen in het Nederlands!\n"
92
+ "Dit is je opdracht:\n"
93
+ "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"
94
+ "1. Trait Analysis: For each of the Big Five traits, provide:\n"
95
+ "• Trait Level: Indicate if the trait appears high, moderate, or low.\n"
96
+ "• 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"
97
+ "• Trait Aspects: Identify any prominent sub-traits (e.g., Assertiveness within Extraversion, Compassion within Agreeableness).\n"
98
+ "• Illustrative Language: Provide sample language that might indicate high, moderate, and low levels of each trait.\n"
99
+ "2. Overall Psychological Profile: Synthesize how these traits combine to shape the individual’s personality.\n"
100
+ "3. Applications and Potential Outcomes:\n"
101
+ "• 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"
102
+ "INPUT:\n" + "\n".join([f"{vraag}: {antwoord}" for vraag, antwoord in antwoorden.items()])
103
+ )
104
+
105
+ chat_completion = client.chat.completions.create(
106
+ messages=[
107
+ {
108
+ "role": "user",
109
+ "content": prompt,
110
+ }
111
+ ],
112
+ model="llama-3.1-70b-versatile",
113
+ )
114
+
115
+ return chat_completion.choices[0].message.content
116
+
117
+
118
+
119
+
120
+
121
+ st.set_page_config(page_title="Persoonlijkheidstest", page_icon=":smiley:", layout="wide")
122
+
123
+ # Titel
124
+ st.title("Persoonlijkheidstest")
125
+
126
+ # Antwoorden weergeven
127
+ if st.button("Genereer Biografie en Big 5 Profiel"):
128
+ # Biografie genereren
129
+ biografie = genereer_biografie(voorbeeld_antwoorden)
130
+
131
+ # Big 5 profiel genereren
132
+ big5_profiel = genereer_big5_profiel(voorbeeld_antwoorden)
133
+
134
+ # Resultaten weergeven
135
+ st.subheader("Biografie")
136
+ st.markdown(biografie)
137
+
138
+ st.subheader("Big 5 OCEAN Profiel")
139
+ st.markdown(big5_profiel)
140
+
141
+ if __name__ == "__main__":
142
+ main()