首页 教程 常见问题

Agent SDK 插件

为 Agent SDK 代理开发和集成插件——扩展能力的方式。

插件与工具的区别

特性工具插件
复杂度单个函数多个工具 + 状态
生命周期会话内可独立运行
分发代码中定义独立包
隔离性同一进程可独立进程

创建插件

class DatabasePlugin:
    """数据库操作插件。"""

    def __init__(self, connection_string):
        self.connection_string = connection_string

    def get_tools(self):
        """返回插件提供的工具列表。"""
        return [
            {
                "name": "query_database",
                "description": "执行 SQL 查询",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "sql": {"type": "string", "description": "SQL 语句"},
                        "params": {"type": "array", "description": "查询参数"}
                    },
                    "required": ["sql"]
                }
            }
        ]

    def execute(self, name, **kwargs):
        """执行工具调用。"""
        if name == "query_database":
            return self._execute_sql(kwargs["sql"], kwargs.get("params", []))
        raise ValueError(f"未知工具: {name}")

    def _execute_sql(self, sql, params):
        # 实现数据库查询
        return "查询结果"

加载插件

plugins = [
    DatabasePlugin("postgresql://localhost/mydb"),
    EmailPlugin("smtp.example.com"),
]

# 收集所有工具
all_tools = []
for plugin in plugins:
    all_tools.extend(plugin.get_tools())

def execute_tool(name, **kwargs):
    for plugin in plugins:
        try:
            return plugin.execute(name, **kwargs)
        except ValueError:
            continue
    return "未知工具"

下一步