Files
DP/Server/app/api/v1/ai_tools.py

240 lines
8.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
AI 工具定义
将 PS 操作注册为 function calling 的 tool schema
前端收到 tool_calls 后执行 JSX把结果回传
"""
# ==================== 工具 SchemaOpenAI function calling 格式)====================
PS_TOOLS = [
{
"type": "function",
"function": {
"name": "get_document_info",
"description": "获取当前 Photoshop 文档信息(名称、尺寸、分辨率)",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "get_layer_structure",
"description": "获取当前文档的图层结构树(所有顶层组和子图层)",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "create_layer",
"description": "在 Photoshop 中创建新图层",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "新图层的名称"
}
},
"required": ["name"]
}
}
},
{
"type": "function",
"function": {
"name": "rename_layer",
"description": "重命名当前选中的图层",
"parameters": {
"type": "object",
"properties": {
"new_name": {
"type": "string",
"description": "新名称"
}
},
"required": ["new_name"]
}
}
},
{
"type": "function",
"function": {
"name": "delete_layer",
"description": "删除当前选中的图层",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "duplicate_layer",
"description": "复制当前选中的图层",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "align_layers",
"description": "对齐当前选中的图层",
"parameters": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["left", "right", "centerH", "top", "bottom", "centerV"],
"description": "对齐方式left=左对齐, right=右对齐, centerH=水平居中, top=顶对齐, bottom=底对齐, centerV=垂直居中"
}
},
"required": ["type"]
}
}
},
{
"type": "function",
"function": {
"name": "merge_layers",
"description": "合并当前选中的图层",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "create_layer_group",
"description": "创建图层组(如果不存在)",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "图层组名称"
}
},
"required": ["name"]
}
}
},
{
"type": "function",
"function": {
"name": "move_layer_to_group",
"description": "将当前图层移入指定图层组",
"parameters": {
"type": "object",
"properties": {
"group_name": {
"type": "string",
"description": "目标图层组名称"
}
},
"required": ["group_name"]
}
}
},
# ==================== 套图工具 ====================
{
"type": "function",
"function": {
"name": "identify_pieces",
"description": "识别裁片部位。截取当前PS画布并分析每个裁片图层的形状和位置用视觉AI识别哪个图层是前片、后片、袖子等。应在套图前先调用以建立图层名到裁片部位的对应关系。",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "generate_garment_preview",
"description": "【阶段1-生成预览】将用户上传的成衣照片中的花样,填充到 PS 文档的裁片轮廓上,生成一张带轮廓的花样预览图。预览图会显示在聊天中,供用户确认效果。需要用户已上传成衣图片。",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "extract_and_apply_all_pieces",
"description": "【阶段2-提取套图】用户确认预览 OK 后调用。根据 identify_pieces 的分析结果对每个裁片执行不同操作solid=PS纯色填充fill_pattern=AI提取花型铺满theme_pattern=底层纯色填充+上层AI提取主题图案(白底+正片叠底)mixed_pattern=底层AI提取花型+上层AI提取主题图案(白底+正片叠底)。",
"parameters": {
"type": "object",
"properties": {
"pieces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "裁片图层名称"},
"type": {"type": "string", "enum": ["solid", "fill_pattern", "theme_pattern", "mixed_pattern"], "description": "图案类型solid=纯色fill_pattern=花型铺满theme_pattern=主题图案+纯色底mixed_pattern=主题图案+花型底纹"},
"color": {"type": "string", "description": "颜色 hex 值。solid 和 theme_pattern 必须提供theme_pattern 的 color 是底色)"},
"description": {"type": "string", "description": "图案内容描述"}
},
"required": ["name", "type"]
},
"description": "裁片列表type 和 color 来自 identify_pieces 的分析结果"
}
},
"required": ["pieces"]
}
}
},
{
"type": "function",
"function": {
"name": "verify_pattern_result",
"description": "验证套图效果。自动截取当前 PS 画布与原始成衣对比,由视觉 AI 评分(1-10)并给出改进建议。应在套图完成后调用。",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
]
# 工具名称映射(中文显示用)
TOOL_DISPLAY_NAMES = {
"get_document_info": "查看文档信息",
"get_layer_structure": "查看图层结构",
"create_layer": "新建图层",
"rename_layer": "重命名图层",
"delete_layer": "删除图层",
"duplicate_layer": "复制图层",
"align_layers": "对齐图层",
"merge_layers": "合并图层",
"create_layer_group": "创建图层组",
"move_layer_to_group": "移入图层组",
"identify_pieces": "识别裁片部位",
"generate_garment_preview": "生成花样预览",
"extract_and_apply_all_pieces": "提取并套图",
"verify_pattern_result": "验证套图效果",
}