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

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))