Files
AstrBot/dev/plugin_sample/handlers/tools/hello.py
2025-11-11 00:23:48 +08:00

32 lines
1.1 KiB
Python

from mcp.types import CallToolResult
from pydantic import Field
from pydantic.dataclasses import dataclass
from astrbot.api.v1.components.agent.tool import FunctionTool
from astrbot.api.v1.components.agent import ContextWrapper, AstrAgentContext
@dataclass
class HelloWorldTool(FunctionTool):
name: str = "hello_world" # 工具名称
description: str = "Say hello to the world." # 工具描述
parameters: dict = Field(
default_factory=lambda: {
"type": "object",
"properties": {
"greeting": {
"type": "string",
"description": "The greeting message.",
},
},
"required": ["greeting"],
}
) # 工具参数定义,见 OpenAI 官网或 https://json-schema.org/understanding-json-schema/
async def call(
self, context: ContextWrapper[AstrAgentContext], **kwargs
) -> str | CallToolResult:
# event 在 context.context.event 中可用
greeting = kwargs.get("greeting", "Hello")
return f"{greeting}, World!" # 也支持 mcp.types.CallToolResult 类型