GPT-6 Sol、Claude Opus 5.5 已上线GPT-6 Sol 价格仅为 5.6 Sol 的一半

FLUX Kontext API 替代方案:用 GPT Image 2 编辑图片

不用画蒙版的指令改图:请求代码、我们 2026 年 10 月 28 日连改三步的过程,以及每一步保住了什么。

Kiki, OmniaKey COO7 分钟阅读
本页内容

FLUX Kontext API 的用法是:一次请求给一句话和一张图,模型返回改好的新图。BFL 自己的文档把 FLUX.1 Kontext 称为上一代模型。文档建议新项目改用 FLUX.2(2026 年 10 月 28 日核对)。GPT-Image 2 的改图接口接受同样的两样输入。我们 10 月 28 日连改三步,桌上的杯子、窗台的绿植和窗框都保住了,前一步的改动也留到了下一步。

指令改图是怎么工作的

你发一张照片和一句话,比如"把红色自行车改成哑光黑"。模型返回一张新照片:这句话说的改了,画面其它地方保持原样。BFL 文档的说法是用简单的文字提示改图,不需要复杂的工作流,也不用微调。来源是 docs.bfl.ai/kontext/kontext_image_editing(2026 年 10 月 28 日核对)。

BFL 列了三个数字,直接决定代码怎么写:输入最大 20 MB 或 2000 万像素,输出约 1 MP,结果链接 10 分钟后失效。所以下载要马上做。

一句话要干两件事:说清改什么,再列清留什么。

OmniaKey 上的 GPT-Image 2 接改图任务,输入还是那两样:一句话和一张原图。模型页写明支持文生图和改图,质量分 low、medium、high 三档(omniakey.com/gpt-image-2,2026 年 10 月 28 日核对)。FLUX 系列的模型我们一个都没跑,下面全是我们自己跑的 4 次改图和对应的代码。

请求怎么写

一次改图就是一个 POST,地址 https://api.omniakey.com/v1/media/tasks。model 填 gpt-image-2,type 填 image,operation 填 edit。提示词放 input.prompt,原图以 Base64 放进 input.image,带上 mime 类型。来源是 docs.omniakey.com/en/media/image(2026 年 10 月 28 日核对)。接口返回 HTTP 202 和一个任务 id。状态是 queued 或 processing 时继续轮询 GET /v1/media/tasks/{task_id},完成后取 assets[0].url。

有两个细节让我们多跑了一次。用 Python 默认的 User-Agent 发 POST 会收到 HTTP 403,加上 User-Agent 才通过(2026 年 10 月 28 日)。Base64 也算进 1 MiB 的请求上限,编码前先缩小照片。

结果是 PNG,链接一小时后失效,文件本身保留 24 小时。下载后读一下 PNG 的真实宽高,别按你请求的尺寸去猜。

python
import base64
import json
import os
import time
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]


def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)


