240 lines
8.4 KiB
Python
240 lines
8.4 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
AI 工具定义
|
||
将 PS 操作注册为 function calling 的 tool schema
|
||
前端收到 tool_calls 后执行 JSX,把结果回传
|
||
"""
|
||
|
||
# ==================== 工具 Schema(OpenAI 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": "验证套图效果",
|
||
}
|