# -*- coding: utf-8 -*- """Submit S1-3 v3 tasks (GPT strong-lock + Seedream control) via SORB external API.""" import json, ssl, pathlib, urllib.request, urllib.error BASE = "https://192.168.31.88:8042" CFG = pathlib.Path(r"C:\Users\admin\.zcode\cli\config.json") pat = json.loads(CFG.read_text(encoding="utf-8-sig"))["mcp"]["servers"]["sorb"]["env"]["SORB_PAT"] ctx = ssl._create_unverified_context() REFS = [ {"source_type": "media_asset", "id": 9089, "asset_type": "image", "role": "reference_image"}, {"source_type": "media_asset", "id": 9057, "asset_type": "image", "role": "reference_image"}, {"source_type": "media_asset", "id": 9048, "asset_type": "image", "role": "reference_image"}, ] GPT_PROMPT = """【人物造型严格锁死——本次唯一验收标准】画面中的人物必须就是参考图1(吕布三视图)里的同一个人,不得替换成任何其他角色。逐项还原:①发型:黑色高束发髻,发丝根根分明,额前无刘海;②头冠:金色凤翅束发冠,两侧各插一根鲜红色超长弯曲翎羽,双翎从头顶竖起呈弧形向后垂落(这是吕布唯一标识,必须两根、鲜红、超长);③面部:与参考图1完全一致的年轻英武面孔——剑眉浓黑上扬、眼窝深、眼神锐利、鼻梁高挺、下颌线清晰、薄唇紧抿,绝不是任何其他三国角色;④铠甲:兽面吞头连环铠——双肩兽头吞甲、胸前两枚圆形护胸铜片、黑色皮革护腕、腰部灰白色皮毛裙边(干净高级灰,不脏旧)、红色长披风;⑤兵器:方天画戟形制严格按参考图2,月牙双刃+中央枪尖+戟尾配重,红色戟缨缠绕杆身。 【镜头语言】好莱坞史诗大片英雄出场镜头。超低角度仰拍(摄影机低于腰部向上),广角贴近。吕布位于画面右侧三分之一,身体呈对角线动势;方天画戟长杆自画面右下前景斜贯而上,戟尖寒光刺向画面左上天空;红披风被狂风卷向画面左侧、占满左侧空间翻飞;双红翎向后猎猎。清晨低角度侧逆光来自画面左后方,在铠甲边缘、双翎、披风边缘勾出金色轮廓光;面部半明半暗,眼神在阴影中发亮。前景虚化的雪尘粒子掠过镜头。背景:参考图3关隘古道虚化为冷青蓝剪影与晨雾。 【风格质感】3D超写实三国历史正剧CG,UE5.2全局光线追踪渲染,3D动画CG角色质感、非真人实拍,皮肤与铠甲为细腻CG材质质感,画面通透无死黑,冷青阴影+暖金高光电影级调色,胶片颗粒,边缘暗角,浅景深,16:9。无文字、无水印、无旗帜、无现代元素。参考图仅提供造型与元素,姿势与镜头角度全新设计,不复制三视图站姿。""" SEEDREAM_PROMPT = """【人物100%还原参考图1】画面中的人物就是参考图1中的吕布本人,不得替换角色。①黑色高束发髻,金色凤翅束发冠,两侧各插一根鲜红色超长弯曲翎羽,双翎从头顶竖起呈弧形向后垂落;②面部与参考图1完全一致:剑眉浓黑上扬、眼窝深、眼神锐利、鼻梁高挺、下颌线清晰、年轻英武;③兽面吞头连环铠:双肩兽头吞甲、胸前两枚圆形护胸铜片、黑色护腕、腰部干净高级灰的皮毛裙边、红色长披风;④兵器方天画戟严格按参考图2:月牙双刃+中央枪尖+戟尾配重,红色戟缨缠绕杆身。 【镜头】超低角度仰拍英雄出场镜头:吕布位于画面右侧三分之一、身体对角线动势;方天画戟长杆自画面右下前景斜贯而上、戟尖刺向画面左上天空;红披风被狂风卷向画面左侧翻飞、占满左侧空间;双红翎向后猎猎。清晨低角度侧逆光自画面左后方射来,在铠甲边缘、双翎、披风边缘勾出金色轮廓光;面部半明半暗,眼神在阴影中发亮。前景虚化雪尘粒子掠过。背景:参考图3关隘古道虚化为冷青蓝剪影与晨雾。 【风格】3D超写实三国历史正剧CG,UE5.2全局光线追踪渲染,3D动画CG角色质感非真人实拍,皮肤铠甲细腻CG材质,画面通透无死黑,冷青阴影+暖金高光电影级调色,胶片颗粒,边缘暗角,浅景深,16:9。无文字、无水印、无旗帜、无现代元素。参考图仅提供造型,姿势与镜头角度全新设计,不复制三视图站姿。""" def submit(key, model_id, params): payload = { "client_namespace": "lubu_pv_board", "idempotency_key": key, "project_id": 30, "model_config_id": model_id, "task_type": "image", "references": REFS, "parameters": params, } data = json.dumps(payload, ensure_ascii=False).encode("utf-8") req = urllib.request.Request( BASE + "/api/external/v1/tasks", data=data, method="POST", headers={"Authorization": "Bearer " + pat, "Content-Type": "application/json"}, ) try: with urllib.request.urlopen(req, context=ctx, timeout=120) as r: body = r.read().decode("utf-8") print(key, "HTTP", r.status, body[:1200]) except urllib.error.HTTPError as e: print(key, "HTTP", e.code, e.read().decode("utf-8")[:1200]) submit( "lubu_board_S13_20261024_v3b_gpt", 88, {"prompt": GPT_PROMPT, "aspect_ratio": "16:9", "image_size": "4K", "quality": "max", "output_format": "png", "n": 1, "moderation": "low"}, ) submit( "lubu_board_S13_20261024_v3b_seedream", 62, {"prompt": SEEDREAM_PROMPT, "aspect_ratio": "16:9", "image_size": "2K", "output_format": "png", "watermark": False}, )