1
- from .utils import get_short_term_memory , classify_sentiment
1
+ from .utils import get_short_term_memory , classify_sentiment , get_embedding , get_relevant_memories
2
2
from .forms import *
3
3
from django .contrib .admin .views .decorators import staff_member_required
4
4
from django .contrib .auth .decorators import login_required
16
16
from django .db .models .functions import TruncDate
17
17
from django .db .models import Count
18
18
19
-
20
19
# Create your views here.
21
20
@login_required
22
21
@staff_member_required
@@ -89,6 +88,8 @@ def view_lulu(request):
89
88
90
89
recent_memory = get_short_term_memory (user_id )
91
90
91
+ relevant_memories = get_relevant_memories (user_id , question , top_k = 3 )
92
+
92
93
messages = [
93
94
{
94
95
"role" : "system" ,
@@ -100,6 +101,12 @@ def view_lulu(request):
100
101
}
101
102
]
102
103
104
+ for mem in relevant_memories :
105
+ messages .append ({"role" : "user" , "content" : f"(Previously) { mem .user_message } " })
106
+ if mem .chat_message :
107
+ messages .append ({"role" : "assistant" , "content" : f"(Previously) { mem .chat_message } " })
108
+
109
+
103
110
messages .extend (recent_memory )
104
111
105
112
messages .append ({"role" : "user" , "content" : question })
@@ -121,12 +128,14 @@ def stream_gpt():
121
128
response_text_html = markdown .markdown (text = response_text , output_format = 'html' )
122
129
123
130
sentiment = classify_sentiment (question )
131
+ embedding = get_embedding (question )
124
132
125
133
models .chat_memories .objects .create (
126
134
user_id = request .user .id ,
127
135
user_message = question ,
128
136
user_message_sentiment = sentiment ,
129
- chat_message = response_text
137
+ chat_message = response_text ,
138
+ embedding = embedding
130
139
)
131
140
132
141
yield response_text_html
@@ -137,7 +146,6 @@ def stream_gpt():
137
146
138
147
return response_server
139
148
140
-
141
149
######################### Memos and Feedback #########################
142
150
@login_required
143
151
def view_save_memo (request ):
@@ -186,7 +194,6 @@ def view_save_feedback(request):
186
194
if not user_prompt or not bot_message or not feedback_type :
187
195
return JsonResponse ({"error" : "Dados inválidos." }, status = 400 )
188
196
189
- # Verifica se já existe feedback desse usuário para esse par prompt/resposta
190
197
existing_feedback = models .chat_facts_feedback .objects .filter (
191
198
user = request .user ,
192
199
user_prompt = user_prompt ,
@@ -202,7 +209,6 @@ def view_save_feedback(request):
202
209
existing_feedback .save ()
203
210
return JsonResponse ({"status" : "updated" })
204
211
205
- # Nenhum feedback anterior → criar novo
206
212
models .chat_facts_feedback .objects .create (
207
213
user = request .user ,
208
214
user_prompt = user_prompt ,
0 commit comments