mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-28 21:05:17 +02:00
Query History Include Feedback Text (#80)
This commit is contained in:
@@ -39,7 +39,8 @@ class MessageSnapshot(BaseModel):
|
|||||||
message: str
|
message: str
|
||||||
message_type: MessageType
|
message_type: MessageType
|
||||||
documents: list[AbridgedSearchDoc]
|
documents: list[AbridgedSearchDoc]
|
||||||
feedback: QAFeedbackType | None
|
feedback_type: QAFeedbackType | None
|
||||||
|
feedback_text: str | None
|
||||||
time_created: datetime
|
time_created: datetime
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -49,7 +50,7 @@ class MessageSnapshot(BaseModel):
|
|||||||
if len(message.chat_message_feedbacks) > 0
|
if len(message.chat_message_feedbacks) > 0
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
message_feedback = (
|
feedback_type = (
|
||||||
(
|
(
|
||||||
QAFeedbackType.LIKE
|
QAFeedbackType.LIKE
|
||||||
if latest_messages_feedback_obj.is_positive
|
if latest_messages_feedback_obj.is_positive
|
||||||
@@ -58,7 +59,11 @@ class MessageSnapshot(BaseModel):
|
|||||||
if latest_messages_feedback_obj
|
if latest_messages_feedback_obj
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
feedback_text = (
|
||||||
|
latest_messages_feedback_obj.feedback_text
|
||||||
|
if latest_messages_feedback_obj
|
||||||
|
else None
|
||||||
|
)
|
||||||
return cls(
|
return cls(
|
||||||
message=message.message,
|
message=message.message,
|
||||||
message_type=message.message_type,
|
message_type=message.message_type,
|
||||||
@@ -70,7 +75,8 @@ class MessageSnapshot(BaseModel):
|
|||||||
)
|
)
|
||||||
for document in message.search_docs
|
for document in message.search_docs
|
||||||
],
|
],
|
||||||
feedback=message_feedback,
|
feedback_type=feedback_type,
|
||||||
|
feedback_text=feedback_text,
|
||||||
time_created=message.time_sent,
|
time_created=message.time_sent,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -88,7 +94,8 @@ class QuestionAnswerPairSnapshot(BaseModel):
|
|||||||
user_message: str
|
user_message: str
|
||||||
ai_response: str
|
ai_response: str
|
||||||
retrieved_documents: list[AbridgedSearchDoc]
|
retrieved_documents: list[AbridgedSearchDoc]
|
||||||
feedback: QAFeedbackType | None
|
feedback_type: QAFeedbackType | None
|
||||||
|
feedback_text: str | None
|
||||||
persona_name: str
|
persona_name: str
|
||||||
user_email: str
|
user_email: str
|
||||||
time_created: datetime
|
time_created: datetime
|
||||||
@@ -112,7 +119,8 @@ class QuestionAnswerPairSnapshot(BaseModel):
|
|||||||
user_message=user_message.message,
|
user_message=user_message.message,
|
||||||
ai_response=ai_message.message,
|
ai_response=ai_message.message,
|
||||||
retrieved_documents=ai_message.documents,
|
retrieved_documents=ai_message.documents,
|
||||||
feedback=ai_message.feedback,
|
feedback_type=ai_message.feedback_type,
|
||||||
|
feedback_text=ai_message.feedback_text,
|
||||||
persona_name=chat_session_snapshot.persona_name,
|
persona_name=chat_session_snapshot.persona_name,
|
||||||
user_email=get_display_email(chat_session_snapshot.user_email),
|
user_email=get_display_email(chat_session_snapshot.user_email),
|
||||||
time_created=user_message.time_created,
|
time_created=user_message.time_created,
|
||||||
@@ -130,7 +138,8 @@ class QuestionAnswerPairSnapshot(BaseModel):
|
|||||||
for doc in self.retrieved_documents
|
for doc in self.retrieved_documents
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
"feedback": self.feedback.value if self.feedback else "",
|
"feedback_type": self.feedback_type.value if self.feedback_type else "",
|
||||||
|
"feedback_text": self.feedback_text or "",
|
||||||
"persona_name": self.persona_name,
|
"persona_name": self.persona_name,
|
||||||
"user_email": self.user_email,
|
"user_email": self.user_email,
|
||||||
"time_created": str(self.time_created),
|
"time_created": str(self.time_created),
|
||||||
@@ -161,7 +170,9 @@ def fetch_and_process_chat_session_history(
|
|||||||
valid_snapshots = [
|
valid_snapshots = [
|
||||||
snapshot
|
snapshot
|
||||||
for snapshot in valid_snapshots
|
for snapshot in valid_snapshots
|
||||||
if any(message.feedback == feedback_type for message in snapshot.messages)
|
if any(
|
||||||
|
message.feedback_type == feedback_type for message in snapshot.messages
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
return valid_snapshots
|
return valid_snapshots
|
||||||
|
@@ -33,10 +33,10 @@ function QueryHistoryTableRow({
|
|||||||
}) {
|
}) {
|
||||||
let finalFeedback: Feedback | "mixed" | null = null;
|
let finalFeedback: Feedback | "mixed" | null = null;
|
||||||
for (const message of chatSessionSnapshot.messages) {
|
for (const message of chatSessionSnapshot.messages) {
|
||||||
if (message.feedback) {
|
if (message.feedback_type) {
|
||||||
if (finalFeedback === null) {
|
if (finalFeedback === null) {
|
||||||
finalFeedback = message.feedback;
|
finalFeedback = message.feedback_type;
|
||||||
} else if (finalFeedback !== message.feedback) {
|
} else if (finalFeedback !== message.feedback_type) {
|
||||||
finalFeedback = "mixed";
|
finalFeedback = "mixed";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,9 +41,11 @@ function MessageDisplay({ message }: { message: MessageSnapshot }) {
|
|||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{message.feedback && (
|
{message.feedback_type && (
|
||||||
<div className="mt-2">
|
<div className="mt-2">
|
||||||
<FeedbackBadge feedback={message.feedback} />
|
<Bold className="font-bold text-xs">Feedback</Bold>
|
||||||
|
{message.feedback_text && <Text>{message.feedback_text}</Text>}
|
||||||
|
<FeedbackBadge feedback={message.feedback_type} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<Divider />
|
<Divider />
|
||||||
|
Reference in New Issue
Block a user