Skip to content

Commit 030b6cf

Browse files
authored
Merge pull request #74 from Serverless-Devs/implement-new-tools
feat(tool): 添加工具相关的新模块和API接口
2 parents 2f71b02 + 525172c commit 030b6cf

36 files changed

+9525
-9
lines changed

agentrun/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@
109109
SandboxClient,
110110
Template,
111111
)
112+
# Tool
113+
from agentrun.tool import Tool as ToolResource
114+
from agentrun.tool import ToolClient as ToolResourceClient
115+
from agentrun.tool import ToolControlAPI as ToolResourceControlAPI
112116
# ToolSet
113117
from agentrun.toolset import ToolSet, ToolSetClient
114118
from agentrun.utils.config import Config
@@ -247,6 +251,10 @@
247251
"AioSandbox",
248252
"CustomSandbox",
249253
"Template",
254+
######## Tool ########
255+
"ToolResource",
256+
"ToolResourceClient",
257+
"ToolResourceControlAPI",
250258
######## ToolSet ########
251259
"ToolSetClient",
252260
"ToolSet",

agentrun/integration/agentscope/__init__.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@
33
提供 AgentRun 模型与沙箱工具的 AgentScope 适配入口。 / 提供 AgentRun 模型with沙箱工具的 AgentScope 适配入口。
44
"""
55

6-
from .builtin import knowledgebase_toolset, model, sandbox_toolset, toolset
6+
from .builtin import (
7+
knowledgebase_toolset,
8+
model,
9+
sandbox_toolset,
10+
skill_tools,
11+
tool_resource,
12+
toolset,
13+
)
714

815
__all__ = [
916
"model",
1017
"toolset",
1118
"sandbox_toolset",
1219
"knowledgebase_toolset",
20+
"tool_resource",
21+
"skill_tools",
1322
]

agentrun/integration/agentscope/builtin.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
from agentrun.integration.builtin import model as _model
1515
from agentrun.integration.builtin import ModelArgs
1616
from agentrun.integration.builtin import sandbox_toolset as _sandbox_toolset
17+
from agentrun.integration.builtin import skill_tools as _skill_tools
18+
from agentrun.integration.builtin import tool_resource as _tool_resource
1719
from agentrun.integration.builtin import toolset as _toolset
1820
from agentrun.integration.utils.tool import Tool
1921
from agentrun.model import ModelProxy, ModelService
2022
from agentrun.sandbox import TemplateType
23+
from agentrun.tool.tool import Tool as ToolResourceType
2124
from agentrun.toolset import ToolSet
2225
from agentrun.utils.config import Config
2326

@@ -50,6 +53,24 @@ def toolset(
5053
)
5154

5255

56+
def tool_resource(
57+
name: Union[str, ToolResourceType],
58+
*,
59+
prefix: Optional[str] = None,
60+
modify_tool_name: Optional[Callable[[Tool], Tool]] = None,
61+
filter_tools_by_name: Optional[Callable[[str], bool]] = None,
62+
config: Optional[Config] = None,
63+
) -> List[Any]:
64+
"""将 ToolResource 封装为 AgentScope 工具列表。 / AgentScope Built-in ToolResource Integration"""
65+
66+
ts = _tool_resource(input=name, config=config)
67+
return ts.to_agentscope(
68+
prefix=prefix,
69+
modify_tool_name=modify_tool_name,
70+
filter_tools_by_name=filter_tools_by_name,
71+
)
72+
73+
5374
def sandbox_toolset(
5475
template_name: str,
5576
*,
@@ -86,3 +107,18 @@ def knowledgebase_toolset(
86107
modify_tool_name=modify_tool_name,
87108
filter_tools_by_name=filter_tools_by_name,
88109
)
110+
111+
112+
def skill_tools(
113+
name: Optional[Union[str, List[str]]] = None,
114+
*,
115+
skills_dir: str = ".skills",
116+
prefix: Optional[str] = None,
117+
config: Optional[Config] = None,
118+
) -> List[Any]:
119+
"""将 Skill 封装为 AgentScope 工具列表。 / AgentScope Built-in Skill Integration"""
120+
121+
ts = _skill_tools(name=name, skills_dir=skills_dir, config=config)
122+
return ts.to_agentscope(
123+
prefix=prefix,
124+
)

agentrun/integration/builtin/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@
77
from .knowledgebase import knowledgebase_toolset
88
from .model import model, ModelArgs
99
from .sandbox import sandbox_toolset
10+
from .skill import skill_tools
11+
from .tool_resource import tool_resource
1012
from .toolset import toolset
1113

1214
__all__ = [
1315
"model",
1416
"ModelArgs",
1517
"toolset",
18+
"tool_resource",
1619
"sandbox_toolset",
1720
"knowledgebase_toolset",
21+
"skill_tools",
1822
]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""内置 Skill 集成函数 / Built-in Skill Integration Functions
2+
3+
提供快速创建 Skill 工具集对象的便捷函数。
4+
Provides convenient functions for quickly creating Skill toolset objects.
5+
"""
6+
7+
from typing import List, Optional, Union
8+
9+
from agentrun.integration.utils.skill_loader import skill_tools as _skill_tools
10+
from agentrun.integration.utils.tool import CommonToolSet
11+
from agentrun.utils.config import Config
12+
13+
# Re-export for convenience
14+
skill_tools = _skill_tools
15+
16+
__all__ = ["skill_tools"]
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"""内置 ToolResource 集成函数 / Built-in ToolResource Integration Functions
2+
3+
提供快速创建通用工具集对象的便捷函数(基于新版 Tool 模块)。
4+
Provides convenient functions for quickly creating common toolset objects (based on new Tool module).
5+
"""
6+
7+
from typing import Optional, Union
8+
9+
from agentrun.integration.utils.tool import CommonToolSet
10+
from agentrun.tool.client import ToolClient
11+
from agentrun.tool.tool import Tool as ToolResourceType
12+
from agentrun.utils.config import Config
13+
14+
15+
def tool_resource(
16+
input: Union[str, ToolResourceType], config: Optional[Config] = None
17+
) -> CommonToolSet:
18+
"""将 ToolResource 封装为通用工具集 / Wrap ToolResource as CommonToolSet
19+
20+
支持从工具名称或 ToolResource 实例创建通用工具集。
21+
Supports creating CommonToolSet from tool name or ToolResource instance.
22+
23+
Args:
24+
input: 工具名称或 ToolResource 实例 / Tool name or ToolResource instance
25+
config: 配置对象 / Configuration object
26+
27+
Returns:
28+
CommonToolSet: 通用工具集实例 / CommonToolSet instance
29+
30+
Examples:
31+
>>> # 从工具名称创建 / Create from tool name
32+
>>> ts = tool_resource("my-tool")
33+
>>>
34+
>>> # 从 ToolResource 实例创建 / Create from ToolResource instance
35+
>>> tool = ToolClient().get(name="my-tool")
36+
>>> ts = tool_resource(tool)
37+
>>>
38+
>>> # 转换为 LangChain 工具 / Convert to LangChain tools
39+
>>> lc_tools = ts.to_langchain()
40+
"""
41+
42+
resource = (
43+
input
44+
if isinstance(input, ToolResourceType)
45+
else ToolClient().get(name=input, config=config)
46+
)
47+
48+
return CommonToolSet.from_agentrun_tool(resource, config=config)

