pycoze 0.1.199__py3-none-any.whl → 0.1.200__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pycoze/bot/agent/agent.py CHANGED
@@ -70,6 +70,7 @@ async def run_agent(agent, inputs: list, tool_compatibility_mode: bool, should_e
70
70
 
71
71
  if __name__ == "__main__":
72
72
  from langchain_experimental.tools import PythonREPLTool
73
+ import threading
73
74
 
74
75
  llm_file = r"C:\Users\aiqqq\AppData\Roaming\pycoze\JsonStorage\llm.json"
75
76
  with open(llm_file, "r", encoding="utf-8") as f:
pycoze/bot/bot.py CHANGED
@@ -6,7 +6,6 @@ import threading
6
6
  import queue
7
7
  import time
8
8
  import asyncio
9
- import multiprocessing
10
9
 
11
10
 
12
11
  class PeekableQueue(queue.Queue):
@@ -15,14 +14,17 @@ class PeekableQueue(queue.Queue):
15
14
  return self._get()
16
15
  except queue.Empty:
17
16
  return None
17
+
18
18
 
19
-
20
- def run_agent_chat(bot_setting_file, history, should_exit):
21
- loop = asyncio.new_event_loop()
22
- asyncio.set_event_loop(loop)
23
- loop.run_until_complete(agent_chat(bot_setting_file, history, should_exit))
24
- loop.close()
25
-
19
+ async def handle_input_queue(input_queue, should_exit, history):
20
+ while not should_exit.is_set():
21
+ if not input_queue.empty():
22
+ next_input_text = input_queue.get_nowait()
23
+ if next_input_text == INTERRUPT_MESSAGE:
24
+ history.append(AIMessage(content=CHAT_DATA["info"]))
25
+ should_exit.set() # 设置退出标志
26
+ break
27
+ await asyncio.sleep(0.1) # 非阻塞地等待一段时间
26
28
 
27
29
  def chat(bot_setting_file: str):
28
30
  history = []
@@ -35,7 +37,6 @@ def chat(bot_setting_file: str):
35
37
  input_queue.put(input_text)
36
38
  else:
37
39
  raise ValueError("Invalid message")
38
-
39
40
 
40
41
  input_thread_instance = threading.Thread(target=input_thread, args=(input_queue,))
41
42
  input_thread_instance.start()
@@ -51,22 +52,24 @@ def chat(bot_setting_file: str):
51
52
  history.append(HumanMessage(message["content"]))
52
53
  clear_chat_data()
53
54
 
54
- # 创建进程退出标志
55
- should_exit = multiprocessing.Event()
56
- agent_chat_process = multiprocessing.Process(target=run_agent_chat, args=(bot_setting_file, history, should_exit)) # 需要是独立进程,不然无法创建新进程
57
- agent_chat_process.start()
58
-
59
- next_input_text = ""
60
- while agent_chat_process.is_alive():
61
- if not input_queue.empty():
62
- next_input_text = input_queue.peek()
63
- if next_input_text == INTERRUPT_MESSAGE:
64
- history.append(AIMessage(content=CHAT_DATA["info"]))
65
- should_exit.set() # 设置退出标志
66
- break
67
- time.sleep(0.1) # 每隔 0.1 秒检查一次
68
- if next_input_text != INTERRUPT_MESSAGE:
55
+ # 创建一个异步事件循环
56
+ loop = asyncio.new_event_loop()
57
+ asyncio.set_event_loop(loop)
58
+
59
+ # 创建一个 Event 对象用于中断
60
+ should_exit = asyncio.Event()
61
+
62
+ # 并发运行 agent_chat 和 handle_input_queue
63
+ agent_chat_task = loop.create_task(agent_chat(bot_setting_file, history, should_exit))
64
+ input_handler_task = loop.create_task(handle_input_queue(input_queue, should_exit, history))
65
+
66
+ # 运行所有任务
67
+ loop.run_until_complete(asyncio.gather(agent_chat_task, input_handler_task))
68
+
69
+ # 如果没有中断,则添加 AI 的响应到历史记录
70
+ if not should_exit.is_set():
69
71
  history.append(AIMessage(content=CHAT_DATA["output"]))
72
+
70
73
  except json.JSONDecodeError:
71
74
  print("Invalid JSON format in input message.")
72
75
  except KeyError:
@@ -81,6 +84,6 @@ def chat(bot_setting_file: str):
81
84
  def get_chat_response(bot_setting_file: str, input_text: str):
82
85
  history = [HumanMessage(input_text)]
83
86
  clear_chat_data()
84
- should_exit = multiprocessing.Event()
87
+ should_exit = threading.Event()
85
88
  asyncio.run(agent_chat(bot_setting_file, history, should_exit))
86
89
  return CHAT_DATA["output"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.199
3
+ Version: 0.1.200
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -6,9 +6,9 @@ pycoze/automation/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
6
6
  pycoze/automation/browser/edge_driver_manager.py,sha256=gpgseunph5owZH6EskSYthuhey2SU3UP204gY0yIcuI,3022
7
7
  pycoze/bot/__init__.py,sha256=6HHMxDQVOyZM9dtSjQm9tjGnhj4h7CixD0JOvEwTi48,41
8
8
  pycoze/bot/agent_chat.py,sha256=hr0jGTd-lvLSe4vCcvaN2rKhB7BMBcVBtI1FpVa6ngs,3016
9
- pycoze/bot/bot.py,sha256=OX6ZeCmFirwUw4lPAxpQxyRIdjPEUTKRX0R1n7bSdEM,3364
9
+ pycoze/bot/bot.py,sha256=VX6SD-D8K--IA3Y5UJ7XHQ1lOJVdtAmg7LznvRHnGvs,3419
10
10
  pycoze/bot/agent/__init__.py,sha256=3wE8_FFQS8j2BY-g9Cr-onV0POEvDRZaw_NCzpqrNus,265
11
- pycoze/bot/agent/agent.py,sha256=7dyAsHSVnBmFUK9GR_BumkjSgrvQA0KLj0e3aDN_JU4,3592
11
+ pycoze/bot/agent/agent.py,sha256=Ueste4xWvkQFk5Giklv4c-kcxiPL-D-KafzZ4DONosY,3613
12
12
  pycoze/bot/agent/assistant.py,sha256=3iLxnRvf_ia0cP-FHK5Fv4ylltlnzPq1KscRCFYqjkc,1147
13
13
  pycoze/bot/agent/chat.py,sha256=mubOCAHvA6VtyE6N40elI6KrP6A69uB_G6ihE3G_Vi4,860
14
14
  pycoze/bot/agent/agent_types/__init__.py,sha256=zmU2Kmrv5mCdfg-QlPn2H6pWxbGeq8s7YTqLhpzJC6k,179
@@ -28,8 +28,8 @@ pycoze/utils/__init__.py,sha256=Gi5EnrWZGMD2JRejgV4c_VLCXyvA2wwBFI_niDF5MUE,110
28
28
  pycoze/utils/arg.py,sha256=GtfGbMTMdaK75Fwh6MpUe1pCA5X6Ep4LFG7a72YrzjI,525
29
29
  pycoze/utils/env.py,sha256=W04lhvTHhAAC6EldP6kk2xrctqtu8K6kl1vDLZDNeh8,561
30
30
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
31
- pycoze-0.1.199.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
32
- pycoze-0.1.199.dist-info/METADATA,sha256=yMRgi_FXhAZKsz5M9qq1cUq2MKnJLBiYrTXnDsqVO3g,726
33
- pycoze-0.1.199.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
34
- pycoze-0.1.199.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
35
- pycoze-0.1.199.dist-info/RECORD,,
31
+ pycoze-0.1.200.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
32
+ pycoze-0.1.200.dist-info/METADATA,sha256=1hKkSBOzR7Rof3qx3IzysiIfilGXZg5iJZ6gVPl0zwA,726
33
+ pycoze-0.1.200.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
34
+ pycoze-0.1.200.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
35
+ pycoze-0.1.200.dist-info/RECORD,,