Spaces:
Sleeping
Sleeping
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."""
|