properly feed in conversation history
This commit is contained in:
@@ -346,7 +346,7 @@ class ChatDatabase:
|
||||
|
||||
def get_conversation_context(
|
||||
self, user_id: str, current_message: str, max_context: int = 5
|
||||
) -> str:
|
||||
) -> list[dict[str, str]]:
|
||||
"""Get relevant conversation context for RAG."""
|
||||
# Get recent messages from the user
|
||||
recent_messages = self.get_user_history(user_id, limit=max_context * 2)
|
||||
@@ -357,22 +357,21 @@ class ChatDatabase:
|
||||
)
|
||||
|
||||
# Combine contexts
|
||||
context_parts = []
|
||||
context_parts: list[dict[str, str]] = []
|
||||
|
||||
# Add recent messages
|
||||
for user_message, bot_message in recent_messages:
|
||||
combined_content = f"[Recent chat]\n{user_message}\n{bot_message}"
|
||||
context_parts.append(combined_content)
|
||||
context_parts.append({"role": "assistant", "content": bot_message})
|
||||
context_parts.append({"role": "user", "content": user_message})
|
||||
|
||||
# Add similar messages
|
||||
for user_message, bot_message, similarity in similar_messages:
|
||||
combined_content = f"{user_message}\n{bot_message}"
|
||||
if combined_content not in "\n".join(context_parts):
|
||||
context_parts.append(f"[You remember]\n{combined_content}")
|
||||
context_parts.append({"role": "assistant", "content": bot_message})
|
||||
context_parts.append({"role": "user", "content": user_message})
|
||||
|
||||
# Conversation history needs to be delivered in "newest context last" order
|
||||
context_parts.reverse()
|
||||
return "\n".join(context_parts[-max_context * 4 :]) # Limit total context
|
||||
return context_parts
|
||||
|
||||
def clear_all_messages(self):
|
||||
"""Clear all messages and embeddings from the database."""
|
||||
|
||||
Reference in New Issue
Block a user