121 lines
3.0 KiB
Python
121 lines
3.0 KiB
Python
"""
|
||
Skill 数据模型
|
||
|
||
Skill 是平台的核心概念:可配置的行为指导单元
|
||
"""
|
||
from pydantic import BaseModel, Field
|
||
from typing import Optional, Dict, Any, List
|
||
from datetime import datetime
|
||
|
||
|
||
class SkillTool(BaseModel):
|
||
"""Skill 工具定义(仅内置 Skill 支持)"""
|
||
name: str
|
||
description: str
|
||
script: str # 脚本文件名
|
||
parameters: Dict[str, Dict[str, Any]] = Field(default_factory=dict)
|
||
|
||
|
||
class SkillConfig(BaseModel):
|
||
"""Skill 配置"""
|
||
# 风格预设
|
||
preset: Optional[str] = None
|
||
|
||
# 可调节参数
|
||
parameters: Dict[str, Dict[str, Any]] = Field(default_factory=dict)
|
||
|
||
# 权重配置
|
||
weights: Optional[Dict[str, float]] = None
|
||
|
||
|
||
class Skill(BaseModel):
|
||
"""Skill 模型"""
|
||
id: str
|
||
name: str
|
||
version: str = "1.0.0"
|
||
author: str = "未知"
|
||
|
||
# 类型:builtin 或 user
|
||
type: str = "user"
|
||
|
||
# 核心内容 - 行为指导
|
||
behavior_guide: str = "" # 直接影响 Agent 行为
|
||
|
||
# 配置
|
||
config: SkillConfig = Field(default_factory=SkillConfig)
|
||
|
||
# 提示词模板(可选)
|
||
template: Optional[str] = None
|
||
|
||
# 工具定义(仅内置 Skill)
|
||
tools: Optional[List[SkillTool]] = None
|
||
|
||
# 元数据
|
||
category: str = "通用"
|
||
tags: List[str] = Field(default_factory=list)
|
||
visibility: str = "private" # private 或 public
|
||
|
||
# 文件路径(用于内部追踪)
|
||
file_path: Optional[str] = None
|
||
|
||
# 时间戳
|
||
created_at: Optional[datetime] = None
|
||
updated_at: Optional[datetime] = None
|
||
|
||
|
||
class SkillCreate(BaseModel):
|
||
"""创建 Skill 请求"""
|
||
id: str
|
||
name: str
|
||
content: str # Markdown 格式的完整 Skill 内容
|
||
category: str = "通用"
|
||
tags: List[str] = Field(default_factory=list)
|
||
|
||
|
||
class SkillUpdate(BaseModel):
|
||
"""更新 Skill 请求"""
|
||
name: Optional[str] = None
|
||
content: Optional[str] = None
|
||
category: Optional[str] = None
|
||
tags: Optional[List[str]] = None
|
||
|
||
|
||
class SkillConfigUpdate(BaseModel):
|
||
"""更新 Skill 配置请求"""
|
||
preset: Optional[str] = None
|
||
parameters: Optional[Dict[str, Dict[str, Any]]] = None
|
||
weights: Optional[Dict[str, float]] = None
|
||
|
||
|
||
class SkillTestRequest(BaseModel):
|
||
"""测试 Skill 请求"""
|
||
test_input: str
|
||
context: Optional[Dict[str, Any]] = None
|
||
temperature: float = 0.7
|
||
|
||
|
||
class SkillTestResponse(BaseModel):
|
||
"""测试 Skill 响应"""
|
||
skill_id: str
|
||
skill_name: str
|
||
response: str
|
||
usage: Optional[Dict[str, int]] = None
|
||
|
||
|
||
class SkillGenerateRequest(BaseModel):
|
||
"""AI 生成 Skill 请求"""
|
||
description: str = Field(..., description="用户对想要创建的 Skill 的描述")
|
||
category: Optional[str] = None
|
||
tags: Optional[List[str]] = None
|
||
temperature: float = Field(0.7, ge=0, le=1)
|
||
|
||
|
||
class SkillGenerateResponse(BaseModel):
|
||
"""AI 生成 Skill 响应"""
|
||
suggested_id: str
|
||
suggested_name: str
|
||
skill_content: str
|
||
category: str
|
||
suggested_tags: List[str]
|
||
explanation: str # AI 对生成的 Skill 的说明
|