diff --git a/Html/apps/extension_ase/ase_client/client.py b/Html/apps/extension_ase/ase_client/client.py
index bef2f36..35e43c7 100644
--- a/Html/apps/extension_ase/ase_client/client.py
+++ b/Html/apps/extension_ase/ase_client/client.py
@@ -32,8 +32,6 @@ class ASEngineClient:
# ACK相关
self.ack_events: Dict[str, Event] = {} # 存储ack_id和对应的Event对象
-
- # 注册基础事件处理函数
self._register_base_events()
def _register_base_events(self):
@@ -72,6 +70,7 @@ class ASEngineClient:
# ACK事件处理
@self.sio.on('ack', namespace=self.namespace)
def on_ack(data):
+ print(f"Received ACK: {data}")
ack_id = data.get('ack_id')
if ack_id and ack_id in self.ack_events:
print(f"Received ACK for message: {ack_id}")
@@ -228,7 +227,7 @@ class ASEngineClient:
self.sid = None
print("Disconnected from server")
- def send_text(self, route: str, text: str, id:str="", wait_for_ack: bool = False, timeout: int = 5) -> bool:
+ def send_text(self, route: str, text: str, id:str="", wait_for_ack: bool = False, timeout: int = 5, return_event: bool = False) -> Any:
"""
发送文本消息
:param route: 目标路由
@@ -236,7 +235,8 @@ class ASEngineClient:
:param id: 发送者ID
:param wait_for_ack: 是否等待服务器ACK确认
:param timeout: 等待ACK的超时时间(秒)
- :return: 是否发送成功(若wait_for_ack为True,则返回是否收到ACK)
+ :param return_event: 是否返回事件对象和ack_id而不是等待ACK
+ :return: 如果wait_for_ack为True且return_event为False,返回是否收到ACK;如果return_event为True,返回(event, ack_id);否则返回是否发送成功
"""
if not self.connected:
print("Not connected to server")
@@ -247,20 +247,13 @@ class ASEngineClient:
try:
# 生成唯一ack_id
ack_id = f"{id}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}"
-
- # 准备发送数据
data = {
'type': 'text',
'data': text,
'id': id,
'ack_id': ack_id
}
-
- # 发送数据
self.sio.emit(route, data, namespace=self.namespace)
- print(f"Sent text to route '{route}': {text[:20]}")
-
- # 如果不需要等待ACK,直接返回True
if not wait_for_ack:
return True
@@ -268,6 +261,10 @@ class ASEngineClient:
event = Event()
self.ack_events[ack_id] = event
+ # 如果需要返回事件对象,直接返回
+ if return_event:
+ return event, ack_id
+
# 等待ACK或超时
received_ack = event.wait(timeout=timeout)
@@ -316,9 +313,6 @@ class ASEngineClient:
},
namespace=self.namespace
)
-
- print(f"Sent voice file to route '{route}'")
-
# 如果不需要等待ACK,直接返回True
if not wait_for_ack:
return True
@@ -384,7 +378,6 @@ class ASEngineClient:
},
namespace=self.namespace
)
- print(f"Sent image file to route '{route}': {filename}")
# 如果不需要等待ACK,直接返回True
if not wait_for_ack:
@@ -428,6 +421,17 @@ class HSAEngineClient(ASEngineClient):
super().__init__(server_url, namespace, id)
self.chatmanager = chatmanager
def loadmarkdown(self, fmd, fmdp, fsp):
- self.send_text('markdown-in', fmd, self.id, wait_for_ack=True)
- self.send_text('markdown-prompt-in', fmdp, self.id, wait_for_ack=True)
- self.send_text('score-prompt-in', fsp, self.id, wait_for_ack=True)
+ event1, ack_id1 = self.send_text('markdown-in', fmd, self.id, wait_for_ack=True, return_event=True)
+ event2, ack_id2 = self.send_text('markdown-prompt-in', fmdp, self.id, wait_for_ack=True, return_event=True)
+ event3, ack_id3 = self.send_text('score-prompt-in', fsp, self.id, wait_for_ack=True, return_event=True)
+ timeout = 5 # 超时时间
+ success1 = event1.wait(timeout=timeout)
+ success2 = event2.wait(timeout=timeout)
+ success3 = event3.wait(timeout=timeout)
+ if ack_id1 in self.ack_events:
+ del self.ack_events[ack_id1]
+ if ack_id2 in self.ack_events:
+ del self.ack_events[ack_id2]
+ if ack_id3 in self.ack_events:
+ del self.ack_events[ack_id3]
+ return success1 and success2 and success3
diff --git a/Html/apps/extension_ase/ase_client/manager.py b/Html/apps/extension_ase/ase_client/manager.py
index 766cd62..583b642 100644
--- a/Html/apps/extension_ase/ase_client/manager.py
+++ b/Html/apps/extension_ase/ase_client/manager.py
@@ -129,8 +129,8 @@ class ChatManager:
self.chapter_chain_now = chapter_index
self.chapter_chain[chapter_index].Focus()
- def load_next_chapter(self):
- print(f"now load next chapter markdown {self.chapter_chain_now}")
+ def load_now_chapter(self):
+ print(f"now load now chapter markdown {self.chapter_chain_now}")
self.ase_client.loadmarkdown(self.chapter_chain[self.chapter_chain_now].chapter, self.chapter_chain[self.chapter_chain_now].chapter_prompt, self.chapter_chain[self.chapter_chain_now].score_prompt)
self.load_code_in_markdown()
diff --git a/Html/apps/services/asectrl_service.py b/Html/apps/services/asectrl_service.py
index 15027c6..258ec6a 100644
--- a/Html/apps/services/asectrl_service.py
+++ b/Html/apps/services/asectrl_service.py
@@ -24,10 +24,9 @@ def on_connect_to_ase(client, entry, init_data, **kwargs):
}
response = requests.post(clear_url, json=payload, headers=headers)
response.raise_for_status() # 检查请求是否成功
- print(f"Clear user session successful: {response.json()}")
except Exception as e:
print(f"Error clearing user session: {e}")
- ase_client.chatmanager.load_next_chapter()
+ ase_client.chatmanager.load_now_chapter()
ase_client.send_text("chapter-start", "")
namespace_entry.emit('message', "教案加载完毕", room=init_data['room'], namespace='/agent')
@@ -69,5 +68,5 @@ def receive_ase_chapter_score(client_entry, user_and_manager, data, init_data):
chatmanager.scores[chatmanager.chapter_chain_now - 1] = data.get('data', None)
else: chatmanager.scores.append(data.get('data', None))
user.set_course_progress(chatmanager.chat_historys, chatmanager.scores, chatmanager.course_id, chatmanager.chapter_name, chatmanager.lesson_name)
- chatmanager.load_next_chapter()
+ chatmanager.load_now_chapter()
chatmanager.ase_client.send_text("chapter-start", "")
diff --git a/profile_stats b/profile_stats
new file mode 100644
index 0000000..0ec44af
Binary files /dev/null and b/profile_stats differ
diff --git a/profile_stats_extract b/profile_stats_extract
new file mode 100644
index 0000000..4ad5e9a
Binary files /dev/null and b/profile_stats_extract differ