def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
    with open(source_path, "rb") as f:
        image = base64.b64encode(f.read()).decode()
    body = {
        "model": "gpt-image-2",
        "type": "image",
        "operation": "edit",
        "input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
        "parameters": {"size": size, "quality": quality},
    }
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    for _ in range(150):
        time.sleep(4)
        state = request("GET", f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # signed link: valid for about an hour, so download now
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task
if __name__ == "__main__":
    task = edit_image(
        "cafe-base.jpg",
        "Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos.",
        "cafe-step1.png",
        size="1536x1024",
    )
    print("task", task)

我们这次用的是 size 1536x1024、quality medium。文档说 GPT Image 的 n 必须是 1,函数里干脆不写。文件最下面的示例调用就是下面这条链的第一步。

连续三步改同一张图

每一步都把上一步的结果当作原图,所以三步就是三个任务、三次下载。底图是窗边的一张咖啡桌:白瓷杯配碟子、人行道上一辆红色自行车、窗台上有一盆绿植,1536x1024,medium 质量。

  • 第一步:"Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos." 结果:自行车变成哑光黑,前面挂了棕色藤编车筐;桌子、杯子、绿植和窗框没动。
  • 第二步,从上一步的结果开始:"Make it evening outside: the sky is dark blue and the street lamps are on. The cafe interior lights are warm yellow. Keep the table, the cup, the plant, the black bicycle and the window frame exactly the same. Photorealistic, no text, no logos." 结果:天变深蓝,路灯亮起,室内是暖黄光,黑色自行车和车筐都留着。
  • 第三步,从第二步的结果开始:"Replace the coffee in the white cup with a clear glass of iced tea with a lemon slice on the rim. Keep everything else exactly the same. Photorealistic, no text, no logos." 结果:咖啡换成冰红茶,杯沿有一片柠檬,黄昏的场景还在。
同一张咖啡桌的四格对比:原图、黑色自行车、黄昏、冰红茶替代咖啡
同一张咖啡桌,按三条指令一步步改。每一步都保住了桌子、杯子、绿植和窗户。

四格画面都是 gpt-image-2 生成的合成场景。Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1536x1024, quality medium.

从原图单独改一次

改图不必排队连做。这一条从底图重新开始,只动窗台上的一个位置:"Remove the potted plant from the windowsill and place a stack of three old hardcover books there. Keep everything else exactly the same: the table, the cup, the red bicycle and the daylight. Photorealistic, no text, no logos."

结果:窗台上立着三本旧硬皮书,绿植不见了,红色自行车还是红的。一句话做了两处改动,两处都出现在画面里。

咖啡桌旁的窗台上摆着三本旧硬皮书,原来的绿植不见了
从原图单独改的一次:绿植换成书,红色自行车没变。

哪些保住了,哪些没保住

三步下来,桌子、杯子、绿植和窗框都在;黑色自行车和它的车筐过了第二步的黄昏光线还在;前一步的改动在下一步里也都在。光线只在第二步变了一次,正是那句话要求的。

柠檬片卡在杯沿上,跟那句话要求的一样,冰红茶还留在碟子里。每条指令只跑了一次,所以每张图就是一个样本。

好用的指令长什么样

四条指令出了四张能用的图,写法有共同点。

  • 一句话只改一处,后面紧跟保留清单。第一步改自行车,同时点名桌子、杯子、绿植和窗框不变。
  • 每一步都把保留清单重写一遍,上一步的改动也要写进去。第二步写了 "the black bicycle",第三步留住了黄昏。
  • 新东西放在哪,跟旧东西一起说。原话是 "place a stack of three old hardcover books there"。
  • 用具体的材质和颜色:哑光黑、棕色藤编车筐、暖黄灯光、透明玻璃杯。
  • 最后收一句 "Photorealistic, no text, no logos",这条链上每条都这么结尾。

句子顺序和改图措辞可以看我们的GPT Image 2 提示词指南,换装看虚拟试穿,去掉画面里的东西看物体去除。

该选哪一个

FLUX.1 KontextGPT-Image 2 改图
每次请求一句话、一张图一句话、一张图
原图上限20 MB 或 2000 万像素请求 1 MiB,含 Base64
输出尺寸约 1 MP你要的尺寸,PNG
结果链接10 分钟约 1 小时
模型状态BFL 称为上一代OmniaKey 上可用

已有的 FLUX 流水线还在生产里跑、想先保持原来的调用方式,就继续用 Kontext。想自己指定尺寸、拿一小时有效的链接,就选 GPT-Image 2。BFL 对新项目的建议是 FLUX.2,重新选一次正好趁现在。

成本方面,OpenAI 的价格页(2026 年 10 月 28 日核对)按百万 token 计费。图像输入 $8.00,图像输出 $30.00,缓存图像输入 $2.00。批处理是标准价的一半。页面上没有单张价格,图像生成指南里有一个按单张算的算价器。

常见问题

FLUX Kontext API 是做什么的?

一句话改一张图:每次请求给一条文字提示和一张输入图(BFL,2026 年 10 月 28 日核对)。BFL 页面上的说法是 "edits images using simple text prompts"。

FLUX Kontext 现在还能用吗?

BFL 把 FLUX.1 Kontext 称为上一代模型,建议新项目改用 FLUX.2(2026 年 10 月 28 日核对)。

只写文字就能改照片吗?

可以。给 GPT Image 2 的改图接口一张照片、一句话,返回一张新照片。我们 2026 年 10 月 28 日这样改了四次。

可以连续改吗?

可以,一步一个任务,把上一步的结果当下一次的原图。我们连改三步,前面的改动都留到了最后。

结果链接能放多久?

OmniaKey 上大约一小时,文件保留 24 小时。来源是 docs.omniakey.com(2026 年 10 月 28 日核对)。任务成功后马上下载 PNG,再读真实尺寸。

OmniaKey 通过上面的任务流程提供GPT-Image 2 改图,当前价格在价格页。

文中提到的模型

FLUX KontextGPT Image 2image editinginstruction editingAPI

相关文章

最新文章