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.
5.1 KiB
5.1 KiB
AI Prompt System 版本管理功能实现
变更日期:2026-02-04
变更类型:功能增强
影响范围:AI Prompt System 服务
符合规范:jointo-tech-stack v1.0
变更概述
实现 AI Prompt System 服务的版本管理功能,包括创建新版本和获取版本历史。
变更详情
1. Service 层新增方法
文件:server/app/services/ai_prompt_system_service.py
1.1 create_version() 方法
async def create_version(
self,
base_prompt_id: UUID,
new_version: str,
prompt_content: Optional[str] = None,
skills_data: Optional[Dict[str, Any]] = None,
description: Optional[str] = None
) -> Dict[str, Any]:
"""基于现有提示词创建新版本"""
功能:
- 基于现有提示词创建新版本
- 支持继承或覆盖提示词内容
- 支持继承或覆盖 skills 配置
- 新版本默认不是默认提示词
- 自动生成描述(如未提供)
验证:
- 检查基础提示词是否存在
- 检查新版本号是否已存在
- 验证 skills_data 格式(如果提供)
1.2 get_versions() 方法
async def get_versions(
self,
name: str
) -> List[Dict[str, Any]]:
"""获取提示词的所有版本"""
功能:
- 根据提示词名称获取所有版本
- 按创建时间倒序排列
- 返回格式化的列表项
2. API 层新增接口
文件:server/app/api/v1/ai_prompts.py
2.1 创建新版本接口
POST /api/v1/admin/ai-prompts/{prompt_id}/versions
权限:系统管理员
请求体:
{
"new_version": "1.1.0",
"prompt_content": "新版本内容(可选)",
"skills_data": {"skills": []}, // 可选
"description": "版本说明(可选)"
}
响应:
{
"success": true,
"code": 200,
"message": "Success",
"data": {
"prompt_id": "019d...",
"name": "剧本提示词",
"version": "1.1.0",
"prompt_content": "新版本内容",
...
}
}
2.2 获取版本历史接口
GET /api/v1/admin/ai-prompts/versions?name=剧本提示词
权限:系统管理员
查询参数:
name:提示词名称(必需)
响应:
{
"success": true,
"code": 200,
"message": "Success",
"data": [
{
"prompt_id": "019d...",
"name": "剧本提示词",
"version": "1.2.0",
"is_active": true,
"is_default": true,
"created_at": "2026-02-04T10:00:00Z"
},
{
"prompt_id": "019d...",
"name": "剧本提示词",
"version": "1.1.0",
"is_active": true,
"is_default": false,
"created_at": "2026-02-03T10:00:00Z"
}
]
}
使用示例
1. 创建新版本
# 基于现有提示词创建新版本
service = AIPromptSystemService(db)
new_version = await service.create_version(
base_prompt_id=base_prompt_id,
new_version="1.1.0",
prompt_content="优化后的提示词内容",
description="版本 1.1.0:优化了角色识别逻辑"
)
2. 获取版本历史
# 获取提示词的所有版本
versions = await service.get_versions("剧本解析提示词")
for version in versions:
print(f"版本 {version['version']}: {version['description']}")
3. API 调用示例
# 创建新版本
curl -X POST "http://localhost:6170/api/v1/admin/ai-prompts/{prompt_id}/versions" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"new_version": "1.1.0",
"prompt_content": "优化后的内容",
"description": "版本 1.1.0 更新"
}'
# 获取版本历史
curl -X GET "http://localhost:6170/api/v1/admin/ai-prompts/versions?name=剧本提示词" \
-H "Authorization: Bearer {token}"
技术规范合规性
✅ 符合 jointo-tech-stack 规范
- ✅ 异步操作(async/await)
- ✅ %-formatting 日志格式
- ✅ exc_info=True 错误日志
- ✅ 完整的类型注解
- ✅ 完整的异常处理
- ✅ 事务管理(commit/rollback)
- ✅ 统一响应格式
- ✅ UUID v7 主键生成
- ✅ TIMESTAMPTZ 时间戳
测试覆盖
Service 层测试
- ✅ 创建新版本成功
- ✅ 基础提示词不存在
- ✅ 创建重复版本失败
- ✅ 继承内容和配置
- ✅ 获取版本历史成功
- ✅ 获取空版本历史
API 层测试
- ✅ 创建新版本成功
- ✅ 创建重复版本失败
- ✅ 获取版本历史成功
- ✅ 未认证访问失败
影响范围
新增功能
- ✅ Service:
create_version()方法 - ✅ Service:
get_versions()方法 - ✅ API:
POST /admin/ai-prompts/{prompt_id}/versions - ✅ API:
GET /admin/ai-prompts/versions
无破坏性变更
- 现有 API 接口保持不变
- 现有数据库结构无需修改
- 向后兼容
后续优化建议
-
版本对比功能
- 实现版本内容对比
- 显示版本差异
-
版本回滚
- 支持回滚到指定版本
- 自动创建回滚版本
-
版本标签
- 支持为版本添加标签(如 stable、beta)
- 支持按标签查询版本
变更日期:2026-02-04
变更类型:功能增强
符合规范:jointo-tech-stack v1.0