pycoze 0.1.161__tar.gz → 0.1.162__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. {pycoze-0.1.161 → pycoze-0.1.162}/PKG-INFO +1 -1
  2. pycoze-0.1.162/pycoze/bot/agent/__init__.py +5 -0
  3. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/chat.py +4 -3
  4. pycoze-0.1.162/pycoze/bot/bot.py +71 -0
  5. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze.egg-info/PKG-INFO +1 -1
  6. {pycoze-0.1.161 → pycoze-0.1.162}/setup.py +1 -1
  7. pycoze-0.1.161/pycoze/bot/agent/__init__.py +0 -5
  8. pycoze-0.1.161/pycoze/bot/bot.py +0 -27
  9. {pycoze-0.1.161 → pycoze-0.1.162}/LICENSE +0 -0
  10. {pycoze-0.1.161 → pycoze-0.1.162}/README.md +0 -0
  11. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/__init__.py +0 -0
  12. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ai/__init__.py +0 -0
  13. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ai/vram_reserve.py +0 -0
  14. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/__init__.py +0 -0
  15. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/agent.py +0 -0
  16. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/agent_types/__init__.py +0 -0
  17. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/agent_types/const.py +0 -0
  18. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/agent_types/openai_func_call_agent.py +0 -0
  19. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent/assistant.py +0 -0
  20. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/bot/agent_chat.py +0 -0
  21. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/reference/__init__.py +0 -0
  22. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/reference/bot.py +0 -0
  23. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/reference/lib.py +0 -0
  24. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/reference/tool.py +0 -0
  25. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ui/__init__.py +0 -0
  26. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ui/base.py +0 -0
  27. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ui/color.py +0 -0
  28. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ui/typ.py +0 -0
  29. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/ui/ui_def.py +0 -0
  30. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/utils/__init__.py +0 -0
  31. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/utils/arg.py +0 -0
  32. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze/utils/text_or_file.py +0 -0
  33. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze.egg-info/SOURCES.txt +0 -0
  34. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze.egg-info/dependency_links.txt +0 -0
  35. {pycoze-0.1.161 → pycoze-0.1.162}/pycoze.egg-info/top_level.txt +0 -0
  36. {pycoze-0.1.161 → pycoze-0.1.162}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.161
3
+ Version: 0.1.162
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -0,0 +1,5 @@
1
+ from .agent import run_agent
2
+ from .assistant import Runnable
3
+ from .chat import INPUT_MESSAGE, INTERRUPT_MESSAGE, CHAT_DATA, clear_chat_data, output, info
4
+
5
+ __all__ = [run_agent, Runnable, INPUT_MESSAGE, INTERRUPT_MESSAGE, CHAT_DATA, clear_chat_data, output, info]
@@ -3,12 +3,13 @@ from langchain_core.messages import AIMessage
3
3
 
4
4
 
5
5
  INPUT_MESSAGE = "INPUT_MESSAGE=>"
6
+ INTERRUPT_MESSAGE = "INTERRUPT_MESSAGE=>"
6
7
  _OUTPUT_MESSAGE = "OUTPUT_MESSAGE=>"
7
8
  _INFOMATION_MESSAGE = "INFOMATION_MESSAGE=>"
8
9
  _LOG = "LOG=>"
9
10
 
10
11
 
11
- CHAT_DATA = {"output":"","info":""}
12
+ CHAT_DATA = {"output":"", "info":""}
12
13
 
13
14
 
14
15
  def log(content, *args, end="\n", **kwargs):
@@ -16,13 +17,13 @@ def log(content, *args, end="\n", **kwargs):
16
17
 
17
18
 
18
19
  def clear_chat_data():
19
- CHAT_DATA = {"output":"","info":""}
20
+ CHAT_DATA = {"output":"", "info":""}
20
21
 
21
22
 
22
23
  def output(role, content):
23
24
  assert role == "assistant"
24
- print(_OUTPUT_MESSAGE + json.dumps({"role": role, "content": content}))
25
25
  CHAT_DATA["output"] = content
26
+ print(_OUTPUT_MESSAGE + json.dumps({"role": role, "content": content}))
26
27
 
27
28
  def info(role, content):
28
29
  CHAT_DATA["info"] += content
