pycoze 0.1.164__py3-none-any.whl → 0.1.166__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 +6 -3
- pycoze/bot/agent/chat.py +2 -3
- pycoze/bot/agent_chat.py +2 -17
- pycoze/bot/bot.py +1 -8
- {pycoze-0.1.164.dist-info → pycoze-0.1.166.dist-info}/METADATA +1 -1
- {pycoze-0.1.164.dist-info → pycoze-0.1.166.dist-info}/RECORD +9 -9
- {pycoze-0.1.164.dist-info → pycoze-0.1.166.dist-info}/LICENSE +0 -0
- {pycoze-0.1.164.dist-info → pycoze-0.1.166.dist-info}/WHEEL +0 -0
- {pycoze-0.1.164.dist-info → pycoze-0.1.166.dist-info}/top_level.txt +0 -0
pycoze/bot/agent/agent.py
CHANGED
@@ -13,10 +13,13 @@ from langchain_core.agents import AgentFinish
|
|
13
13
|
from .agent_types.const import HumanToolString
|
14
14
|
|
15
15
|
|
16
|
-
async def run_agent(agent, inputs: list, tool_compatibility_mode:bool):
|
16
|
+
async def run_agent(agent, inputs: list, tool_compatibility_mode: bool, should_exit):
|
17
17
|
exist_ids = set()
|
18
18
|
content_list = []
|
19
19
|
async for event in agent.astream_events(inputs, version="v2"):
|
20
|
+
if should_exit.is_set():
|
21
|
+
break
|
22
|
+
|
20
23
|
kind = event["event"]
|
21
24
|
if kind == "on_chain_end":
|
22
25
|
if "data" in event:
|
@@ -30,7 +33,7 @@ async def run_agent(agent, inputs: list, tool_compatibility_mode:bool):
|
|
30
33
|
for msg in input_list:
|
31
34
|
if isinstance(msg, HumanMessage) or isinstance(msg, SystemMessage):
|
32
35
|
if not tool_compatibility_mode or not msg.content.startswith(HumanToolString):
|
33
|
-
content_list = []
|
36
|
+
content_list = [] # 防止内容重复
|
34
37
|
if isinstance(msg, AIMessage) and not isinstance(
|
35
38
|
msg, AIMessageChunk
|
36
39
|
):
|
@@ -87,4 +90,4 @@ if __name__ == "__main__":
|
|
87
90
|
)
|
88
91
|
|
89
92
|
inputs = [HumanMessage(content="计算根号7+根号88")]
|
90
|
-
print(asyncio.run(run_agent(agent, inputs, True)))
|
93
|
+
print(asyncio.run(run_agent(agent, inputs, True, threading.Event())))
|
pycoze/bot/agent/chat.py
CHANGED
@@ -9,7 +9,7 @@ _INFOMATION_MESSAGE = "INFOMATION_MESSAGE=>"
|
|
9
9
|
_LOG = "LOG=>"
|
10
10
|
|
11
11
|
|
12
|
-
CHAT_DATA = {"output":""
|
12
|
+
CHAT_DATA = {"output":""}
|
13
13
|
|
14
14
|
|
15
15
|
def log(content, *args, end="\n", **kwargs):
|
@@ -17,7 +17,7 @@ def log(content, *args, end="\n", **kwargs):
|
|
17
17
|
|
18
18
|
|
19
19
|
def clear_chat_data():
|
20
|
-
CHAT_DATA = {"output":""
|
20
|
+
CHAT_DATA = {"output":""}
|
21
21
|
|
22
22
|
|
23
23
|
def output(role, content):
|
@@ -26,5 +26,4 @@ def output(role, content):
|
|
26
26
|
print(_OUTPUT_MESSAGE + json.dumps({"role": role, "content": content}))
|
27
27
|
|
28
28
|
def info(role, content):
|
29
|
-
CHAT_DATA["info"] += content
|
30
29
|
print(_INFOMATION_MESSAGE + json.dumps({"role": role, "content": content}))
|
pycoze/bot/agent_chat.py
CHANGED
@@ -75,20 +75,5 @@ async def agent_chat(bot_setting_file, history, should_exit):
|
|
75
75
|
assistant_message=prompt,
|
76
76
|
tool_compatibility_mode=cfg["toolCompatibilityMode"],
|
77
77
|
)
|
78
|
-
|
79
|
-
|
80
|
-
result = await run_agent(agent, history, cfg["toolCompatibilityMode"])
|
81
|
-
if not should_exit.is_set():
|
82
|
-
output("assistant", result)
|
83
|
-
|
84
|
-
task = asyncio.create_task(run_agent_with_exit_check())
|
85
|
-
|
86
|
-
while not task.done():
|
87
|
-
if should_exit.is_set():
|
88
|
-
task.cancel()
|
89
|
-
try:
|
90
|
-
await task
|
91
|
-
except asyncio.CancelledError:
|
92
|
-
pass
|
93
|
-
break
|
94
|
-
await asyncio.sleep(0.1)
|
78
|
+
result = asyncio.run(run_agent(agent, history, cfg["toolCompatibilityMode"], should_exit))
|
79
|
+
output("assistant", result)
|
pycoze/bot/bot.py
CHANGED
@@ -54,11 +54,9 @@ def chat(bot_setting_file: str):
|
|
54
54
|
next_input_text = input_queue.peek()
|
55
55
|
if next_input_text == INTERRUPT_MESSAGE:
|
56
56
|
should_exit.set() # 设置退出标志
|
57
|
-
history.append(AIMessage(content=CHAT_DATA["info"]))
|
58
57
|
break
|
59
58
|
time.sleep(0.1) # 每隔 0.1 秒检查一次
|
60
|
-
|
61
|
-
history.append(AIMessage(content=CHAT_DATA["output"]))
|
59
|
+
history.append(AIMessage(content=CHAT_DATA["output"]))
|
62
60
|
except json.JSONDecodeError:
|
63
61
|
print("Invalid JSON format in input message.")
|
64
62
|
except KeyError:
|
@@ -73,11 +71,6 @@ def chat(bot_setting_file: str):
|
|
73
71
|
def get_chat_response(bot_setting_file: str, input_text: str):
|
74
72
|
history = [HumanMessage(input_text)]
|
75
73
|
clear_chat_data()
|
76
|
-
|
77
|
-
# 为每个线程创建一个独立的退出标志
|
78
74
|
should_exit = threading.Event()
|
79
|
-
|
80
|
-
# 使用 asyncio.run 来运行异步函数,并等待其完成
|
81
75
|
asyncio.run(agent_chat(bot_setting_file, history, should_exit))
|
82
|
-
|
83
76
|
return CHAT_DATA["output"]
|
@@ -2,12 +2,12 @@ pycoze/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
pycoze/ai/__init__.py,sha256=odM2lgYSnApxw4AzLV_5AyaxL5_MLfydOSB1VmLGFyA,75
|
3
3
|
pycoze/ai/vram_reserve.py,sha256=QbqaA8qv87cnEpOVDMygi0BNMxuhLYwj1UKfR_D5BD4,4340
|
4
4
|
pycoze/bot/__init__.py,sha256=6HHMxDQVOyZM9dtSjQm9tjGnhj4h7CixD0JOvEwTi48,41
|
5
|
-
pycoze/bot/agent_chat.py,sha256=
|
6
|
-
pycoze/bot/bot.py,sha256=
|
5
|
+
pycoze/bot/agent_chat.py,sha256=QhhWIurzPVRp2hVakcn0aZH3EUotiWvn3rGKp_tNZuY,2883
|
6
|
+
pycoze/bot/bot.py,sha256=2nNpSiO1petkTtKFV-wb8kG4SVCZq3XSLETNtzrN1sM,2942
|
7
7
|
pycoze/bot/agent/__init__.py,sha256=3wE8_FFQS8j2BY-g9Cr-onV0POEvDRZaw_NCzpqrNus,265
|
8
|
-
pycoze/bot/agent/agent.py,sha256=
|
8
|
+
pycoze/bot/agent/agent.py,sha256=7dyAsHSVnBmFUK9GR_BumkjSgrvQA0KLj0e3aDN_JU4,3592
|
9
9
|
pycoze/bot/agent/assistant.py,sha256=3iLxnRvf_ia0cP-FHK5Fv4ylltlnzPq1KscRCFYqjkc,1147
|
10
|
-
pycoze/bot/agent/chat.py,sha256=
|
10
|
+
pycoze/bot/agent/chat.py,sha256=fgsQGYXGSB_TO4iKfWMr85Rx3tqW4MFawid2dgcXrE4,691
|
11
11
|
pycoze/bot/agent/agent_types/__init__.py,sha256=zmU2Kmrv5mCdfg-QlPn2H6pWxbGeq8s7YTqLhpzJC6k,179
|
12
12
|
pycoze/bot/agent/agent_types/const.py,sha256=BfUKPrhAHREoMLHuFNG2bCIEkC1-f7K0LEqNg4RwiRE,70
|
13
13
|
pycoze/bot/agent/agent_types/openai_func_call_agent.py,sha256=SnEm5MODHn2uMsaMNqgzULM_91vqLHC0TU6ovwCOqLU,6675
|
@@ -23,8 +23,8 @@ pycoze/ui/ui_def.py,sha256=UhhU_yB3GV9ISbvTWT48hsHPHI250BhMILh6bu5Uioo,4206
|
|
23
23
|
pycoze/utils/__init__.py,sha256=ET0W5wzq4zlY3dr1wHVbbeRKlKdC_zqHt9b0jZyHohw,94
|
24
24
|
pycoze/utils/arg.py,sha256=orLVEGw3x2f3l7bZDbBPkkdDPSdqXo-_Rs-4ZhzmrEw,984
|
25
25
|
pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
|
26
|
-
pycoze-0.1.
|
27
|
-
pycoze-0.1.
|
28
|
-
pycoze-0.1.
|
29
|
-
pycoze-0.1.
|
30
|
-
pycoze-0.1.
|
26
|
+
pycoze-0.1.166.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
|
27
|
+
pycoze-0.1.166.dist-info/METADATA,sha256=pqI5PMQcszY2gNYPuegTMyl-HMVG6UDmHP-uLYZGmEg,726
|
28
|
+
pycoze-0.1.166.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
|
29
|
+
pycoze-0.1.166.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
|
30
|
+
pycoze-0.1.166.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|