Spaces:
Runtime error
Runtime error
Commit
·
f39c74f
1
Parent(s):
2759c49
fix : improve the error
Browse files- core/chat/bot_service.py +5 -11
- core/chat/chatstore.py +3 -7
core/chat/bot_service.py
CHANGED
|
@@ -16,8 +16,6 @@ from service.dto import ChatMessage
|
|
| 16 |
from pymongo.mongo_client import MongoClient
|
| 17 |
|
| 18 |
|
| 19 |
-
|
| 20 |
-
|
| 21 |
class ChatCompletionService:
|
| 22 |
def __init__(self, session_id: str, user_request: str, titles: List = None, type_bot: str = "general"):
|
| 23 |
self.session_id = session_id
|
|
@@ -42,12 +40,14 @@ class ChatCompletionService:
|
|
| 42 |
response = chat_engine.chat(self.user_request)
|
| 43 |
sources = response.sources
|
| 44 |
number_reference_sorted = self._extract_sorted_references(response)
|
|
|
|
| 45 |
|
| 46 |
contents, metadata_collection, scores = self._process_sources(sources, number_reference_sorted)
|
| 47 |
|
| 48 |
# Update response and renumber sources
|
| 49 |
response = update_response(str(response))
|
| 50 |
contents = sort_and_renumber_sources(contents)
|
|
|
|
| 51 |
|
| 52 |
# Add contents to metadata
|
| 53 |
metadata_collection = self._attach_contents_to_metadata(contents, metadata_collection)
|
|
@@ -64,7 +64,7 @@ class ChatCompletionService:
|
|
| 64 |
|
| 65 |
try:
|
| 66 |
if self.type_bot == "specific":
|
| 67 |
-
self._save_chat_history_to_db(response, metadata_collection)
|
| 68 |
|
| 69 |
return str(response), metadata_collection, scores
|
| 70 |
|
|
@@ -101,10 +101,10 @@ class ChatCompletionService:
|
|
| 101 |
|
| 102 |
for number in number_reference_sorted:
|
| 103 |
number = int(number)
|
| 104 |
-
if sources and sources
|
| 105 |
node = dict(sources[0])["raw_output"].source_nodes
|
| 106 |
if 0 <= number - 1 < len(node):
|
| 107 |
-
content =
|
| 108 |
contents.append(content)
|
| 109 |
metadata = dict(node[number - 1].node.metadata)
|
| 110 |
metadata_collection.append(metadata)
|
|
@@ -155,9 +155,3 @@ class ChatCompletionService:
|
|
| 155 |
collection = db[self.session_id] # Replace with your collection name
|
| 156 |
result = collection.insert_many(chat_history_json)
|
| 157 |
print("Data inserted with record ids", result.inserted_ids)
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
# Example usage
|
| 161 |
-
def generate_completion_non_streaming(session_id, user_request, titles=None, type_bot="general"):
|
| 162 |
-
chat_service = ChatCompletionService(session_id, user_request, titles, type_bot)
|
| 163 |
-
return chat_service.generate_completion()
|
|
|
|
| 16 |
from pymongo.mongo_client import MongoClient
|
| 17 |
|
| 18 |
|
|
|
|
|
|
|
| 19 |
class ChatCompletionService:
|
| 20 |
def __init__(self, session_id: str, user_request: str, titles: List = None, type_bot: str = "general"):
|
| 21 |
self.session_id = session_id
|
|
|
|
| 40 |
response = chat_engine.chat(self.user_request)
|
| 41 |
sources = response.sources
|
| 42 |
number_reference_sorted = self._extract_sorted_references(response)
|
| 43 |
+
print("number reference sorted : ",number_reference_sorted)
|
| 44 |
|
| 45 |
contents, metadata_collection, scores = self._process_sources(sources, number_reference_sorted)
|
| 46 |
|
| 47 |
# Update response and renumber sources
|
| 48 |
response = update_response(str(response))
|
| 49 |
contents = sort_and_renumber_sources(contents)
|
| 50 |
+
print(contents)
|
| 51 |
|
| 52 |
# Add contents to metadata
|
| 53 |
metadata_collection = self._attach_contents_to_metadata(contents, metadata_collection)
|
|
|
|
| 64 |
|
| 65 |
try:
|
| 66 |
if self.type_bot == "specific":
|
| 67 |
+
self._save_chat_history_to_db(str(response), metadata_collection)
|
| 68 |
|
| 69 |
return str(response), metadata_collection, scores
|
| 70 |
|
|
|
|
| 101 |
|
| 102 |
for number in number_reference_sorted:
|
| 103 |
number = int(number)
|
| 104 |
+
if sources and len(sources) > 0:
|
| 105 |
node = dict(sources[0])["raw_output"].source_nodes
|
| 106 |
if 0 <= number - 1 < len(node):
|
| 107 |
+
content = node[number - 1].node.get_text()
|
| 108 |
contents.append(content)
|
| 109 |
metadata = dict(node[number - 1].node.metadata)
|
| 110 |
metadata_collection.append(metadata)
|
|
|
|
| 155 |
collection = db[self.session_id] # Replace with your collection name
|
| 156 |
result = collection.insert_many(chat_history_json)
|
| 157 |
print("Data inserted with record ids", result.inserted_ids)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/chat/chatstore.py
CHANGED
|
@@ -82,22 +82,18 @@ class ChatStore:
|
|
| 82 |
def clean_message(self, session_id: str) -> Optional[ChatMessage]:
|
| 83 |
"""Delete specific message for a session_id."""
|
| 84 |
current_list = self.redis_client.lrange(session_id, 0, -1)
|
| 85 |
-
|
| 86 |
indices_to_delete = []
|
| 87 |
for index, item in enumerate(current_list):
|
| 88 |
data = json.loads(item) # Parse JSON string to dict
|
| 89 |
|
| 90 |
# Logic to determine if item should be removed
|
| 91 |
-
if (data.get("role") == "assistant" and data.get("content") is None) or (
|
| 92 |
-
data.get("role") == "tool"
|
| 93 |
-
):
|
| 94 |
indices_to_delete.append(index)
|
| 95 |
|
| 96 |
# Remove elements by their indices in reverse order
|
| 97 |
for index in reversed(indices_to_delete):
|
| 98 |
-
self.redis_client.lrem(
|
| 99 |
-
session_id, 1, current_list[index]
|
| 100 |
-
) # Remove the element from the list in Redis
|
| 101 |
|
| 102 |
def get_keys(self) -> List[str]:
|
| 103 |
"""Get all keys."""
|
|
|
|
| 82 |
def clean_message(self, session_id: str) -> Optional[ChatMessage]:
|
| 83 |
"""Delete specific message for a session_id."""
|
| 84 |
current_list = self.redis_client.lrange(session_id, 0, -1)
|
| 85 |
+
|
| 86 |
indices_to_delete = []
|
| 87 |
for index, item in enumerate(current_list):
|
| 88 |
data = json.loads(item) # Parse JSON string to dict
|
| 89 |
|
| 90 |
# Logic to determine if item should be removed
|
| 91 |
+
if (data.get("role") == "assistant" and data.get("content") is None) or (data.get("role") == "tool"):
|
|
|
|
|
|
|
| 92 |
indices_to_delete.append(index)
|
| 93 |
|
| 94 |
# Remove elements by their indices in reverse order
|
| 95 |
for index in reversed(indices_to_delete):
|
| 96 |
+
self.redis_client.lrem(session_id, 1, current_list[index]) # Remove the element from the list in Redis
|
|
|
|
|
|
|
| 97 |
|
| 98 |
def get_keys(self) -> List[str]:
|
| 99 |
"""Get all keys."""
|