中文 ▾
获取 API 密钥

ChatGPT SDXL 提示词生成器与您的 API 脚本

已更新

chatgpt sdxl 提示词生成器工作流意味着打开聊天窗口,输入想法,将答案复制到你的图像工具中,然后重复。对于十个提示词来说还可以,但对于一千个提示词来说就很痛苦。本文将该流程与调用 API 的简短脚本进行对比,并列出两者的数据。

等距分割场景:缓慢的手动纸质流程与自动化的发光传送带
一个小舞台的立体画,发光的对话气泡代表文本角色扮演场景

要点

  • 手动聊天最适合探索风格;一旦需要大量或可重复性,脚本则更好。
  • 每个手动提示词耗时 30 秒,1,000 个提示词大约需要 8.3 小时;而脚本可以在几分钟内完成。
  • 在此 API 上,1,000 个提示词(输入约 300 token,输出 200 token)的成本约为 $0.145。
  • 脚本还能提供固定格式、保存的输入和重试功能,这是聊天窗口所不具备的。

从语言模型获取 SDXL 提示词两种方式

第一种方式是聊天助手。你粘贴一次系统风格的指令,然后一次发送一个短想法,并将每个回复复制到你的图像工具中。它不需要代码,你可以立即看到答案,并且可以说“更暗、更具电影感”来获得修改。对于探索来说,这很难被超越。

第二种方式是脚本。你在代码中编写一次指令,从文件中加载想法列表,为每个想法调用聊天补全接口,并将结果写入文件或直接发送到你的图像生成器。该服务是一个 OpenAI 兼容的、仅文本的 API,服务于来自独立提供商的一个开放权重模型。它不是 ChatGPT,也不是 OpenAI 的产品,但只要你更改 Base URL 和密钥,任何 OpenAI SDK 都可以与之通信。

这两种方法都不绘制图像。在这两种情况下,模型都生成文本,由单独的工具(如 SDXL)进行渲染。

并排比较

因素聊天窗口API 脚本
设置无密钥,30 行 Python
最佳批量大小1 到 20 个提示词数百到数千
输出格式聊天返回什么就是什么;你需要手动清理JSON 模式返回可解析的字段
可重复性随着对话增长而漂移每次调用使用相同的指令,可选种子
迭代自然:通过反馈回复你编辑脚本并重新运行
成本模型取决于你持有的计划;请查看其当前条款按 token 付费,预付
拒绝响应取决于助手的内容策略该模型在合法成人用途下无内容审查

诚实的总结:如果你每周制作少量图像并享受与之交谈,请保留使用聊天。当复制粘贴成为你流水线中最慢的步骤时,脚本开始显现出价值。

复制粘贴的时间成本

做一个适度的假设:每个提示词需要 30 秒来输入想法、等待、复制结果并粘贴到指定位置。对于 1,000 个提示词,那就是 1,000 × 30 秒 = 30,000 秒,或大约 8.3 小时的注意力。

脚本的运行方式不同。假设每次 API 调用耗时约 5 秒(这是一个假设,请测量你自己的)。使用 8 个并发请求(这是完整密钥的并发限制),1,000 次调用大约需要 1,000 / 8 × 5 秒 = 625 秒,即 10 分钟多一点。每分钟 300 个请求的限制意味着绝对下限仅为 3 分钟多一点。你启动它,去泡杯咖啡,然后查看文件。

节省的时间是主要论点。金钱是次要的,如下一个部分所示。

每 1,000 个提示词的成本

此 API 对每 1M 输入 token 收取 $0.15,对每 1M 输出 token 收取 $0.50。假设每次调用发送 250 token 的指令和 50 token 的想法(共 300 输入),并返回 200 token 的提示词。

  • 输入:1,000 × 300 = 300,000 token × $0.15 / 1M = $0.045。
  • 输出:1,000 × 200 = 200,000 token × $0.50 / 1M = $0.10。
  • 总计:$0.145 用于 1,000 个提示词。

为了与聊天订阅或其他 API 进行比较,用该计划的价格除以你一个月实际生成的提示词数量,并查看他们当前的定价,而不是信任文章中的数据。在注册后,点击 API 密钥页面 即可领取 $0.50 试用额度,足以覆盖 3,400 多个此类大小的提示词。查看 定价页面 可通过加密货币充值 $20 到 $500。