@@ -0,0 +1,71 @@
1
+ from langchain_core.messages import HumanMessage, AIMessage
2
+ from .agent import INPUT_MESSAGE, INTERRUPT_MESSAGE, output, CHAT_DATA, clear_chat_data
3
+ from .agent_chat import agent_chat
4
+ import json
5
+ import threading
6
+ import queue
7
+ import time
8
+
9
+
10
+ class PeekableQueue(queue.Queue):
11
+ def peek(self):
12
+ with self.mutex:
13
+ if self.empty():
14
+ return None
15
+ return self.queue[0]
16
+
17
+
18
+ def chat(bot_setting_file: str):
19
+ history = []
20
+ input_queue = PeekableQueue()
21
+
22
+ def input_thread(input_queue: PeekableQueue):
23
+ while True:
24
+ input_text = input()
25
+ if input_text == INTERRUPT_MESSAGE:
26
+ break
27
+ if not input_text.startswith(INPUT_MESSAGE):
28
+ raise ValueError("Invalid message")
29
+ input_queue.put(input_text)
30
+
31
+ input_thread_instance = threading.Thread(target=input_thread, args=(input_queue,))
32
+ input_thread_instance.start()
33
+
34
+ try:
35
+ while True:
36
+ if not input_queue.empty():
37
+ input_text = input_queue.get()
38
+ if input_text == INTERRUPT_MESSAGE:
39
+ break
40
+ try:
41
+ message = json.loads(input_text[len(INPUT_MESSAGE):])
42
+ history.append(HumanMessage(message["content"]))
43
+ clear_chat_data()
44
+ agent_chat_thread = threading.Thread(target=agent_chat, args=(bot_setting_file, history))
45
+ agent_chat_thread.start()
46
+ next_input_text = ""
47
+ while agent_chat_thread.is_alive():
48
+ if not input_queue.empty():
49
+ next_input_text = input_queue.peek()
50
+ if next_input_text == INTERRUPT_MESSAGE:
51
+ history.append(AIMessage(content=CHAT_DATA["info"]))
52
+ break
53
+ time.sleep(0.1) # 每隔 0.1 秒检查一次
54
+ if next_input_text != INTERRUPT_MESSAGE:
55
+ history.append(AIMessage(content=CHAT_DATA["output"]))
56
+ except json.JSONDecodeError:
57
+ print("Invalid JSON format in input message.")
58
+ except KeyError:
59
+ print("Missing 'content' key in input message.")
60
+ except Exception as e:
61
+ print(f"An error occurred: {e}")
62
+ finally:
63
+ input_thread_instance.join()
64
+
65
+
66
+
67
+ def get_chat_response(bot_setting_file: str, input_text: str):
68
+ history = [HumanMessage(input_text)]
69
+ clear_chat_data()
70
+ agent_chat(bot_setting_file, history)
71
+ return CHAT_DATA["output"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.161
3
+ Version: 0.1.162
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="pycoze",
5
- version="0.1.161",
5
+ version="0.1.162",
6
6
  packages=find_packages(),
7
7
  install_requires=[],
8
8
  author="Yuan Jie Xiong",
@@ -1,5 +0,0 @@
1
- from .agent import run_agent
2
- from .assistant import Runnable
3
- from .chat import INPUT_MESSAGE, CHAT_DATA, clear_chat_data, output, info
4
-
5
- __all__ = [run_agent, Runnable, INPUT_MESSAGE, output]
@@ -1,27 +0,0 @@
1
- from langchain_core.messages import HumanMessage, AIMessage
2
- from .agent import INPUT_MESSAGE, output, CHAT_DATA, clear_chat_data
3
- from .agent_chat import agent_chat
4
- import json
5
- import threading
6
-
7
-
8
- def chat(bot_setting_file: str):
9
- history = []
10
- while True:
11
- input_text = input()
12
- if not input_text.startswith(INPUT_MESSAGE):
13
- raise ValueError("Invalid message")
14
- message = json.loads(input_text[len(INPUT_MESSAGE) :])
15
- history.append(HumanMessage(message["content"]))
16
- clear_chat_data()
17
- agent_chat_thread = threading.Thread(target=agent_chat, args=(bot_setting_file, history))
18
- agent_chat_thread.start()
19
- agent_chat_thread.join()
20
- history.append(AIMessage(content=CHAT_DATA["output"]))
21
-
22
-
23
- def get_chat_response(bot_setting_file: str, input_text: str):
24
- history = [HumanMessage(input_text)]
25
- clear_chat_data()
26
- agent_chat(bot_setting_file, history)
27
- return CHAT_DATA["output"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes