@@ -66,6 +66,42 @@ class BilibiliTool(FunctionTool[AstrAgentContext]):
6666 return " 1. 视频标题:如何使用AstrBot\n 视频链接:xxxxxx"
6767```
6868
69+ ## 注册 Tool 到 AstrBot
70+
71+ 在上面定义好 Tool 之后,如果你需要实现的功能是让用户在使用 AstrBot 进行对话时自动调用该 Tool,那么你需要在插件的 __ init__ 方法中将 Tool 注册到 AstrBot 中:
72+
73+ ``` py
74+ class MyPlugin (Star ):
75+ def __init__ (self , context : Context):
76+ super ().__init__ (context)
77+ # >= v4.5.1 使用:
78+ self .context.add_llm_tools(BilibiliTool(), SecondTool(), ... )
79+
80+ # < v4.5.1 之前使用:
81+ tool_mgr = self .context.provider_manager.llm_tools
82+ tool_mgr.func_list.append(BilibiliTool())
83+ ```
84+
85+ ### 通过装饰器定义 Tool 和注册 Tool
86+
87+ 除了上述的通过 ` @dataclass ` 定义 Tool 的方式之外,你也可以使用装饰器的方式注册 tool 到 AstrBot。如果请务必按照以下格式编写一个工具(包括函数注释,AstrBot 会解析该函数注释,请务必将注释格式写对)
88+
89+ ``` py{3,4,5,6,7}
90+ @filter.llm_tool(name="get_weather") # 如果 name 不填,将使用函数名
91+ async def get_weather(self, event: AstrMessageEvent, location: str) -> MessageEventResult:
92+ '''获取天气信息。
93+
94+ Args:
95+ location(string): 地点
96+ '''
97+ resp = self.get_weather_from_api(location)
98+ yield event.plain_result("天气信息: " + resp)
99+ ```
100+
101+ 在 ` location(string): 地点 ` 中,` location ` 是参数名,` string ` 是参数类型,` 地点 ` 是参数描述。
102+
103+ 支持的参数类型有 ` string ` , ` number ` , ` object ` , ` boolean ` , ` array ` 。在 v4.5.7 之后,支持对 ` array ` 类型参数指定子类型,例如 ` array[string] ` 。
104+
69105## 调用 Agent
70106
71107> [ !TIP]
@@ -316,78 +352,78 @@ await conv_mgr.add_message_pair(
316352
317353#### ` new_conversation `
318354
319- - ** Usage **
355+ - __ Usage __
320356 在当前会话中新建一条对话,并自动切换为该对话。
321- - ** Arguments **
357+ - __ Arguments __
322358 - ` unified_msg_origin: str ` – 形如 ` platform_name:message_type:session_id `
323359 - ` platform_id: str | None ` – 平台标识,默认从 ` unified_msg_origin ` 解析
324360 - ` content: list[dict] | None ` – 初始历史消息
325361 - ` title: str | None ` – 对话标题
326362 - ` persona_id: str | None ` – 绑定的 persona ID
327- - ** Returns **
363+ - __ Returns __
328364 ` str ` – 新生成的 UUID 对话 ID
329365
330366#### ` switch_conversation `
331367
332- - ** Usage **
368+ - __ Usage __
333369 将会话切换到指定的对话。
334- - ** Arguments **
370+ - __ Arguments __
335371 - ` unified_msg_origin: str `
336372 - ` conversation_id: str `
337- - ** Returns **
373+ - __ Returns __
338374 ` None `
339375
340376#### ` delete_conversation `
341377
342- - ** Usage **
378+ - __ Usage __
343379 删除会话中的某条对话;若 ` conversation_id ` 为 ` None ` ,则删除当前对话。
344- - ** Arguments **
380+ - __ Arguments __
345381 - ` unified_msg_origin: str `
346382 - ` conversation_id: str | None `
347- - ** Returns **
383+ - __ Returns __
348384 ` None `
349385
350386#### ` get_curr_conversation_id `
351387
352- - ** Usage **
388+ - __ Usage __
353389 获取当前会话正在使用的对话 ID。
354- - ** Arguments **
390+ - __ Arguments __
355391 - ` unified_msg_origin: str `
356- - ** Returns **
392+ - __ Returns __
357393 ` str | None ` – 当前对话 ID,不存在时返回 ` None `
358394
359395#### ` get_conversation `
360396
361- - ** Usage **
397+ - __ Usage __
362398 获取指定对话的完整对象;若不存在且 ` create_if_not_exists=True ` 则自动创建。
363- - ** Arguments **
399+ - __ Arguments __
364400 - ` unified_msg_origin: str `
365401 - ` conversation_id: str `
366402 - ` create_if_not_exists: bool = False `
367- - ** Returns **
403+ - __ Returns __
368404 ` Conversation | None `
369405
370406#### ` get_conversations `
371407
372- - ** Usage **
408+ - __ Usage __
373409 拉取用户或平台下的全部对话列表。
374- - ** Arguments **
410+ - __ Arguments __
375411 - ` unified_msg_origin: str | None ` – 为 ` None ` 时不过滤用户
376412 - ` platform_id: str | None `
377- - ** Returns **
413+ - __ Returns __
378414 ` List[Conversation] `
379415
380416#### ` update_conversation `
381417
382- - ** Usage **
418+ - __ Usage __
383419 更新对话的标题、历史记录或 persona_id。
384- - ** Arguments **
420+ - __ Arguments __
385421 - ` unified_msg_origin: str `
386422 - ` conversation_id: str | None ` – 为 ` None ` 时使用当前对话
387423 - ` history: list[dict] | None `
388424 - ` title: str | None `
389425 - ` persona_id: str | None `
390- - ** Returns **
426+ - __ Returns __
391427 ` None `
392428
393429## 人格设定管理器
@@ -403,67 +439,67 @@ persona_mgr = self.context.persona_manager
403439
404440#### ` get_persona `
405441
406- - ** Usage **
442+ - __ Usage __
407443 获取根据人格 ID 获取人格数据。
408- - ** Arguments **
444+ - __ Arguments __
409445 - ` persona_id: str ` – 人格 ID
410- - ** Returns **
446+ - __ Returns __
411447 ` Persona ` – 人格数据,若不存在则返回 None
412- - ** Raises **
448+ - __ Raises __
413449 ` ValueError ` – 当不存在时抛出
414450
415451#### ` get_all_personas `
416452
417- - ** Usage **
453+ - __ Usage __
418454 一次性获取数据库中所有人格。
419- - ** Returns **
455+ - __ Returns __
420456 ` list[Persona] ` – 人格列表,可能为空
421457
422458#### ` create_persona `
423459
424- - ** Usage **
460+ - __ Usage __
425461 新建人格并立即写入数据库,成功后自动刷新本地缓存。
426- - ** Arguments **
462+ - __ Arguments __
427463 - ` persona_id: str ` – 新人格 ID(唯一)
428464 - ` system_prompt: str ` – 系统提示词
429465 - ` begin_dialogs: list[str] ` – 可选,开场对话(偶数条,user/assistant 交替)
430466 - ` tools: list[str] ` – 可选,允许使用的工具列表;` None ` =全部工具,` [] ` =禁用全部
431- - ** Returns **
467+ - __ Returns __
432468 ` Persona ` – 新建后的人格对象
433- - ** Raises **
469+ - __ Raises __
434470 ` ValueError ` – 若 ` persona_id ` 已存在
435471
436472#### ` update_persona `
437473
438- - ** Usage **
474+ - __ Usage __
439475 更新现有人格的任意字段,并同步到数据库与缓存。
440- - ** Arguments **
476+ - __ Arguments __
441477 - ` persona_id: str ` – 待更新的人格 ID
442478 - ` system_prompt: str ` – 可选,新的系统提示词
443479 - ` begin_dialogs: list[str] ` – 可选,新的开场对话
444480 - ` tools: list[str] ` – 可选,新的工具列表;语义同 ` create_persona `
445- - ** Returns **
481+ - __ Returns __
446482 ` Persona ` – 更新后的人格对象
447- - ** Raises **
483+ - __ Raises __
448484 ` ValueError ` – 若 ` persona_id ` 不存在
449485
450486#### ` delete_persona `
451487
452- - ** Usage **
488+ - __ Usage __
453489 删除指定人格,同时清理数据库与缓存。
454- - ** Arguments **
490+ - __ Arguments __
455491 - ` persona_id: str ` – 待删除的人格 ID
456- - ** Raises **
492+ - __ Raises __
457493 ` Valueable ` – 若 ` persona_id ` 不存在
458494
459495#### ` get_default_persona_v3 `
460496
461- - ** Usage **
497+ - __ Usage __
462498 根据当前会话配置,获取应使用的默认人格(v3 格式)。
463499 若配置未指定或指定的人格不存在,则回退到 ` DEFAULT_PERSONALITY ` 。
464- - ** Arguments **
500+ - __ Arguments __
465501 - ` umo: str | MessageSession | None ` – 会话标识,用于读取用户级配置
466- - ** Returns **
502+ - __ Returns __
467503 ` Personality ` – v3 格式的默认人格对象
468504
469505::: details Persona / Personality 类型定义
0 commit comments