agentrun/integration/crewai/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@
44
CrewAI 与 LangChain 兼容,因此直接复用 LangChain 的转换逻辑。 / CrewAI with LangChain 兼容,因此直接复用 LangChain 的转换逻辑。
55
"""
66

7-
from .builtin import knowledgebase_toolset, model, sandbox_toolset
7+
from .builtin import (
8+
knowledgebase_toolset,
9+
model,
10+
sandbox_toolset,
11+
skill_tools,
12+
tool_resource,
13+
)
814

915
__all__ = [
1016
"model",
1117
"sandbox_toolset",
1218
"knowledgebase_toolset",
19+
"tool_resource",
20+
"skill_tools",
1321
]

agentrun/integration/crewai/builtin.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
from agentrun.integration.builtin import model as _model
1515
from agentrun.integration.builtin import ModelArgs
1616
from agentrun.integration.builtin import sandbox_toolset as _sandbox_toolset
17+
from agentrun.integration.builtin import skill_tools as _skill_tools
18+
from agentrun.integration.builtin import tool_resource as _tool_resource
1719
from agentrun.integration.builtin import toolset as _toolset
1820
from agentrun.integration.utils.tool import Tool
1921
from agentrun.model import ModelProxy, ModelService
2022
from agentrun.sandbox import TemplateType
23+
from agentrun.tool.tool import Tool as ToolResourceType
2124
from agentrun.toolset import ToolSet
2225
from agentrun.utils.config import Config
2326

@@ -50,6 +53,24 @@ def toolset(
5053
)
5154

5255

56+
def tool_resource(
57+
name: Union[str, ToolResourceType],
58+
*,
59+
prefix: Optional[str] = None,
60+
modify_tool_name: Optional[Callable[[Tool], Tool]] = None,
61+
filter_tools_by_name: Optional[Callable[[str], bool]] = None,
62+
config: Optional[Config] = None,
63+
) -> List[Any]:
64+
"""将 ToolResource 封装为 CrewAI 工具列表。 / CrewAI Built-in ToolResource Integration"""
65+
66+
ts = _tool_resource(input=name, config=config)
67+
return ts.to_crewai(
68+
prefix=prefix,
69+
modify_tool_name=modify_tool_name,
70+
filter_tools_by_name=filter_tools_by_name,
71+
)
72+
73+
5374
def sandbox_toolset(
5475
template_name: str,
5576
*,
@@ -86,3 +107,18 @@ def knowledgebase_toolset(
86107
modify_tool_name=modify_tool_name,
87108
filter_tools_by_name=filter_tools_by_name,
88109
)
110+
111+
112+
def skill_tools(
113+
name: Optional[Union[str, List[str]]] = None,
114+
*,
115+
skills_dir: str = ".skills",
116+
prefix: Optional[str] = None,
117+
config: Optional[Config] = None,
118+
) -> List[Any]:
119+
"""将 Skill 封装为 CrewAI 工具列表。 / CrewAI Built-in Skill Integration"""
120+
121+
ts = _skill_tools(name=name, skills_dir=skills_dir, config=config)
122+
return ts.to_crewai(
123+
prefix=prefix,
124+
)

agentrun/integration/google_adk/__init__.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@
33
提供与 Google Agent Development Kit 的模型与沙箱工具集成。 / 提供with Google Agent Development Kit 的模型with沙箱工具集成。
44
"""
55

