pycoze 0.1.98__py3-none-any.whl → 0.1.99__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- pycoze/access/bot_for_bot.py +40 -0
- pycoze/access/lib.py +14 -1
- pycoze/access/tool_for_bot.py +2 -18
- {pycoze-0.1.98.dist-info → pycoze-0.1.99.dist-info}/METADATA +1 -1
- {pycoze-0.1.98.dist-info → pycoze-0.1.99.dist-info}/RECORD +8 -7
- {pycoze-0.1.98.dist-info → pycoze-0.1.99.dist-info}/LICENSE +0 -0
- {pycoze-0.1.98.dist-info → pycoze-0.1.99.dist-info}/WHEEL +0 -0
- {pycoze-0.1.98.dist-info → pycoze-0.1.99.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
import sys
|
2
|
+
import os
|
3
|
+
import importlib
|
4
|
+
from langchain.agents import tool as to_agent_tool
|
5
|
+
import types
|
6
|
+
import langchain_core
|
7
|
+
from .lib import ChangeDirectoryAndPath, ModuleManager, wrapped_fun
|
8
|
+
|
9
|
+
|
10
|
+
def import_tools(tool_id):
|
11
|
+
tool_base_path = "../../tool"
|
12
|
+
module_path = os.path.join(tool_base_path, tool_id)
|
13
|
+
module_path = os.path.normpath(os.path.abspath(module_path))
|
14
|
+
|
15
|
+
if not os.path.exists(module_path):
|
16
|
+
print(f"Tool {tool_id} not found")
|
17
|
+
return []
|
18
|
+
|
19
|
+
try:
|
20
|
+
with ModuleManager(module_path) as manager:
|
21
|
+
module = importlib.import_module("tool")
|
22
|
+
export_tools = getattr(module, "export_tools")
|
23
|
+
valid_tools = []
|
24
|
+
for tool in export_tools:
|
25
|
+
assert isinstance(tool, langchain_core.tools.StructuredTool) or isinstance(
|
26
|
+
tool, types.FunctionType
|
27
|
+
), f"Tool is not a StructuredTool or function: {tool}"
|
28
|
+
if not isinstance(tool, langchain_core.tools.StructuredTool):
|
29
|
+
tool = to_agent_tool(tool)
|
30
|
+
valid_tools.append(tool)
|
31
|
+
export_tools = valid_tools
|
32
|
+
|
33
|
+
except Exception as e:
|
34
|
+
print(f"Error loading tool {tool_id}: {e}")
|
35
|
+
return []
|
36
|
+
|
37
|
+
for tool in export_tools:
|
38
|
+
tool.func = wrapped_fun(tool, module_path)
|
39
|
+
|
40
|
+
return export_tools
|
pycoze/access/lib.py
CHANGED
@@ -44,4 +44,17 @@ class ModuleManager:
|
|
44
44
|
importlib.invalidate_caches()
|
45
45
|
for key in list(sys.modules.keys()):
|
46
46
|
if key not in self.original_modules:
|
47
|
-
del sys.modules[key]
|
47
|
+
del sys.modules[key]
|
48
|
+
|
49
|
+
|
50
|
+
def wrapped_fun(item, module_path):
|
51
|
+
original_tool_function = item.func
|
52
|
+
|
53
|
+
def _wrapped(*args, **kwargs):
|
54
|
+
print(f"调用了 {item.name}")
|
55
|
+
with ChangeDirectoryAndPath(module_path):
|
56
|
+
result = original_tool_function(*args, **kwargs)
|
57
|
+
print(f"{item.name} 调用完毕,结果为:", result)
|
58
|
+
return result
|
59
|
+
|
60
|
+
return _wrapped
|
pycoze/access/tool_for_bot.py
CHANGED
@@ -4,26 +4,10 @@ import importlib
|
|
4
4
|
from langchain.agents import tool as to_agent_tool
|
5
5
|
import types
|
6
6
|
import langchain_core
|
7
|
-
from .lib import ChangeDirectoryAndPath, ModuleManager
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def wrapped_tool(tool, module_path):
|
12
|
-
"""Wrap the tool function to include additional logging and path management."""
|
13
|
-
original_tool_function = tool.func
|
14
|
-
|
15
|
-
def _wrapped_tool(*args, **kwargs):
|
16
|
-
print(f"调用了{tool.name}")
|
17
|
-
with ChangeDirectoryAndPath(module_path):
|
18
|
-
result = original_tool_function(*args, **kwargs)
|
19
|
-
print(f"{tool.name}调用完毕,结果为:", result)
|
20
|
-
return result
|
21
|
-
|
22
|
-
return _wrapped_tool
|
7
|
+
from .lib import ChangeDirectoryAndPath, ModuleManager, wrapped_fun
|
23
8
|
|
24
9
|
|
25
10
|
def import_tools(tool_id):
|
26
|
-
"""Import tools from a specified tool_id."""
|
27
11
|
tool_base_path = "../../tool"
|
28
12
|
module_path = os.path.join(tool_base_path, tool_id)
|
29
13
|
module_path = os.path.normpath(os.path.abspath(module_path))
|
@@ -51,6 +35,6 @@ def import_tools(tool_id):
|
|
51
35
|
return []
|
52
36
|
|
53
37
|
for tool in export_tools:
|
54
|
-
tool.func =
|
38
|
+
tool.func = wrapped_fun(tool, module_path)
|
55
39
|
|
56
40
|
return export_tools
|
@@ -1,8 +1,9 @@
|
|
1
1
|
pycoze/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
pycoze/module.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
pycoze/access/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
pycoze/access/
|
5
|
-
pycoze/access/
|
4
|
+
pycoze/access/bot_for_bot.py,sha256=p7BvQk_y4Hh8L9Et39EUnURpy4enRUvsMlBLNfYFb8o,1377
|
5
|
+
pycoze/access/lib.py,sha256=RTQvEee1kfdbap-tzrcQbh-mZg_Y5ydmak7RRB7EkJ8,1912
|
6
|
+
pycoze/access/tool_for_bot.py,sha256=F1QrGpGbJ3ucsRYWiJw-My4XiE8QuVb8oj7p9ZMmZXE,1337
|
6
7
|
pycoze/ai/__init__.py,sha256=odM2lgYSnApxw4AzLV_5AyaxL5_MLfydOSB1VmLGFyA,75
|
7
8
|
pycoze/ai/vram_reserve.py,sha256=QbqaA8qv87cnEpOVDMygi0BNMxuhLYwj1UKfR_D5BD4,4340
|
8
9
|
pycoze/bot/__init__.py,sha256=6HHMxDQVOyZM9dtSjQm9tjGnhj4h7CixD0JOvEwTi48,41
|
@@ -21,8 +22,8 @@ pycoze/ui/ui_def.py,sha256=UhhU_yB3GV9ISbvTWT48hsHPHI250BhMILh6bu5Uioo,4206
|
|
21
22
|
pycoze/utils/__init__.py,sha256=TNJhFfY7JYdLlzuP9GvgxfNXUtbgH_NUUJSqHXCxJn4,78
|
22
23
|
pycoze/utils/arg.py,sha256=kA3KBQzXc2WlH5XbF8kfikfpqljiKaW7oY_GE4Qyffc,753
|
23
24
|
pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
|
24
|
-
pycoze-0.1.
|
25
|
-
pycoze-0.1.
|
26
|
-
pycoze-0.1.
|
27
|
-
pycoze-0.1.
|
28
|
-
pycoze-0.1.
|
25
|
+
pycoze-0.1.99.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
|
26
|
+
pycoze-0.1.99.dist-info/METADATA,sha256=3HaGjTXmeXlkFAK-1coDK6dpZreMIBRXpQlvPyhOW3U,725
|
27
|
+
pycoze-0.1.99.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
28
|
+
pycoze-0.1.99.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
|
29
|
+
pycoze-0.1.99.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|