
霜儿-汉服-造相Z-Turbo代码实例Python调用Xinference API生成江南庭院古风写真想用代码创作出充满诗意的江南古风汉服写真吗今天我们就来动手实践通过Python直接调用部署好的“霜儿-汉服-造相Z-Turbo”模型API告别Web界面用程序化的方式批量生成你心中的古风佳人。这个模型专门擅长生成名为“霜儿”的古风汉服少女形象结合江南庭院、白梅落霜等元素能轻松营造出清冷唯美的氛围感。我们将从最基础的API调用开始一步步构建一个完整的图片生成脚本并探索如何通过调整参数获得更理想的效果。1. 环境准备与模型服务确认在开始写代码之前我们需要确保两件事Python环境就绪以及模型服务正在正常运行。1.1 准备Python环境你只需要一个能运行Python 3.7及以上版本的环境。建议使用venv或conda创建一个干净的虚拟环境。然后安装唯一必需的第三方库requests。这个库让我们能够轻松地发送HTTP请求与模型API通信。打开终端或命令行执行以下命令# 安装requests库 pip install requests1.2 确认Xinference模型服务状态我们的代码将与通过Xinference部署的模型服务进行交互。首先你需要知道模型服务的访问地址API Endpoint。根据提供的镜像信息服务通常运行在本地。关键的步骤是检查服务日志确认模型已加载成功。在部署了该镜像的环境下运行cat /root/workspace/xinference.log当你看到日志中显示模型例如sdxl-turbo或相关LoRA加载完成的字样时说明服务已经启动就绪可以接受我们的请求了。通常Xinference的默认API地址是http://localhost:9997。我们后续的代码将向这个地址发送请求。2. 基础API调用生成你的第一张古风写真现在让我们编写第一个Python脚本实现最核心的图片生成功能。2.1 理解API接口Xinference为文本生成图像模型提供了统一的REST API。我们主要使用以下接口模型列表GET /v1/models用于查看已部署的模型。图像生成POST /v1/images/generations这是核心的生成接口。2.2 编写生成脚本创建一个名为generate_hanfu_portrait.py的Python文件并输入以下代码import requests import json import time from pathlib import Path # 1. 配置API端点和服务地址 XINFERENCE_BASE_URL http://localhost:9997 MODEL_UID sdxl-turbo # 根据实际部署的模型UID调整通常可在日志或模型列表中查到 API_URL f{XINFERENCE_BASE_URL}/v1/images/generations # 2. 准备请求数据 # 这是针对“霜儿-汉服”模型优化的提示词 prompt ( 霜儿古风汉服少女月白霜花刺绣汉服乌发簪玉簪 江南庭院白梅落霜清冷氛围感古风写真高清人像masterpiece, best quality ) # 负面提示词用于排除我们不想要的元素 negative_prompt cartoon, 3d, disfigured, bad art, deformed, extra limbs, close up payload { model: MODEL_UID, prompt: prompt, size: 1024x1024, # 生成图片的尺寸 n: 1, # 每次生成图片的数量 steps: 4, # 迭代步数Z-Turbo模型步数可以较少 negative_prompt: negative_prompt } # 3. 设置请求头 headers { Content-Type: application/json } def generate_and_save_image(): 调用API生成图片并保存到本地 print(f正在向模型 {MODEL_UID} 发送请求...) print(f提示词{prompt[:50]}...) # 打印前50个字符预览 try: # 发送POST请求 response requests.post(API_URL, headersheaders, datajson.dumps(payload), timeout120) response.raise_for_status() # 如果状态码不是200抛出异常 # 解析响应 result response.json() # 响应中包含base64编码的图片数据 if data in result and len(result[data]) 0: image_b64 result[data][0][b64_json] # 解码并保存图片 import base64 image_data base64.b64decode(image_b64) # 创建保存目录 output_dir Path(./generated_images) output_dir.mkdir(exist_okTrue) # 生成文件名使用时间戳 timestamp int(time.time()) filename output_dir / f霜儿_古风写真_{timestamp}.png with open(filename, wb) as f: f.write(image_data) print(f✅ 图片生成成功已保存至{filename}) return filename else: print(❌ 响应中未找到图片数据。) print(f完整响应{json.dumps(result, indent2, ensure_asciiFalse)}) return None except requests.exceptions.RequestException as e: print(f❌ 请求失败{e}) return None except json.JSONDecodeError as e: print(f❌ 响应解析失败{e}) print(f原始响应文本{response.text[:200]}...) return None # 4. 执行生成 if __name__ __main__: saved_file generate_and_save_image() if saved_file: print(f生成任务完成。你可以打开 {saved_file} 查看效果。)2.3 运行脚本并查看结果在终端中运行这个脚本python generate_hanfu_portrait.py如果一切顺利你将在当前目录下的generated_images文件夹里找到新生成的图片。打开它一位身着月白霜花汉服、置身于江南庭院中的清冷少女——“霜儿”便跃然眼前。3. 进阶技巧优化提示词与参数调整第一次生成的结果可能已经很不错但我们可以通过调整提示词和参数来获得更精确、更高质量的画面。3.1 精细化提示词工程模型的输出质量极大程度依赖于提示词。对于古风汉服写真我们可以从以下几个维度细化# 示例一个更精细化的提示词结构 detailed_prompt { subject: 霜儿一位美丽的古风汉服少女18岁, # 主体 appearance: 精致的鹅蛋脸柳叶眉丹凤眼眼神清澈略带忧伤樱桃小嘴, # 外貌细节 clothing: 身着月白色对襟齐腰襦裙裙摆绣有淡蓝色霜花与梅花纹样材质轻盈如纱, # 服装描述 hairstyle: 乌黑长发半挽插着一支白玉簪余发披肩, # 发型发饰 scene: 江南古典庭院白墙黛瓦圆形拱门庭院中一株白梅盛开花瓣伴着薄霜飘落, # 场景 lighting: 清晨柔和的侧光营造清冷、静谧的氛围感, # 光线氛围 style: 古风写真工笔画风格高清细节丰富大师杰作, # 风格质量 action: 少女微微侧身指尖轻触梅花望向远方 # 动作姿态 } # 将字典组合成一句连贯的提示词 prompt_text .join(detailed_prompt.values()) print(组合后的提示词, prompt_text)负面提示词同样重要它能有效避免常见瑕疵strong_negative_prompt ( 低质量模糊失真畸形多余的手指多余的手臂多余的眼 现代服装西装T恤牛仔裤logo文字水印签名 恐怖血腥性感暴露卡通动漫3D渲染塑料感 )3.2 关键生成参数解析在API的payload中有几个参数对输出影响显著size: 图片尺寸。1024x1024是常用尺寸也可尝试768x1024竖版人像或1024x768横版场景。steps: 去噪步数。对于Z-Turbo这类快速模型4-8步即可增加步数如20可能提升细节但耗时更长。guidance_scale: 指导尺度CFG Scale。控制模型遵循提示词的程度。值太低3图像自由发散值太高10可能过度饱和、不自然。对于人像写真建议尝试 5.0 到 8.0 之间的值。payload_advanced { model: MODEL_UID, prompt: prompt_text, size: 768x1024, # 竖版更适合人像 n: 1, steps: 6, # 稍增加步数以提升质量 guidance_scale: 7.0, # 加入CFG Scale参数 negative_prompt: strong_negative_prompt, seed: 42 # 固定种子以便复现相同结果 }seed: 随机种子。固定一个数字如42可以在其他参数不变时生成几乎完全相同的图片便于对比调试。4. 实战应用批量生成与简单Web界面掌握了单次生成后我们可以扩展脚本功能满足更实际的需求。4.1 批量生成不同主题的写真假设你想为“霜儿”生成一组在不同季节和场景下的写真import concurrent.futures def batch_generate_themes(): 批量生成不同主题的图片 themes [ { name: 春庭, prompt: 霜儿汉服少女浅粉色绣花齐胸襦裙春日庭院桃花盛开阳光明媚温暖氛围古风写真 }, { name: 夏荷, prompt: 霜儿汉服少女水绿色薄纱对襟衫夏日荷塘泛舟采莲荷叶田田清新灵动古风写真 }, { name: 秋月, prompt: 霜儿汉服少女橘红色马面裙中秋月夜桂花树下手提灯笼月色朦胧古风写真 }, { name: 冬梅, prompt: 霜儿汉服少女月白斗篷绣红梅雪中庭院红梅傲雪呵气成霜清冷孤傲古风写真 } ] output_dir Path(./batch_themes) output_dir.mkdir(exist_okTrue) def generate_one_theme(theme): local_payload payload.copy() local_payload[prompt] theme[prompt] local_payload[seed] None # 使用不同种子产生变化 response requests.post(API_URL, headersheaders, datajson.dumps(local_payload), timeout120) if response.status_code 200: result response.json() if data in result: import base64 image_b64 result[data][0][b64_json] image_data base64.b64decode(image_b64) filename output_dir / f霜儿_{theme[name]}_{int(time.time())}.png with open(filename, wb) as f: f.write(image_data) print(f✅ 主题【{theme[name]}】生成完成{filename}) return filename print(f❌ 主题【{theme[name]}】生成失败) return None # 使用线程池并发生成注意服务器负载 with concurrent.futures.ThreadPoolExecutor(max_workers2) as executor: # 限制并发数 futures [executor.submit(generate_one_theme, theme) for theme in themes] results [f.result() for f in concurrent.futures.as_completed(futures)] print(f批量生成完成共处理 {len([r for r in results if r])} 个主题。) # 调用批量生成函数 # batch_generate_themes()4.2 构建一个极简的本地Web界面如果你希望有一个比命令行更友好的交互方式可以快速用Gradio搭建一个界面。首先安装Gradiopip install gradio。import gradio as gr import base64 from io import BytesIO from PIL import Image def generate_with_gradio(prompt_text, negative_text, steps_slider, cfg_scale): 供Gradio界面调用的生成函数 payload { model: MODEL_UID, prompt: prompt_text, negative_prompt: negative_text, size: 1024x1024, n: 1, steps: steps_slider, guidance_scale: cfg_scale } try: response requests.post(API_URL, headersheaders, datajson.dumps(payload), timeout60) response.raise_for_status() result response.json() if data in result and len(result[data]) 0: image_b64 result[data][0][b64_json] image_data base64.b64decode(image_b64) # 将字节数据转换为PIL Image供Gradio显示 image Image.open(BytesIO(image_data)) return image else: return None except Exception as e: print(f生成失败: {e}) return None # 创建界面 demo gr.Interface( fngenerate_with_gradio, inputs[ gr.Textbox(label正面提示词, value霜儿古风汉服少女江南庭院白梅落霜清冷氛围感高清人像, lines3), gr.Textbox(label负面提示词, value低质量模糊畸形现代服装卡通3D, lines2), gr.Slider(minimum1, maximum20, value4, step1, label生成步数 (Steps)), gr.Slider(minimum1.0, maximum15.0, value7.0, step0.5, label指导尺度 (CFG Scale)) ], outputsgr.Image(label生成的古风写真, typepil), title霜儿-汉服古风写真生成器, description输入描述调整参数生成专属的古风汉服少女画像。 ) # 启动界面在本地浏览器打开 # demo.launch(server_name0.0.0.0, server_port7860, shareFalse)运行这段Gradio代码后一个简单的Web界面就会在本地启动让你可以通过滑块和文本框交互式地控制生成过程。5. 总结通过本文的实践我们完成了从零开始使用Python调用“霜儿-汉服-造相Z-Turbo”模型API的全过程。我们不仅实现了单张图片的生成还深入探讨了通过提示词工程和参数调优来提升画面质量的方法并扩展了批量生成和简易Web交互界面等实用功能。这个流程的核心非常清晰构造一个包含模型ID、提示词和参数的JSON请求发送到正确的Xinference API端点然后处理返回的Base64图片数据。掌握了这个模式你就可以轻松地将AI绘画能力集成到任何Python项目中无论是用于内容创作、设计辅助还是构建更复杂的应用。关键收获提示词是关键详细、具体的正面提示词和有针对性的负面提示词是获得高质量、符合预期图片的最重要因素。参数需微调steps、guidance_scale和size等参数需要根据模型特性如Z-Turbo是快速模型和期望效果进行针对性调整。代码化带来效率API调用方式使得批量生成、自动化工作流和系统集成成为可能极大地提升了创作效率。下一步你可以尝试将不同的场景、服饰、动作描述组合进提示词创造出千变万化的“霜儿”形象也可以探索更多Xinference API的高级功能如图像编辑或模型管理。希望这份代码实例能成为你探索AI古风艺术创作的得力工具。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。