You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
Zero Skills - AI 技能框架
zero-skills 是基于 go-zero 的 AI 技能管理框架,用于创建和管理 AI 助手的自定义技能。
官方资源
概述
zero-skills 提供了一套技能定义和执行的框架,使得可以方便地为 AI 系统添加自定义功能和业务逻辑。
核心概念
技能 (Skill)
技能是 AI 系统可以执行的一个原子性任务或功能,例如:
- 发送邮件
- 调用 API
- 数据库查询
- 文件处理
技能定义
type Skill struct {
Name string // 技能名称
Description string // 技能描述
Parameters map[string]interface{} // 参数定义
Handler HandlerFunc // 处理函数
}
type HandlerFunc func(ctx context.Context, args map[string]interface{}) (interface{}, error)
使用示例
定义技能
package skills
import (
"context"
"fmt"
)
var SendEmailSkill = &Skill{
Name: "send_email",
Description: "Send an email to a recipient",
Parameters: map[string]interface{}{
"to": map[string]string{"type": "string", "description": "Recipient email"},
"subject": map[string]string{"type": "string", "description": "Email subject"},
"body": map[string]string{"type": "string", "description": "Email body"},
},
Handler: func(ctx context.Context, args map[string]interface{}) (interface{}, error) {
to := args["to"].(string)
subject := args["subject"].(string)
body := args["body"].(string)
// 发送邮件逻辑
fmt.Printf("Sending email to %s: %s\n", to, subject)
return map[string]interface{}{
"success": true,
"message": "Email sent successfully",
}, nil
},
}
注册技能
package main
import (
"github.com/yourapp/skills"
)
func main() {
// 初始化技能管理器
skillManager := skills.NewManager()
// 注册技能
skillManager.Register(skills.SendEmailSkill)
skillManager.Register(skills.QueryDatabaseSkill)
// 启动服务
// ...
}
技能配置
skills:
enabled: true
base_path: "./skills"
skills:
- name: "send_email"
enabled: true
config:
smtp_host: "smtp.example.com"
smtp_port: 587
- name: "query_database"
enabled: true
config:
connection_string: "user:pass@localhost:3306/db"
中间件支持
// 添加日志中间件
skillManager.Use(middleware.Logger())
// 添加认证中间件
skillManager.Use(middleware.Auth())
// 添加限流中间件
skillManager.Use(middleware.RateLimit(100))