6-
from .builtin import knowledgebase_toolset, model, sandbox_toolset, toolset
6+
from .builtin import (
7+
knowledgebase_toolset,
8+
model,
9+
sandbox_toolset,
10+
skill_tools,
11+
tool_resource,
12+
toolset,
13+
)
714

815
__all__ = [
916
"model",
1017
"toolset",
1118
"sandbox_toolset",
1219
"knowledgebase_toolset",
20+
"tool_resource",
21+
"skill_tools",
1322
]

agentrun/integration/google_adk/builtin.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
from agentrun.integration.builtin import model as _model
1515
from agentrun.integration.builtin import ModelArgs
1616
from agentrun.integration.builtin import sandbox_toolset as _sandbox_toolset
17+
from agentrun.integration.builtin import skill_tools as _skill_tools
18+
from agentrun.integration.builtin import tool_resource as _tool_resource
1719
from agentrun.integration.builtin import toolset as _toolset
1820
from agentrun.integration.utils.tool import Tool
1921
from agentrun.model import ModelProxy, ModelService
2022
from agentrun.sandbox import TemplateType
23+
from agentrun.tool.tool import Tool as ToolResourceType
2124
from agentrun.toolset import ToolSet
2225
from agentrun.utils.config import Config
2326

@@ -50,6 +53,24 @@ def toolset(
5053
)
5154

5255

56+
def tool_resource(
57+
name: Union[str, ToolResourceType],
58+
*,
59+
prefix: Optional[str] = None,
60+
modify_tool_name: Optional[Callable[[Tool], Tool]] = None,
61+
filter_tools_by_name: Optional[Callable[[str], bool]] = None,
62+
config: Optional[Config] = None,
63+
) -> List[Any]:
64+
"""将 ToolResource 封装为 Google ADK 工具列表。 / Google ADK Built-in ToolResource Integration"""
65+
66+
ts = _tool_resource(input=name, config=config)
67+
return ts.to_google_adk(
68+
prefix=prefix,
69+
modify_tool_name=modify_tool_name,
70+
filter_tools_by_name=filter_tools_by_name,
71+
)
72+
73+
5374
def sandbox_toolset(
5475
template_name: str,
5576
*,
@@ -86,3 +107,18 @@ def knowledgebase_toolset(
86107
modify_tool_name=modify_tool_name,
87108
filter_tools_by_name=filter_tools_by_name,
88109
)
110+
111+
112+
def skill_tools(
113+
name: Optional[Union[str, List[str]]] = None,
114+
*,
115+
skills_dir: str = ".skills",
116+
prefix: Optional[str] = None,
117+
config: Optional[Config] = None,
118+
) -> List[Any]:
119+
"""将 Skill 封装为 Google ADK 工具列表。 / Google ADK Built-in Skill Integration"""
120+
121+
ts = _skill_tools(name=name, skills_dir=skills_dir, config=config)
122+
return ts.to_google_adk(
123+
prefix=prefix,
124+
)

0 commit comments

Comments
 (0)