带有重试功能的批量脚本

下面的脚本从 ideas.txt 读取想法(每行一个),并写入 prompts.jsonl。它以 6 个并行工作者运行,并在遇到 429 时重试。

import json, time
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api.sdxlapi.com/v1", api_key="YOUR_KEY", max_retries=0)

SYSTEM = (
    "Expand the idea into one SDXL prompt of 40 to 60 words: subject, setting, "
    "lighting, style, mood, comma-separated. Return JSON with key 'prompt'."
)

def make(idea):
    for attempt in range(5):
        try:
            r = client.chat.completions.create(
                model="uncensored",
                messages=[{"role": "system", "content": SYSTEM},
                          {"role": "user", "content": idea}],
                response_format={"type": "json_object"},
                temperature=0.8,
            )
            return {"idea": idea, **json.loads(r.choices[0].message.content)}
        except RateLimitError:
            time.sleep(5 * (attempt + 1))
    return {"idea": idea, "prompt": None}

ideas = [l.strip() for l in open("ideas.txt") if l.strip()]
with ThreadPoolExecutor(max_workers=6) as pool, open("prompts.jsonl", "w") as out:
    for row in pool.map(make, ideas):
        out.write(json.dumps(row, ensure_ascii=False) + "\n")

完整密钥将工作线程数保持在 8 或以下,试用密钥保持在 2。如果看到带有错误代码 concurrency 的 429,请降低它;rate_limited 表示你超过了每分钟上限。失败的请求不收费,因此重试是免费的。更多参数信息请参阅 文档。

从脚本获取更好的输出

批处理的初次运行很少是最好的。三次低成本更改比更换工具更能改善结果。

  • 在系统提示词中添加两到三个示例。粘贴生成你喜欢的图片的提示词,并附上生成该图片的简短描述。模型会模仿其结构和详细程度。
  • 传递一个风格字段。 维护一个小字典,例如“电影剧照”、“水彩画”、“等距渲染”,并将所选风格附加到每个想法中。一个想法列表随后可以产生多种外观。
  • 过滤输出。 拒绝那些提示词少于 25 个词或多于 80 个词的行,然后仅重新运行这些行。代码中的简短检查胜过阅读一千行。

在每个结果旁保存该描述。当某张图片生成效果良好时,你需要清楚看到生成它的具体内容,而聊天记录在滚动时会移出屏幕。内容主题由你决定:模型针对合法成人用途进行了优化,唯一的硬性限制是绝不会生成涉及未成年人的性内容。

何时保留使用聊天

脚本并不总是更好的选择。当你还不知道想要什么时,当每个图像都需要关于构图的对话时,或者当你的量小到设置时间会超过节省的时间时,请继续使用聊天助手。一种常见模式是使用聊天找到一个好的指令,然后将该指令粘贴到脚本中作为系统提示词,并在那里运行批量工作。

还要考虑数据。发送到该 API 的提示词不会用于训练。对于任何其他服务,在发送未发布的创意作品之前,请阅读其数据政策。

问答

此 API 与 ChatGPT 相同吗?

不是。这是一个 OpenAI 兼容的接口,提供来自独立提供商的一个开放权重模型。它不是 OpenAI 的产品。

API 能生成 SDXL 图像吗?

不能。它仅写入文本。你的提示词会发送到 SDXL、ComfyUI、Automatic1111 或另一个图像工具。

生成 1,000 个提示词的成本是多少?

对于大约 300 个 token 输入和 200 个 token 输出的提示词,费用约为 $0.145,输入 token 价格为每 100 万 $0.15,输出 token 价格为每 100 万 $0.50。

批量运行速度有多快?

完整密钥允许 8 个并发请求和每分钟 300 个请求,因此 1,000 个短提示词可以在几分钟内完成。试用密钥允许 2 个并发请求和每分钟 60 个请求。

你只需填写一份表单即可获得密钥

创建账户,复制密钥,更改基础 URL。这就是全部设置。

获取 API 密钥