mirror of
https://github.com/Zippland/Bubbles.git
synced 2026-02-03 08:27:36 +08:00
93 lines
2.9 KiB
Markdown
93 lines
2.9 KiB
Markdown
# Function Call 系统使用指南
|
||
|
||
## 概述
|
||
|
||
已成功完成从正则/路由体系到标准 Function Call 的迁移,新系统提供了更标准化、更易维护的函数调用能力。
|
||
|
||
## 系统架构
|
||
|
||
```
|
||
用户消息 -> FunctionCallRouter -> (直接命令匹配 / LLM选择函数) -> 参数验证 -> 执行Handler -> 返回结果
|
||
```
|
||
|
||
## 已迁移的功能
|
||
|
||
| 函数名 | 描述 | 作用域 | 需要@ |
|
||
|-------|------|--------|-------|
|
||
| `weather_query` | 查询城市天气预报 | both | 是 |
|
||
| `news_query` | 获取今日新闻 | both | 是 |
|
||
| `help` | 显示帮助信息 | both | 否 |
|
||
| `summary` | 总结群聊消息 | group | 是 |
|
||
| `reminder_set` | 设置提醒 | both | 是 |
|
||
| `reminder_list` | 查看提醒列表 | both | 是 |
|
||
| `reminder_delete` | 删除提醒 | both | 是 |
|
||
| `perplexity_search` | Perplexity搜索 | both | 是 |
|
||
| `clear_messages` | 清除消息历史 | group | 是 |
|
||
| `insult` | 骂人功能 | group | 是 |
|
||
|
||
## 配置说明
|
||
|
||
在 `config.yaml` 中添加了以下配置:
|
||
|
||
```yaml
|
||
function_call_router:
|
||
enable: true # 是否启用Function Call路由
|
||
debug: false # 是否启用调试日志
|
||
```
|
||
|
||
## 如何添加新功能
|
||
|
||
1. **定义参数模型** (在 `function_calls/models.py`):
|
||
```python
|
||
class MyFunctionArgs(BaseModel):
|
||
param1: str
|
||
param2: int
|
||
```
|
||
|
||
2. **实现处理器** (在 `function_calls/handlers.py`):
|
||
```python
|
||
@tool_function(
|
||
name="my_function",
|
||
description="我的功能描述",
|
||
examples=["示例1", "示例2"],
|
||
scope="both",
|
||
require_at=True
|
||
)
|
||
def handle_my_function(ctx: MessageContext, args: MyFunctionArgs) -> FunctionResult:
|
||
# 实现功能逻辑
|
||
return FunctionResult(
|
||
handled=True,
|
||
messages=["处理结果"],
|
||
at=ctx.msg.sender if ctx.is_group else ""
|
||
)
|
||
```
|
||
|
||
## 工作原理
|
||
|
||
1. **直接命令匹配**:对于明确的命令(如"help"、"新闻"),仍可直接调用对应函数。
|
||
2. **多轮函数调用**:在原生 function call 模型下,助手会循环选择函数→等待工具输出→再决定是否继续调用或生成最终答复。
|
||
3. **参数提取与验证**:每次调用前都会根据 JSON Schema 校验参数,确保类型与必填字段正确。
|
||
4. **统一回复**:最终的用户回复由模型生成,工具返回的 `FunctionResult` 只作为 LLM 的工具消息输入。
|
||
5. **无回退逻辑**:系统已移除传统正则路由与 AI 路由,所有功能均通过 Function Call 管理。
|
||
|
||
## 测试验证
|
||
|
||
系统通过了完整的集成测试:
|
||
- ✅ 函数注册表正常工作
|
||
- ✅ 直接命令匹配准确
|
||
- ✅ 参数提取正确
|
||
- ✅ 类型验证有效
|
||
|
||
## 兼容性
|
||
|
||
- 保持与现有业务逻辑完全兼容
|
||
- 精简路由体系,不再依赖旧正则路由
|
||
- 不影响现有的微信客户端交互
|
||
|
||
## 性能优势
|
||
|
||
- 减少不必要的LLM调用(直接命令匹配)
|
||
- 标准化的参数处理
|
||
- 统一的错误处理和日志记录
|
||
- 更好的代码可维护性
|