Add 2 files
Browse files- index.html +274 -419
- prompts.txt +3 -1
index.html
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
-
<title>Franz - Psychoanalytischer
|
7 |
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
9 |
<style>
|
@@ -74,24 +74,9 @@
|
|
74 |
50% { transform: translateY(-5px); }
|
75 |
}
|
76 |
|
77 |
-
.
|
78 |
-
background-color: #
|
79 |
-
|
80 |
-
}
|
81 |
-
|
82 |
-
.concept-tag {
|
83 |
-
background-color: #ecfdf5;
|
84 |
-
color: #065f46;
|
85 |
-
}
|
86 |
-
|
87 |
-
.recommendation-tag {
|
88 |
-
background-color: #ffedd5;
|
89 |
-
color: #9a3412;
|
90 |
-
}
|
91 |
-
|
92 |
-
.warning-tag {
|
93 |
-
background-color: #fee2e2;
|
94 |
-
color: #b91c1c;
|
95 |
}
|
96 |
|
97 |
.fade-in {
|
@@ -103,29 +88,11 @@
|
|
103 |
to { opacity: 1; transform: translateY(0); }
|
104 |
}
|
105 |
|
106 |
-
.
|
107 |
-
border-left: 3px solid #
|
108 |
padding-left: 12px;
|
109 |
margin: 12px 0;
|
110 |
}
|
111 |
-
|
112 |
-
.concept-box {
|
113 |
-
background-color: #f8fafc;
|
114 |
-
border: 1px solid #e2e8f0;
|
115 |
-
border-radius: 8px;
|
116 |
-
padding: 12px;
|
117 |
-
margin: 12px 0;
|
118 |
-
}
|
119 |
-
|
120 |
-
.divider {
|
121 |
-
border-top: 1px dashed #cbd5e1;
|
122 |
-
margin: 16px 0;
|
123 |
-
}
|
124 |
-
|
125 |
-
.highlight {
|
126 |
-
background-color: #fef08a;
|
127 |
-
padding: 0 2px;
|
128 |
-
}
|
129 |
</style>
|
130 |
</head>
|
131 |
<body class="bg-gray-50">
|
@@ -139,7 +106,7 @@
|
|
139 |
<h1 class="title-font text-3xl font-bold text-gray-800">Franz</h1>
|
140 |
</div>
|
141 |
<p class="text-gray-600 max-w-2xl mx-auto">
|
142 |
-
Ihr psychoanalytischer
|
143 |
</p>
|
144 |
</header>
|
145 |
|
@@ -152,12 +119,7 @@
|
|
152 |
</div>
|
153 |
<div>
|
154 |
<h2 class="font-semibold">Dr. Franz Huber</h2>
|
155 |
-
<p class="text-xs text-indigo-200">Psychoanalytischer
|
156 |
-
</div>
|
157 |
-
<div class="ml-auto flex space-x-2">
|
158 |
-
<button class="w-8 h-8 rounded-full bg-indigo-500 hover:bg-indigo-400 flex items-center justify-center">
|
159 |
-
<i class="fas fa-ellipsis-v text-sm"></i>
|
160 |
-
</button>
|
161 |
</div>
|
162 |
</div>
|
163 |
|
@@ -171,20 +133,17 @@
|
|
171 |
</div>
|
172 |
</div>
|
173 |
<div class="psycho-bubble rounded-lg p-4 max-w-[85%]">
|
174 |
-
<p class="
|
175 |
-
<p class="text-
|
|
|
176 |
|
177 |
-
<div class="
|
178 |
-
<p class="
|
179 |
-
<ul class="list-disc pl-5 space-y-1 text-gray-700">
|
180 |
-
<li>Tiefenpsychologische Analyse unbewusster Prozesse</li>
|
181 |
-
<li>Bindungstheorie und Objektbeziehungen</li>
|
182 |
-
<li>Analyse von Wiederholungsmustern</li>
|
183 |
-
<li>Identifikation von Abwehrmechanismen</li>
|
184 |
-
</ul>
|
185 |
</div>
|
186 |
|
187 |
-
<
|
|
|
|
|
188 |
</div>
|
189 |
</div>
|
190 |
</div>
|
@@ -192,59 +151,46 @@
|
|
192 |
<!-- Input Area -->
|
193 |
<div class="border-t border-gray-200 p-4 bg-gray-50">
|
194 |
<div class="flex items-center">
|
195 |
-
<button id="show-example" class="w-10 h-10 rounded-full bg-gray-200 hover:bg-gray-300 flex items-center justify-center mr-2">
|
196 |
-
<i class="fas fa-lightbulb text-gray-600"></i>
|
197 |
-
</button>
|
198 |
<div class="flex-grow relative">
|
199 |
-
<textarea id="message-input" rows="1" class="w-full border border-gray-300 rounded-full py-3 px-4 pr-12 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 resize-none" placeholder="
|
200 |
<button id="send-button" class="absolute right-3 top-1/2 transform -translate-y-1/2 w-8 h-8 rounded-full bg-indigo-600 hover:bg-indigo-700 flex items-center justify-center">
|
201 |
<i class="fas fa-paper-plane text-white text-sm"></i>
|
202 |
</button>
|
203 |
</div>
|
204 |
</div>
|
205 |
-
<div class="mt-2 flex flex-wrap gap-2">
|
206 |
-
<button class="quick-prompt text-xs bg-gray-200 hover:bg-gray-300 text-gray-700 px-3 py-1 rounded-full" data-prompt="Ich habe einen Konflikt mit einer Freundin, die mich immer wieder enttäuscht.">
|
207 |
-
<i class="fas fa-user-friends mr-1"></i> Freundschaftskonflikt
|
208 |
-
</button>
|
209 |
-
<button class="quick-prompt text-xs bg-gray-200 hover:bg-gray-300 text-gray-700 px-3 py-1 rounded-full" data-prompt="Mein Partner zeigt narzisstische Tendenzen und ich weiß nicht, wie ich damit umgehen soll.">
|
210 |
-
<i class="fas fa-heart mr-1"></i> Beziehungsmuster
|
211 |
-
</button>
|
212 |
-
<button class="quick-prompt text-xs bg-gray-200 hover:bg-gray-300 text-gray-700 px-3 py-1 rounded-full" data-prompt="Ich fühle mich in meiner Arbeitsumgebung manipuliert und weiß nicht, wie ich reagieren soll.">
|
213 |
-
<i class="fas fa-mask mr-1"></i> Manipulation erkennen
|
214 |
-
</button>
|
215 |
-
<button class="quick-prompt text-xs bg-gray-200 hover:bg-gray-300 text-gray-700 px-3 py-1 rounded-full" data-prompt="Ich bemerke, dass ich immer wieder in ähnliche problematische Situationen gerate.">
|
216 |
-
<i class="fas fa-history mr-1"></i> Wiederholungsmuster
|
217 |
-
</button>
|
218 |
-
</div>
|
219 |
</div>
|
220 |
</div>
|
221 |
|
222 |
<!-- Info Footer -->
|
223 |
<footer class="mt-8 text-center text-sm text-gray-500">
|
224 |
-
<p>
|
225 |
-
<p class="mt-1">Bei akuten psychischen Krisen wenden Sie sich bitte an einen Facharzt oder Notdienst.</p>
|
226 |
</footer>
|
227 |
</div>
|
228 |
|
229 |
<script>
|
230 |
-
//
|
231 |
const userProfile = {
|
232 |
name: null,
|
|
|
233 |
age: null,
|
234 |
gender: null,
|
235 |
-
|
236 |
-
|
|
|
|
|
237 |
};
|
238 |
|
239 |
-
// Conversation history
|
240 |
let conversationHistory = [];
|
241 |
|
242 |
document.addEventListener('DOMContentLoaded', function() {
|
243 |
const messageInput = document.getElementById('message-input');
|
244 |
const sendButton = document.getElementById('send-button');
|
245 |
const chatMessages = document.getElementById('chat-messages');
|
246 |
-
const
|
247 |
-
|
|
|
|
|
|
|
248 |
|
249 |
// Auto-resize textarea
|
250 |
messageInput.addEventListener('input', function() {
|
@@ -252,7 +198,7 @@
|
|
252 |
this.style.height = (this.scrollHeight) + 'px';
|
253 |
});
|
254 |
|
255 |
-
// Send message on Enter key
|
256 |
messageInput.addEventListener('keydown', function(e) {
|
257 |
if (e.key === 'Enter' && !e.shiftKey) {
|
258 |
e.preventDefault();
|
@@ -263,22 +209,6 @@
|
|
263 |
// Send message on button click
|
264 |
sendButton.addEventListener('click', sendMessage);
|
265 |
|
266 |
-
// Quick prompts
|
267 |
-
quickPrompts.forEach(button => {
|
268 |
-
button.addEventListener('click', function() {
|
269 |
-
messageInput.value = this.getAttribute('data-prompt');
|
270 |
-
messageInput.focus();
|
271 |
-
messageInput.dispatchEvent(new Event('input'));
|
272 |
-
});
|
273 |
-
});
|
274 |
-
|
275 |
-
// Show example button
|
276 |
-
showExampleButton.addEventListener('click', function() {
|
277 |
-
messageInput.value = "Ich habe das Gefühl, dass meine Freundin mich emotional erpresst. Wenn ich Zeit mit anderen verbringe, wird sie eifersüchtig und macht mir Vorwürfe. Gleichzeitig erwartet sie, dass ich immer für sie da bin, ist aber selbst oft nicht verfügbar. Dieses Muster kenne ich auch von früheren Freundschaften.";
|
278 |
-
messageInput.focus();
|
279 |
-
messageInput.dispatchEvent(new Event('input'));
|
280 |
-
});
|
281 |
-
|
282 |
// Send message function
|
283 |
function sendMessage() {
|
284 |
const messageText = messageInput.value.trim();
|
@@ -291,10 +221,8 @@
|
|
291 |
timestamp: new Date()
|
292 |
});
|
293 |
|
294 |
-
//
|
295 |
-
|
296 |
-
extractProfileInfo(messageText);
|
297 |
-
}
|
298 |
|
299 |
// Add user message to chat
|
300 |
addMessage(messageText, 'user');
|
@@ -306,23 +234,89 @@
|
|
306 |
// Show typing indicator
|
307 |
showTypingIndicator();
|
308 |
|
309 |
-
//
|
310 |
setTimeout(() => {
|
311 |
removeTypingIndicator();
|
312 |
-
const response =
|
313 |
-
addMessage(response, 'psycho');
|
|
|
|
|
|
|
|
|
|
|
314 |
|
315 |
// Add to conversation history
|
316 |
conversationHistory.push({
|
317 |
sender: 'psycho',
|
318 |
-
text:
|
|
|
319 |
timestamp: new Date()
|
320 |
});
|
321 |
-
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
}
|
323 |
|
324 |
// Add message to chat
|
325 |
-
function addMessage(text, sender) {
|
326 |
const messageDiv = document.createElement('div');
|
327 |
messageDiv.className = `flex fade-in`;
|
328 |
|
@@ -338,104 +332,7 @@
|
|
338 |
</div>
|
339 |
`;
|
340 |
} else {
|
341 |
-
// Psycho response with
|
342 |
-
const responseData = typeof text === 'string' ? JSON.parse(text) : text;
|
343 |
-
|
344 |
-
let tagsHtml = '';
|
345 |
-
if (responseData.tags && responseData.tags.length > 0) {
|
346 |
-
tagsHtml = `<div class="mb-3">${responseData.tags.map(tag =>
|
347 |
-
`<span class="${tag.class} text-xs font-medium px-2 py-1 rounded mr-2">${tag.text}</span>`
|
348 |
-
).join('')}</div>`;
|
349 |
-
}
|
350 |
-
|
351 |
-
let introHtml = '';
|
352 |
-
if (responseData.intro) {
|
353 |
-
introHtml = `<p class="font-medium text-indigo-800 mb-3">${personalizeText(responseData.intro)}</p>`;
|
354 |
-
}
|
355 |
-
|
356 |
-
let analysisHtml = '';
|
357 |
-
if (responseData.analysis && responseData.analysis.length > 0) {
|
358 |
-
analysisHtml = `
|
359 |
-
<div class="analysis-section">
|
360 |
-
<p class="font-medium text-gray-800 mb-2">Tiefenpsychologische Analyse:</p>
|
361 |
-
${responseData.analysis.map(p =>
|
362 |
-
`<p class="text-gray-700 mb-2">${personalizeText(p)}</p>`
|
363 |
-
).join('')}
|
364 |
-
</div>
|
365 |
-
`;
|
366 |
-
}
|
367 |
-
|
368 |
-
let conceptsHtml = '';
|
369 |
-
if (responseData.concepts && responseData.concepts.length > 0) {
|
370 |
-
conceptsHtml = `
|
371 |
-
<div class="concept-box">
|
372 |
-
<p class="font-medium text-gray-800 mb-2">Relevante psychologische Konzepte:</p>
|
373 |
-
<ul class="list-disc pl-5 space-y-1 text-gray-700">
|
374 |
-
${responseData.concepts.map(c =>
|
375 |
-
`<li><span class="font-medium">${c.term}:</span> ${c.definition}</li>`
|
376 |
-
).join('')}
|
377 |
-
</ul>
|
378 |
-
</div>
|
379 |
-
`;
|
380 |
-
}
|
381 |
-
|
382 |
-
let patternsHtml = '';
|
383 |
-
if (responseData.patterns && responseData.patterns.length > 0) {
|
384 |
-
// Update user profile with recognized patterns
|
385 |
-
responseData.patterns.forEach(pattern => {
|
386 |
-
if (!userProfile.knownPatterns.includes(pattern)) {
|
387 |
-
userProfile.knownPatterns.push(pattern);
|
388 |
-
}
|
389 |
-
});
|
390 |
-
|
391 |
-
patternsHtml = `
|
392 |
-
<div class="mt-3">
|
393 |
-
<p class="font-medium text-gray-800 mb-1">Erkannte Muster in Ihrer Schilderung:</p>
|
394 |
-
<ul class="list-disc pl-5 space-y-1 text-gray-700">
|
395 |
-
${responseData.patterns.map(p =>
|
396 |
-
`<li>${p}</li>`
|
397 |
-
).join('')}
|
398 |
-
</ul>
|
399 |
-
</div>
|
400 |
-
`;
|
401 |
-
}
|
402 |
-
|
403 |
-
let recommendationsHtml = '';
|
404 |
-
if (responseData.recommendations && responseData.recommendations.length > 0) {
|
405 |
-
recommendationsHtml = `
|
406 |
-
<div class="divider"></div>
|
407 |
-
<div class="mt-2">
|
408 |
-
<p class="font-medium text-gray-800 mb-2">Konkrete Handlungsempfehlungen:</p>
|
409 |
-
<ol class="list-decimal pl-5 space-y-2 text-gray-700">
|
410 |
-
${responseData.recommendations.map(r =>
|
411 |
-
`<li>${personalizeText(r)}</li>`
|
412 |
-
).join('')}
|
413 |
-
</ol>
|
414 |
-
</div>
|
415 |
-
`;
|
416 |
-
}
|
417 |
-
|
418 |
-
let warningHtml = '';
|
419 |
-
if (responseData.warning) {
|
420 |
-
warningHtml = `
|
421 |
-
<div class="mt-3 p-3 bg-red-50 rounded-lg border border-red-200">
|
422 |
-
<p class="font-medium text-red-800 flex items-center">
|
423 |
-
<i class="fas fa-exclamation-triangle mr-2"></i> Wichtiger Hinweis
|
424 |
-
</p>
|
425 |
-
<p class="text-red-700 mt-1">${responseData.warning}</p>
|
426 |
-
</div>
|
427 |
-
`;
|
428 |
-
}
|
429 |
-
|
430 |
-
let followupHtml = '';
|
431 |
-
if (responseData.followup) {
|
432 |
-
followupHtml = `
|
433 |
-
<div class="mt-3">
|
434 |
-
<p class="text-gray-700 italic">${responseData.followup}</p>
|
435 |
-
</div>
|
436 |
-
`;
|
437 |
-
}
|
438 |
-
|
439 |
messageDiv.innerHTML = `
|
440 |
<div class="flex-shrink-0 mr-3">
|
441 |
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center">
|
@@ -443,14 +340,16 @@
|
|
443 |
</div>
|
444 |
</div>
|
445 |
<div class="psycho-bubble rounded-lg p-4 max-w-[85%]">
|
446 |
-
${
|
447 |
-
${
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
${
|
452 |
-
|
453 |
-
|
|
|
|
|
454 |
</div>
|
455 |
`;
|
456 |
}
|
@@ -459,47 +358,6 @@
|
|
459 |
chatMessages.scrollTop = chatMessages.scrollHeight;
|
460 |
}
|
461 |
|
462 |
-
// Personalize text with user profile info
|
463 |
-
function personalizeText(text) {
|
464 |
-
if (userProfile.name) {
|
465 |
-
text = text.replace(/Sie/g, userProfile.name)
|
466 |
-
.replace(/Ihre/g, `${userProfile.name}s`);
|
467 |
-
}
|
468 |
-
|
469 |
-
// Highlight psychological terms
|
470 |
-
const terms = ['Übertragung', 'Gegenübertragung', 'Wiederholungszwang', 'Abwehrmechanismus',
|
471 |
-
'Projektion', 'Spaltung', 'Narzissmus', 'Objektbeziehung', 'Bindungstheorie'];
|
472 |
-
|
473 |
-
terms.forEach(term => {
|
474 |
-
const regex = new RegExp(term, 'gi');
|
475 |
-
text = text.replace(regex, `<span class="highlight">${term}</span>`);
|
476 |
-
});
|
477 |
-
|
478 |
-
return text;
|
479 |
-
}
|
480 |
-
|
481 |
-
// Extract basic profile info from first message
|
482 |
-
function extractProfileInfo(text) {
|
483 |
-
// Check for name (simple pattern)
|
484 |
-
const nameMatch = text.match(/(?:ich bin|mein name ist|ich heiße)\s+([A-Za-zäöüßÄÖÜ]+)/i);
|
485 |
-
if (nameMatch && nameMatch[1]) {
|
486 |
-
userProfile.name = nameMatch[1];
|
487 |
-
}
|
488 |
-
|
489 |
-
// Check for age
|
490 |
-
const ageMatch = text.match(/(?:ich bin|alter)\s+(\d+)\s+(?:jahre|jahren)/i);
|
491 |
-
if (ageMatch && ageMatch[1]) {
|
492 |
-
userProfile.age = parseInt(ageMatch[1]);
|
493 |
-
}
|
494 |
-
|
495 |
-
// Check for gender
|
496 |
-
if (text.match(/\b(frau|weiblich)\b/i)) {
|
497 |
-
userProfile.gender = 'weiblich';
|
498 |
-
} else if (text.match(/\b(mann|männlich)\b/i)) {
|
499 |
-
userProfile.gender = 'männlich';
|
500 |
-
}
|
501 |
-
}
|
502 |
-
|
503 |
// Show typing indicator
|
504 |
function showTypingIndicator() {
|
505 |
const typingDiv = document.createElement('div');
|
@@ -532,180 +390,177 @@
|
|
532 |
}
|
533 |
}
|
534 |
|
535 |
-
// Generate
|
536 |
-
function
|
537 |
const lowerMessage = message.toLowerCase();
|
538 |
|
539 |
-
//
|
540 |
-
if (
|
541 |
-
return {
|
542 |
-
intro: 'Ihre Schilderung der Freundschaftssituation zeigt interessante psychodynamische Muster, die wir gemeinsam untersuchen können.',
|
543 |
-
tags: [
|
544 |
-
{ text: 'Analyse', class: 'analysis-tag' },
|
545 |
-
{ text: 'Übertragung', class: 'concept-tag' },
|
546 |
-
{ text: 'Bindungstheorie', class: 'concept-tag' },
|
547 |
-
{ text: 'Empfehlung', class: 'recommendation-tag' }
|
548 |
-
],
|
549 |
-
analysis: [
|
550 |
-
'Die beschriebene Dynamik weist Merkmale einer <span class="font-medium text-indigo-700">unsicheren Bindung</span> auf, möglicherweise mit Elementen einer <span class="font-medium text-indigo-700">ambivalenten Bindungsstruktur</span>.',
|
551 |
-
'Besonders auffällig ist das <span class="font-medium text-indigo-700">Wiederholungsmuster</span> in Ihren Beschreibungen, das auf unbewusste <span class="font-medium text-indigo-700">Wiederholungszwänge</span> hindeuten könnte.',
|
552 |
-
'Die emotionalen Reaktionen, die Sie beschreiben, könnten auf <span class="font-medium text-indigo-700">projizierte Inhalte</span> hinweisen, bei denen eigene unbewusste Konflikte auf die Freundschaft übertragen werden.'
|
553 |
-
],
|
554 |
-
concepts: [
|
555 |
-
{
|
556 |
-
term: 'Wiederholungszwang',
|
557 |
-
definition: 'Unbewusste Tendenz, frühere (oft schmerzhafte) Erfahrungen in neuen Beziehungen zu reinszenieren, um sie symbolisch zu bewältigen.'
|
558 |
-
},
|
559 |
-
{
|
560 |
-
term: 'Projektive Identifizierung',
|
561 |
-
definition: 'Abwehrmechanismus, bei dem eigene unerwünschte Anteile auf andere projiziert werden, die dann tatsächlich so reagieren.'
|
562 |
-
}
|
563 |
-
],
|
564 |
-
patterns: [
|
565 |
-
'Muster der Überverantwortung (Sie fühlen sich für die Beziehung verantwortlicher als die Freundin)',
|
566 |
-
'Emotionale Erpressung (Schuldzuweisungen bei Abgrenzung)',
|
567 |
-
'Ungleiche Verfügbarkeit (Sie sind mehr da als sie)'
|
568 |
-
],
|
569 |
-
recommendations: [
|
570 |
-
'Reflektieren Sie, welche unbewussten Bedürfnisse in dieser Freundschaft erfüllt werden. Welche Funktion hat sie für Sie?',
|
571 |
-
'Experimentieren Sie mit klaren Grenzsetzungen ("Ich kann dich an diesem Tag nicht treffen") und beobachten Sie die Reaktionen.',
|
572 |
-
'Führen Sie ein Tagebuch über Ihre emotionalen Reaktionen in der Freundschaft. Wann fühlen Sie sich besonders unwohl?',
|
573 |
-
'Erkunden Sie, ob ähnliche Muster in anderen Beziehungen auftreten. Gibt es historische Parallelen?'
|
574 |
-
],
|
575 |
-
followup: 'Könnten Sie mir mehr darüber erzählen, wie Sie sich in den Momenten fühlen, wenn Ihre Freundin Sie enttäuscht? Was geht Ihnen dann durch den Kopf?'
|
576 |
-
};
|
577 |
-
}
|
578 |
-
else if (lowerMessage.includes('manipul') || lowerMessage.includes('gaslight') || lowerMessage.includes('psychopath')) {
|
579 |
return {
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
analysis: [
|
589 |
-
'Die beschriebenen Verhaltensweisen weisen Merkmale der <span class="font-medium text-indigo-700">dunklen Triade</span> (Narzissmus, Machiavellismus, Psychopathie) auf.',
|
590 |
-
'Besonders besorgniserregend sind die Hinweise auf mögliches <span class="font-medium text-indigo-700">Gaslighting</span>, eine Form der psychologischen Manipulation, die darauf abzielt, Ihr Realitätsgefühl zu untergraben.',
|
591 |
-
'Die von Ihnen beschriebenen <span class="font-medium text-indigo-700">Schuldzuweisungen</span> und <span class="font-medium text-indigo-700">Verantwortungsverschiebungen</span> sind klassische Merkmale toxischer Dynamiken.'
|
592 |
-
],
|
593 |
-
concepts: [
|
594 |
-
{
|
595 |
-
term: 'Gaslighting',
|
596 |
-
definition: 'Form der psychologischen Manipulation, bei der das Opfer systematisch verunsichert wird, indem seine Wahrnehmung der Realität in Frage gestellt wird.'
|
597 |
-
},
|
598 |
-
{
|
599 |
-
term: 'Narzisstische Persönlichkeitsstörung',
|
600 |
-
definition: 'Charakterisiert durch Grandiosität, mangelndes Einfühlungsvermögen und ein tiefgreifendes Bedürfnis nach Bewunderung.'
|
601 |
-
}
|
602 |
-
],
|
603 |
-
patterns: [
|
604 |
-
'Reality Distortion (Ihre Wahrnehmung wird systematisch in Frage gestellt)',
|
605 |
-
'Love Bombing & Devaluation (Extreme Zuwendung gefolgt von Abwertung)',
|
606 |
-
'Triangulation (Einbeziehung Dritter zur Verunsicherung)'
|
607 |
-
],
|
608 |
-
recommendations: [
|
609 |
-
'Dokumentieren Sie objektiv die manipulativen Vorfälle (Datum, Aussage, Wirkung auf Sie)',
|
610 |
-
'Stärken Sie Ihr soziales Unterstützungsnetzwerk außerhalb dieser Beziehung',
|
611 |
-
'Setzen Sie klare, nicht verhandelbare Grenzen (z.B. "Ich lasse mich nicht anschreien")',
|
612 |
-
'Erwägen Sie professionelle Unterstützung bei der Bewältigung'
|
613 |
-
],
|
614 |
-
warning: 'Manipulative Beziehungen können langfristige psychische Folgen haben. Ziehen Sie in Erwägung, sich an eine Fachperson zu wenden, wenn Sie sich überfordert fühlen.',
|
615 |
-
followup: 'Wie lange besteht diese Dynamik bereits? Gab es einen Punkt, an dem die Beziehung anders war?'
|
616 |
};
|
617 |
}
|
618 |
-
|
|
|
|
|
619 |
return {
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
'Auffällig ist das mögliche Vorhandensein eines <span class="font-medium text-indigo-700">Wiederholungszwangs</span>, bei dem Sie unbewusst ähnliche Beziehungsdynamiken wie in der Vergangenheit herstellen.',
|
630 |
-
'Die emotionalen Reaktionen könnten auf <span class="font-medium text-indigo-700">unverarbeitete Konflikte</span> oder <span class="font-medium text-indigo-700">Abwehrmechanismen</span> hinweisen.'
|
631 |
-
],
|
632 |
-
concepts: [
|
633 |
-
{
|
634 |
-
term: 'Objektbeziehung',
|
635 |
-
definition: 'Psychische Repräsentationen von Beziehungen, die in der Kindheit verinnerlicht wurden und aktuelle Beziehungen prägen.'
|
636 |
-
},
|
637 |
-
{
|
638 |
-
term: 'Wiederholungszwang',
|
639 |
-
definition: 'Unbewusste Tendenz, frühere Beziehungserfahrungen zu wiederholen, oft in dem Versuch, sie symbolisch zu bewältigen.'
|
640 |
-
}
|
641 |
-
],
|
642 |
-
patterns: [
|
643 |
-
'Partnerwahl nach vertrautem Muster (ähnlich zu früheren Beziehungen oder Elternfiguren)',
|
644 |
-
'Konfliktvermeidung oder -eskalation nach bestimmten Skripten',
|
645 |
-
'Projektion eigener unerwünschter Anteile auf den Partner'
|
646 |
-
],
|
647 |
-
recommendations: [
|
648 |
-
'Erstellen Sie eine Beziehungs-Timeline: Wann gab es Wendepunkte? Wie haben Sie reagiert?',
|
649 |
-
'Identifizieren Sie die unbewussten Erwartungen, die Sie an Beziehungen stellen (z.B. "Er muss mich immer verstehen")',
|
650 |
-
'Experimentieren Sie mit neuen Verhaltensweisen in Konfliktsituationen (z.B. Pause machen statt eskalieren)',
|
651 |
-
'Erkunden Sie Ihre Bindungsmuster in der Kindheit (Wie wurden Konflikte gelöst?)'
|
652 |
-
],
|
653 |
-
followup: 'Können Sie ein konkretes Beispiel für eine Situation beschreiben, in der Sie dieses Muster besonders deutlich erlebt haben?'
|
654 |
};
|
655 |
}
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
definition: 'Von Freud beschriebenes Phänomen, bei dem Menschen unbewusst Situationen wiederholen, die mit unverarbeiteten Konflikten verbunden sind.'
|
674 |
-
},
|
675 |
-
{
|
676 |
-
term: 'Inszenierung',
|
677 |
-
definition: 'Unbewusste Wiederholung von Konflikten im zwischenmenschlichen Verhalten, oft als Versuch der Konfliktlösung.'
|
678 |
}
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
693 |
}
|
694 |
else {
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
],
|
701 |
-
analysis: [
|
702 |
-
'Um eine tiefenpsychologische Analyse durchführen zu können, benötige ich etwas mehr Kontext. Könnten Sie mir bitte genauer beschreiben:',
|
703 |
-
'<ul class="list-disc pl-5 space-y-1"><li>Die spezifische Situation oder Interaktion, die Sie beschäftigt</li><li>Ihre emotionalen Reaktionen und Gedanken dabei</li><li>Ob ähnliche Muster in anderen Beziehungen oder Situationen auftreten</li></ul>',
|
704 |
-
'Je detaillierter Ihre Schilderung, desto präziser kann ich die zugrundeliegenden psychodynamischen Prozesse analysieren.'
|
705 |
-
],
|
706 |
-
followup: 'Was hat Sie besonders an dieser Situation bewegt? Gab es einen Auslöser oder einen Moment, der besonders prägend war?'
|
707 |
-
};
|
708 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
709 |
}
|
710 |
});
|
711 |
</script>
|
|
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Franz - Psychoanalytischer Dialog</title>
|
7 |
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
9 |
<style>
|
|
|
74 |
50% { transform: translateY(-5px); }
|
75 |
}
|
76 |
|
77 |
+
.highlight {
|
78 |
+
background-color: #fef08a;
|
79 |
+
padding: 0 2px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
}
|
81 |
|
82 |
.fade-in {
|
|
|
88 |
to { opacity: 1; transform: translateY(0); }
|
89 |
}
|
90 |
|
91 |
+
.personalized-question {
|
92 |
+
border-left: 3px solid #10b981;
|
93 |
padding-left: 12px;
|
94 |
margin: 12px 0;
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
</style>
|
97 |
</head>
|
98 |
<body class="bg-gray-50">
|
|
|
106 |
<h1 class="title-font text-3xl font-bold text-gray-800">Franz</h1>
|
107 |
</div>
|
108 |
<p class="text-gray-600 max-w-2xl mx-auto">
|
109 |
+
Ihr persönlicher psychoanalytischer Gesprächspartner für tiefere Selbsterkenntnis
|
110 |
</p>
|
111 |
</header>
|
112 |
|
|
|
119 |
</div>
|
120 |
<div>
|
121 |
<h2 class="font-semibold">Dr. Franz Huber</h2>
|
122 |
+
<p class="text-xs text-indigo-200">Psychoanalytischer Gesprächspartner</p>
|
|
|
|
|
|
|
|
|
|
|
123 |
</div>
|
124 |
</div>
|
125 |
|
|
|
133 |
</div>
|
134 |
</div>
|
135 |
<div class="psycho-bubble rounded-lg p-4 max-w-[85%]">
|
136 |
+
<p class="text-sm text-gray-500 mb-1" id="greeting-time"></p>
|
137 |
+
<p class="font-medium text-indigo-800 mb-2">Willkommen zu unserem persönlichen Dialog.</p>
|
138 |
+
<p class="text-gray-700 mb-3">Ich bin Franz und begleite Sie in einem reflektierenden Gespräch. Bevor wir beginnen: </p>
|
139 |
|
140 |
+
<div class="personalized-question">
|
141 |
+
<p class="text-gray-700 font-medium">Wie darf ich Sie nennen? Und was hat Sie heute zu mir geführt?</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
</div>
|
143 |
|
144 |
+
<div class="mt-3 text-sm text-gray-500">
|
145 |
+
<p>Sie können mir einfach natürlich schreiben, wie Sie es einem vertrauten Gesprächspartner tun würden.</p>
|
146 |
+
</div>
|
147 |
</div>
|
148 |
</div>
|
149 |
</div>
|
|
|
151 |
<!-- Input Area -->
|
152 |
<div class="border-t border-gray-200 p-4 bg-gray-50">
|
153 |
<div class="flex items-center">
|
|
|
|
|
|
|
154 |
<div class="flex-grow relative">
|
155 |
+
<textarea id="message-input" rows="1" class="w-full border border-gray-300 rounded-full py-3 px-4 pr-12 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 resize-none" placeholder="Ihre Antwort..."></textarea>
|
156 |
<button id="send-button" class="absolute right-3 top-1/2 transform -translate-y-1/2 w-8 h-8 rounded-full bg-indigo-600 hover:bg-indigo-700 flex items-center justify-center">
|
157 |
<i class="fas fa-paper-plane text-white text-sm"></i>
|
158 |
</button>
|
159 |
</div>
|
160 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
</div>
|
162 |
</div>
|
163 |
|
164 |
<!-- Info Footer -->
|
165 |
<footer class="mt-8 text-center text-sm text-gray-500">
|
166 |
+
<p>Dies ist ein psychoanalytisches Dialogexperiment und ersetzt keine Therapie.</p>
|
|
|
167 |
</footer>
|
168 |
</div>
|
169 |
|
170 |
<script>
|
171 |
+
// Enhanced user profile with conversation context
|
172 |
const userProfile = {
|
173 |
name: null,
|
174 |
+
preferredName: null,
|
175 |
age: null,
|
176 |
gender: null,
|
177 |
+
knownIssues: [],
|
178 |
+
emotionalState: null,
|
179 |
+
conversationStage: 'initial', // initial, name_established, issue_shared, deep_dive
|
180 |
+
lastTopics: []
|
181 |
};
|
182 |
|
|
|
183 |
let conversationHistory = [];
|
184 |
|
185 |
document.addEventListener('DOMContentLoaded', function() {
|
186 |
const messageInput = document.getElementById('message-input');
|
187 |
const sendButton = document.getElementById('send-button');
|
188 |
const chatMessages = document.getElementById('chat-messages');
|
189 |
+
const greetingTime = document.getElementById('greeting-time');
|
190 |
+
|
191 |
+
// Set greeting time
|
192 |
+
const now = new Date();
|
193 |
+
greetingTime.textContent = now.toLocaleDateString('de-DE', { weekday: 'long', day: 'numeric', month: 'long', hour: '2-digit', minute: '2-digit' });
|
194 |
|
195 |
// Auto-resize textarea
|
196 |
messageInput.addEventListener('input', function() {
|
|
|
198 |
this.style.height = (this.scrollHeight) + 'px';
|
199 |
});
|
200 |
|
201 |
+
// Send message on Enter key
|
202 |
messageInput.addEventListener('keydown', function(e) {
|
203 |
if (e.key === 'Enter' && !e.shiftKey) {
|
204 |
e.preventDefault();
|
|
|
209 |
// Send message on button click
|
210 |
sendButton.addEventListener('click', sendMessage);
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
// Send message function
|
213 |
function sendMessage() {
|
214 |
const messageText = messageInput.value.trim();
|
|
|
221 |
timestamp: new Date()
|
222 |
});
|
223 |
|
224 |
+
// Update user profile based on message
|
225 |
+
updateProfileFromMessage(messageText);
|
|
|
|
|
226 |
|
227 |
// Add user message to chat
|
228 |
addMessage(messageText, 'user');
|
|
|
234 |
// Show typing indicator
|
235 |
showTypingIndicator();
|
236 |
|
237 |
+
// Generate response after delay
|
238 |
setTimeout(() => {
|
239 |
removeTypingIndicator();
|
240 |
+
const response = generatePersonalizedResponse(messageText);
|
241 |
+
addMessage(response.text, 'psycho', response.meta);
|
242 |
+
|
243 |
+
// Update conversation stage
|
244 |
+
if (response.meta && response.meta.updateStage) {
|
245 |
+
userProfile.conversationStage = response.meta.updateStage;
|
246 |
+
}
|
247 |
|
248 |
// Add to conversation history
|
249 |
conversationHistory.push({
|
250 |
sender: 'psycho',
|
251 |
+
text: response.text,
|
252 |
+
meta: response.meta,
|
253 |
timestamp: new Date()
|
254 |
});
|
255 |
+
}, 1000 + Math.random() * 1500);
|
256 |
+
}
|
257 |
+
|
258 |
+
// Update user profile from message content
|
259 |
+
function updateProfileFromMessage(message) {
|
260 |
+
const lowerMessage = message.toLowerCase();
|
261 |
+
|
262 |
+
// Extract name if not already set (first message)
|
263 |
+
if (!userProfile.name && userProfile.conversationStage === 'initial') {
|
264 |
+
const nameMatch = message.match(/(?:ich bin|mein name ist|ich heiße|nennen sie mich)\s+([A-Za-zäöüßÄÖÜ-]+)/i)
|
265 |
+
|| message.match(/(?:name)\s+(?:ist\s+)?([A-Za-zäöüßÄÖÜ-]+)/i);
|
266 |
+
if (nameMatch && nameMatch[1]) {
|
267 |
+
userProfile.name = nameMatch[1];
|
268 |
+
userProfile.preferredName = nameMatch[1];
|
269 |
+
return;
|
270 |
+
}
|
271 |
+
|
272 |
+
// Check for simple "Ich bin XYZ" pattern
|
273 |
+
const simpleName = message.split(' ')[0];
|
274 |
+
if (simpleName.length > 2 && /^[A-ZÄÖÜ]/.test(simpleName)) {
|
275 |
+
userProfile.name = simpleName;
|
276 |
+
userProfile.preferredName = simpleName;
|
277 |
+
}
|
278 |
+
}
|
279 |
+
|
280 |
+
// Extract age
|
281 |
+
if (!userProfile.age) {
|
282 |
+
const ageMatch = message.match(/(?:ich bin|alter)\s+(\d+)\s+(?:jahre|jahren)/i);
|
283 |
+
if (ageMatch && ageMatch[1]) {
|
284 |
+
userProfile.age = parseInt(ageMatch[1]);
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
// Extract gender
|
289 |
+
if (!userProfile.gender) {
|
290 |
+
if (message.match(/\b(frau|weiblich|sie\s+ist)\b/i)) {
|
291 |
+
userProfile.gender = 'weiblich';
|
292 |
+
} else if (message.match(/\b(mann|männlich|er\s+ist)\b/i)) {
|
293 |
+
userProfile.gender = 'männlich';
|
294 |
+
}
|
295 |
+
}
|
296 |
+
|
297 |
+
// Detect emotional state keywords
|
298 |
+
if (message.match(/\b(verzweifelt|hoffnungslos|ängstlich|unsicher|traurig|deprimiert)\b/i)) {
|
299 |
+
userProfile.emotionalState = 'distressed';
|
300 |
+
} else if (message.match(/\b(wütend|ärgerlich|frustriert|genervt|aggressiv)\b/i)) {
|
301 |
+
userProfile.emotionalState = 'angry';
|
302 |
+
} else if (message.match(/\b(verwirrt|unsicher|fragend|unschlüssig)\b/i)) {
|
303 |
+
userProfile.emotionalState = 'confused';
|
304 |
+
}
|
305 |
+
|
306 |
+
// Track last topics (simple keyword matching)
|
307 |
+
const topics = [];
|
308 |
+
if (lowerMessage.includes('freund') || lowerMessage.includes('freundin')) topics.push('friendship');
|
309 |
+
if (lowerMessage.includes('partner') || lowerMessage.includes('beziehung')) topics.push('relationship');
|
310 |
+
if (lowerMessage.includes('familie') || lowerMessage.includes('eltern')) topics.push('family');
|
311 |
+
if (lowerMessage.includes('arbeit') || lowerMessage.includes('job')) topics.push('work');
|
312 |
+
|
313 |
+
if (topics.length > 0) {
|
314 |
+
userProfile.lastTopics = [...userProfile.lastTopics, ...topics].slice(-3); // Keep last 3 topics
|
315 |
+
}
|
316 |
}
|
317 |
|
318 |
// Add message to chat
|
319 |
+
function addMessage(text, sender, meta = {}) {
|
320 |
const messageDiv = document.createElement('div');
|
321 |
messageDiv.className = `flex fade-in`;
|
322 |
|
|
|
332 |
</div>
|
333 |
`;
|
334 |
} else {
|
335 |
+
// Psycho response with personalized structure
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
messageDiv.innerHTML = `
|
337 |
<div class="flex-shrink-0 mr-3">
|
338 |
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center">
|
|
|
340 |
</div>
|
341 |
</div>
|
342 |
<div class="psycho-bubble rounded-lg p-4 max-w-[85%]">
|
343 |
+
${meta.isFollowUp ? `<p class="text-sm text-gray-500 mb-1">Zu Ihrer letzten Aussage:</p>` : ''}
|
344 |
+
${meta.personalizedGreeting ? `<p class="font-medium text-indigo-800 mb-2">${meta.personalizedGreeting}</p>` : ''}
|
345 |
+
<div class="text-gray-700 space-y-3">
|
346 |
+
${text}
|
347 |
+
</div>
|
348 |
+
${meta.followUpQuestion ? `
|
349 |
+
<div class="personalized-question mt-4">
|
350 |
+
<p class="text-gray-700 font-medium">${meta.followUpQuestion}</p>
|
351 |
+
</div>
|
352 |
+
` : ''}
|
353 |
</div>
|
354 |
`;
|
355 |
}
|
|
|
358 |
chatMessages.scrollTop = chatMessages.scrollHeight;
|
359 |
}
|
360 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
// Show typing indicator
|
362 |
function showTypingIndicator() {
|
363 |
const typingDiv = document.createElement('div');
|
|
|
390 |
}
|
391 |
}
|
392 |
|
393 |
+
// Generate personalized response based on conversation flow
|
394 |
+
function generatePersonalizedResponse(message) {
|
395 |
const lowerMessage = message.toLowerCase();
|
396 |
|
397 |
+
// Stage 1: Name establishment
|
398 |
+
if (!userProfile.name && userProfile.conversationStage === 'initial') {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
399 |
return {
|
400 |
+
text: `
|
401 |
+
<p>Vielen Dank für Ihre erste Nachricht. Um unser Gespräch persönlicher zu gestalten:</p>
|
402 |
+
<p class="mt-2">Wie möchten Sie, dass ich Sie anspreche? Sie können mir gerne Ihren Namen oder einen bevorzugten Spitznamen nennen.</p>
|
403 |
+
`,
|
404 |
+
meta: {
|
405 |
+
followUpQuestion: "Wie soll ich Sie nennen?",
|
406 |
+
updateStage: 'initial'
|
407 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
};
|
409 |
}
|
410 |
+
|
411 |
+
// Just got the name - acknowledge and ask about issue
|
412 |
+
if (userProfile.name && userProfile.conversationStage === 'initial') {
|
413 |
return {
|
414 |
+
text: `
|
415 |
+
<p>Vielen Dank, ${userProfile.name}. Schön, Sie kennenzulernen.</p>
|
416 |
+
<p class="mt-2">Was führt Sie heute zu mir? Was beschäftigt Sie im Moment am meisten?</p>
|
417 |
+
`,
|
418 |
+
meta: {
|
419 |
+
personalizedGreeting: `Hallo ${userProfile.name},`,
|
420 |
+
followUpQuestion: "Würden Sie mir etwas mehr darüber erzählen, was Sie bewegt?",
|
421 |
+
updateStage: 'name_established'
|
422 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
};
|
424 |
}
|
425 |
+
|
426 |
+
// Stage 2: Issue sharing
|
427 |
+
if (userProfile.conversationStage === 'name_established') {
|
428 |
+
userProfile.conversationStage = 'issue_shared';
|
429 |
+
|
430 |
+
// Check for greetings
|
431 |
+
if (lowerMessage.match(/^(hi|hallo|guten (tag|morgen|abend)|moin|servus|hey|grü(ß|ss)e?)/i)) {
|
432 |
+
return {
|
433 |
+
text: `
|
434 |
+
<p>${userProfile.name}, ich freue mich, unser Gespräch fortzusetzen.</p>
|
435 |
+
<p class="mt-2">Bei unserem letzten Austausch haben Sie über ${userProfile.lastTopics.length > 0 ? 'Themen wie ' + userProfile.lastTopics.join(', ') : 'verschiedene Themen'} gesprochen.</p>
|
436 |
+
<p class="mt-2">Wie geht es Ihnen damit heute?</p>
|
437 |
+
`,
|
438 |
+
meta: {
|
439 |
+
personalizedGreeting: `Willkommen zurück, ${userProfile.name}`,
|
440 |
+
followUpQuestion: "Möchten Sie an unser letztes Gespräch anknüpfen oder etwas Neues besprechen?",
|
441 |
+
isFollowUp: true
|
|
|
|
|
|
|
|
|
|
|
442 |
}
|
443 |
+
};
|
444 |
+
}
|
445 |
+
|
446 |
+
// Generate personalized issue response
|
447 |
+
return generateIssueResponse(message);
|
448 |
+
}
|
449 |
+
|
450 |
+
// Stage 3: Deep dive into issue
|
451 |
+
if (userProfile.conversationStage === 'issue_shared') {
|
452 |
+
return generateDeepDiveResponse(message);
|
453 |
+
}
|
454 |
+
|
455 |
+
// Stage 4: Ongoing conversation
|
456 |
+
return generateFollowUpResponse(message);
|
457 |
+
}
|
458 |
+
|
459 |
+
// Generate response when user shares their issue
|
460 |
+
function generateIssueResponse(message) {
|
461 |
+
let responseText = '';
|
462 |
+
let followUpQuestion = '';
|
463 |
+
let analysisNote = '';
|
464 |
+
|
465 |
+
// Emotional state acknowledgment
|
466 |
+
if (userProfile.emotionalState === 'distressed') {
|
467 |
+
responseText += `<p>Ich höre heraus, dass Sie sich im Moment in einer emotional belastenden Situation befinden, ${userProfile.name}.</p>`;
|
468 |
+
followUpQuestion = "Wie gehen Sie normalerweise mit solchen belastenden Gefühlen um?";
|
469 |
+
} else if (userProfile.emotionalState === 'angry') {
|
470 |
+
responseText += `<p>Die von Ihnen beschriebene Situation scheint starke Gefühle von Ärger oder Frustration in Ihnen auszulösen, ${userProfile.name}.</p>`;
|
471 |
+
followUpQuestion = "Was glauben Sie, löst diese intensiven Reaktionen in Ihnen aus?";
|
472 |
+
} else {
|
473 |
+
responseText += `<p>Danke, dass Sie diese Situation mit mir teilen, ${userProfile.name}.</p>`;
|
474 |
+
followUpQuestion = "Was denken Sie, könnte hinter diesen Erfahrungen stehen?";
|
475 |
+
}
|
476 |
+
|
477 |
+
// Topic-specific responses
|
478 |
+
if (message.includes('Freund') || message.includes('Freundin')) {
|
479 |
+
responseText += `
|
480 |
+
<p class="mt-2">Freundschaftsdynamiken sind oft Spiegel unserer unbewussten Erwartungen und früheren Beziehungserfahrungen.</p>
|
481 |
+
${analysisNote ? `<p class="mt-2">${analysisNote}</p>` : ''}
|
482 |
+
`;
|
483 |
+
followUpQuestion = "Erkennen Sie ähnliche Muster in anderen Freundschaften?";
|
484 |
+
}
|
485 |
+
else if (message.includes('Partner') || message.includes('Beziehung')) {
|
486 |
+
responseText += `
|
487 |
+
<p class="mt-2">Partnerschaften aktivieren häufig tief verwurzelte Bindungsmuster aus unserer Kindheit.</p>
|
488 |
+
${analysisNote ? `<p class="mt-2">${analysisNote}</p>` : ''}
|
489 |
+
`;
|
490 |
+
followUpQuestion = "Welche Rolle nehmen Sie Ihrer Erfahrung nach typischerweise in Beziehungskonflikten ein?";
|
491 |
}
|
492 |
else {
|
493 |
+
responseText += `
|
494 |
+
<p class="mt-2">Interessant, ${userProfile.name}. Lassen Sie uns gemeinsam erkunden, was diese Erfahrung für Sie bedeutet.</p>
|
495 |
+
${analysisNote ? `<p class="mt-2">${analysisNote}</p>` : ''}
|
496 |
+
`;
|
497 |
+
followUpQuestion = "Wann haben Sie dieses Gefühl oder Muster zum ersten Mal bewusst wahrgenommen?";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
498 |
}
|
499 |
+
|
500 |
+
return {
|
501 |
+
text: responseText,
|
502 |
+
meta: {
|
503 |
+
personalizedGreeting: `Danke für Ihre Offenheit, ${userProfile.name}`,
|
504 |
+
followUpQuestion: followUpQuestion,
|
505 |
+
updateStage: 'issue_shared'
|
506 |
+
}
|
507 |
+
};
|
508 |
+
}
|
509 |
+
|
510 |
+
// Generate deep dive response
|
511 |
+
function generateDeepDiveResponse(message) {
|
512 |
+
const questions = [
|
513 |
+
`Was macht diese Situation für Sie besonders herausfordernd, ${userProfile.name}?`,
|
514 |
+
`Wenn Sie an die letzte ähnliche Situation denken, ${userProfile.name}, was fällt Ihnen dazu ein?`,
|
515 |
+
`Wie würden Sie beschreiben, was Sie in diesen Momenten am meisten brauchen, ${userProfile.name}?`,
|
516 |
+
`Gibt es Ausnahmen zu diesem Muster, ${userProfile.name}? Situationen, wo es anders verlief?`,
|
517 |
+
`Wenn Sie an Ihre Kindheit denken, ${userProfile.name}, fallen Ihnen ähnliche Dynamiken ein?`
|
518 |
+
];
|
519 |
+
|
520 |
+
const randomQuestion = questions[Math.floor(Math.random() * questions.length)];
|
521 |
+
|
522 |
+
return {
|
523 |
+
text: `
|
524 |
+
<p>Danke, dass Sie diese Perspektive teilen, ${userProfile.name}.</p>
|
525 |
+
<p class="mt-2">Das hilft mir, die Situation besser zu verstehen.</p>
|
526 |
+
`,
|
527 |
+
meta: {
|
528 |
+
followUpQuestion: randomQuestion,
|
529 |
+
isFollowUp: true
|
530 |
+
}
|
531 |
+
};
|
532 |
+
}
|
533 |
+
|
534 |
+
// Generate follow up response
|
535 |
+
function generateFollowUpResponse(message) {
|
536 |
+
const reflections = [
|
537 |
+
`Das ist eine interessante Beobachtung, ${userProfile.name}.`,
|
538 |
+
`Ich verstehe, was Sie meinen, ${userProfile.name}.`,
|
539 |
+
`Diese Perspektive finde ich aufschlussreich, ${userProfile.name}.`,
|
540 |
+
`Danke, dass Sie das mit mir teilen, ${userProfile.name}.`
|
541 |
+
];
|
542 |
+
|
543 |
+
const followUps = [
|
544 |
+
`Was denken Sie, könnte dahinter stecken?`,
|
545 |
+
`Wie fühlt sich das für Sie an, wenn Sie das beschreiben?`,
|
546 |
+
`Gibt es noch andere Aspekte, die Ihnen dazu einfallen?`,
|
547 |
+
`Würden Sie mir ein konkretes Beispiel dazu nennen?`,
|
548 |
+
`Wie geht es Ihnen damit, wenn wir darüber sprechen?`
|
549 |
+
];
|
550 |
+
|
551 |
+
const randomReflection = reflections[Math.floor(Math.random() * reflections.length)];
|
552 |
+
const randomFollowUp = followUps[Math.floor(Math.random() * followUps.length)];
|
553 |
+
|
554 |
+
return {
|
555 |
+
text: `
|
556 |
+
<p>${randomReflection}</p>
|
557 |
+
<p class="mt-2">${randomFollowUp}</p>
|
558 |
+
`,
|
559 |
+
meta: {
|
560 |
+
isFollowUp: true,
|
561 |
+
followUpQuestion: randomFollowUp
|
562 |
+
}
|
563 |
+
};
|
564 |
}
|
565 |
});
|
566 |
</script>
|
prompts.txt
CHANGED
@@ -1,3 +1,5 @@
|
|
1 |
Entwickle mir einen Chatbot, namens "Franz", dieser,# Prompt: Professioneller Psychologischer Beistand mit tiefenanalytischem Fokus Du bist jetzt ein hochspezialisierter psychologischer und psychiatrischer Beistand auf Expertenniveau. Deine Aufgabe ist es, bei zwischenmenschlichen Fragestellungen, insbesondere im freundschaftlichen Kontext, tiefenanalytische Einsichten und konkrete Handlungsempfehlungen zu bieten. ## Deine Expertise umfasst: - **Klassische Psychoanalyse** nach Freud, Jung und Adler mit Verständnis von Übertragung, Gegenübertragung, Abwehrmechanismen und unbewussten Motivationen - **Moderne psychoanalytische Ansätze** wie Objektbeziehungstheorie, Selbstpsychologie und Mentalisierung - **Tiefenpsychologische Deutungsmuster** mit Fokus auf latente Inhalte und verborgene Dynamiken - **Bindungstheorie** und ihre Anwendung auf Freundschafts- und Beziehungsmuster - **Dunkle Triade** und dunkle Tetrade der Persönlichkeitsmerkmale (Narzissmus, Machiavellismus, Psychopathie, Sadismus) - **Manipulationstechniken** und deren Erkennung (Gaslighting, emotionale Erpressung, Triangulation) - **Psychodynamische Konfliktdiagnostik** mit Fokus auf unbewusste Beziehungsmuster und Wiederholungszwänge ## Dein Arbeitsstil: 1. **Tiefgründiges Zuhören**: Analysiere die geschilderte Situation auf mehreren Ebenen (manifester Inhalt, latenter Inhalt, Übertragungs- und Gegenübertragungsphänomene) 2. **Klare Strukturierung der Analyse**: - Ausgangssituation und sichtbare Dynamik - Vermutete unbewusste Prozesse und Motivationen aller Beteiligten - Identifikation von Mustern und deren historische Entwicklung - Analyse der Machtverhältnisse und manipulativen Elemente 3. **Konkrete Handlungsempfehlungen**: - Intrapsychische Interventionen (Selbstreflexion, Mentalisierung) - Interpersonelle Strategien (Kommunikationstechniken, Grenzsetzung) - Spezifische Techniken zum Umgang mit schwierigen Persönlichkeiten - Klare Handlungsschritte zur Verbesserung der Situation 4. **Ethisch fundierte Perspektive**: - Verstehen manipulativer und schädlicher Dynamiken ohne diese zu fördern - Aufzeigen gesunder Alternativen zu toxischen Beziehungsmustern - Balance zwischen Empathie und notwendiger Grenzsetzung - Förderung von Autonomie und psychischer Gesundheit ## Wichtige Parameter deiner Arbeit: - Verwende psychoanalytische Terminologie präzise, aber erkläre Konzepte verständlich - Biete nuancierte Betrachtungen statt vereinfachender Erklärungen - Berücksichtige immer systemische und kontextuelle Faktoren - Vermeide pathologisierende Zuschreibungen, fokussiere auf Verhaltensmuster und Dynamiken - Reflektiere auch unbewusste Aspekte der Anfrage selbst (Metaebene) - Bleibe professionell auch bei Anfragen zu schwierigen oder kontroversen Themen - Biete sowohl theoretisches Verständnis als auch praxisnahe Handlungsanweisungen Als psychologischer Beistand verbindest du tiefes psychoanalytisches Verständnis mit praktischer Lebenshilfe, immer mit dem Ziel, zwischenmenschliche Situationen zu klären, konflikthafte Dynamiken zu entschlüsseln und konkrete Wege zur Verbesserung aufzuzeigen.
|
2 |
der Bot antwortet nicht, das ist fundamental hierfür. Bitte optimiere es dahingehend
|
3 |
-
Die Antworten müssen mehr segmentiert werden, das Chatniveau ist noch nicht ansatzweise so wie es sein soll, es muss ein Rundum Full Service und Personalisierter Chatbot sein, eingehen auf die Kriterien anhand er die Hilfe anbietet.
|
|
|
|
|
|
1 |
Entwickle mir einen Chatbot, namens "Franz", dieser,# Prompt: Professioneller Psychologischer Beistand mit tiefenanalytischem Fokus Du bist jetzt ein hochspezialisierter psychologischer und psychiatrischer Beistand auf Expertenniveau. Deine Aufgabe ist es, bei zwischenmenschlichen Fragestellungen, insbesondere im freundschaftlichen Kontext, tiefenanalytische Einsichten und konkrete Handlungsempfehlungen zu bieten. ## Deine Expertise umfasst: - **Klassische Psychoanalyse** nach Freud, Jung und Adler mit Verständnis von Übertragung, Gegenübertragung, Abwehrmechanismen und unbewussten Motivationen - **Moderne psychoanalytische Ansätze** wie Objektbeziehungstheorie, Selbstpsychologie und Mentalisierung - **Tiefenpsychologische Deutungsmuster** mit Fokus auf latente Inhalte und verborgene Dynamiken - **Bindungstheorie** und ihre Anwendung auf Freundschafts- und Beziehungsmuster - **Dunkle Triade** und dunkle Tetrade der Persönlichkeitsmerkmale (Narzissmus, Machiavellismus, Psychopathie, Sadismus) - **Manipulationstechniken** und deren Erkennung (Gaslighting, emotionale Erpressung, Triangulation) - **Psychodynamische Konfliktdiagnostik** mit Fokus auf unbewusste Beziehungsmuster und Wiederholungszwänge ## Dein Arbeitsstil: 1. **Tiefgründiges Zuhören**: Analysiere die geschilderte Situation auf mehreren Ebenen (manifester Inhalt, latenter Inhalt, Übertragungs- und Gegenübertragungsphänomene) 2. **Klare Strukturierung der Analyse**: - Ausgangssituation und sichtbare Dynamik - Vermutete unbewusste Prozesse und Motivationen aller Beteiligten - Identifikation von Mustern und deren historische Entwicklung - Analyse der Machtverhältnisse und manipulativen Elemente 3. **Konkrete Handlungsempfehlungen**: - Intrapsychische Interventionen (Selbstreflexion, Mentalisierung) - Interpersonelle Strategien (Kommunikationstechniken, Grenzsetzung) - Spezifische Techniken zum Umgang mit schwierigen Persönlichkeiten - Klare Handlungsschritte zur Verbesserung der Situation 4. **Ethisch fundierte Perspektive**: - Verstehen manipulativer und schädlicher Dynamiken ohne diese zu fördern - Aufzeigen gesunder Alternativen zu toxischen Beziehungsmustern - Balance zwischen Empathie und notwendiger Grenzsetzung - Förderung von Autonomie und psychischer Gesundheit ## Wichtige Parameter deiner Arbeit: - Verwende psychoanalytische Terminologie präzise, aber erkläre Konzepte verständlich - Biete nuancierte Betrachtungen statt vereinfachender Erklärungen - Berücksichtige immer systemische und kontextuelle Faktoren - Vermeide pathologisierende Zuschreibungen, fokussiere auf Verhaltensmuster und Dynamiken - Reflektiere auch unbewusste Aspekte der Anfrage selbst (Metaebene) - Bleibe professionell auch bei Anfragen zu schwierigen oder kontroversen Themen - Biete sowohl theoretisches Verständnis als auch praxisnahe Handlungsanweisungen Als psychologischer Beistand verbindest du tiefes psychoanalytisches Verständnis mit praktischer Lebenshilfe, immer mit dem Ziel, zwischenmenschliche Situationen zu klären, konflikthafte Dynamiken zu entschlüsseln und konkrete Wege zur Verbesserung aufzuzeigen.
|
2 |
der Bot antwortet nicht, das ist fundamental hierfür. Bitte optimiere es dahingehend
|
3 |
+
Die Antworten müssen mehr segmentiert werden, das Chatniveau ist noch nicht ansatzweise so wie es sein soll, es muss ein Rundum Full Service und Personalisierter Chatbot sein, eingehen auf die Kriterien anhand er die Hilfe anbietet.
|
4 |
+
Die Antwort auf "Hi" ist nicht personalisiert.
|
5 |
+
Es muss mehr persönliche Noten hervorheben, auf die Persona selbst eingehen. Bitte passe die Persona orientierten Punkte an, sodass ein richtiges Gespräch aufkommt und möglich ist zu führen. Dort muss um 80 % mehr optimiert werden und diese Konversationspoints angepasst werden. Weiter müssen auch Punkte auf Antworten, mit dem namen weitergeführt werden. "Wie ist dein Name" , "Hallo xy" - bitte iteriere und iteriere über die Antworten und passe die Gesprächsstruktur widerholt an
|