GPT-6 Sol и Claude Opus 5.5 уже доступныGPT-6 Sol вдвое дешевле 5.6 Sol

Альтернатива API FLUX Kontext: правка изображений с GPT Image 2

Правки по инструкции без маски: код запроса, цепочка из трёх правок, выполненных 28 октября 2026 года, и то, что сохранил каждый шаг.

Kiki, OmniaKey COO7 мин чтения
На этой странице

API FLUX Kontext правит фото по одному промпту и одной картинке на запрос. Страница BFL называет FLUX.1 Kontext моделью предыдущего поколения и советует FLUX.2 для новых проектов (проверено 28 октября 2026 года). GPT-Image 2 принимает те же два входа. Три правки подряд 28 октября 2026 года сохранили столик в кафе, чашку, растение и окно, а вместе с ними каждое предыдущее изменение.

Что такое правка по инструкции

Вы отправляете фото и фразу вроде «замените красный велосипед на матовый чёрный». Модель возвращает новое фото: названное изменение сделано, остальное в кадре не тронуто. BFL описывает Kontext как правку изображений простыми текстовыми промптами, без сложных процессов и дообучения (docs.bfl.ai/kontext/kontext_image_editing, проверено 28 октября 2026 года).

Три числа BFL определяют, как писать код: вход до 20 MB или 20 мегапикселей, результат около 1 MP и подписанные ссылки на результат, живущие 10 минут. Скачивайте результат сразу.

В инструкции две части: само изменение и список того, что остаётся.

GPT-Image 2 в OmniaKey берёт задачу на правку с теми же двумя составляющими, а страница модели перечисляет текст в изображение и правку изображения в качестве low, medium и high (omniakey.com/gpt-image-2, проверено 28 октября 2026 года). Модели FLUX мы не запускали, поэтому дальше идут только наши четыре правки и код.

Запрос

Одна правка — это POST на https://api.omniakey.com/v1/media/tasks с model равным gpt-image-2, type image, operation edit, фразой в input.prompt и исходным фото в input.image в виде Base64 с mime-типом (docs.omniakey.com/en/media/image, проверено 2026-10-28). Ответ — HTTP 202 с id задачи. Опрашивайте GET /v1/media/tasks/{task_id}, пока статус queued или processing, затем возьмите assets[0].url из завершённой задачи.

Две мелочи стоили нам одной повторной попытки. POST с User-Agent по умолчанию из Python возвращал HTTP 403, пока мы не задали свой (28 октября 2026 года), а Base64 внутри тела входит в лимит запроса 1 MiB, так что уменьшите фото до кодирования.

Результат — непрозрачный PNG за подписанной ссылкой, которая истекает примерно через час; сам файл хранится 24 часа. Скачайте его и прочитайте настоящие ширину и высоту вместо того, чтобы верить запрошенному размеру.

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. Документация говорит, что n для GPT Image должен быть 1; функция просто не передаёт это поле. Пример вызова в конце файла — первый шаг цепочки.

Цепочка из трёх правок

Каждый шаг получает результат предыдущего как вход, поэтому цепочка — это три задачи и три скачивания. Исходное фото — столик у окна: белая чашка кофе на блюдце, красный велосипед на тротуаре, растение в горшке на подоконнике, 1536x1024, качество medium.

  • Шаг 1: «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.» Результат: матовый чёрный велосипед с плетёной корзиной спереди; столик, чашка, растение и окно без изменений.
  • Шаг 2, от шага 1: «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.» Результат: вечернее небо, включённые фонари, тёплый свет в помещении, чёрный велосипед с корзиной на месте.
  • Шаг 3, от шага 2: «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.» Результат: холодный чай с ломтиком лимона там, где был кофе; вечерняя сцена сохранилась.
Сетка 2x2 с одним и тем же столиком в кафе: оригинал, чёрный велосипед, вечерний вариант и холодный чай вместо кофе
Одно и то же фото кафе после трёх инструкций, шаг за шагом. Каждый шаг сохранил столик, чашку, растение и окно.

Все четыре кадра — синтетические сцены, сделанные 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.»

На подоконнике встали три старые книги в твёрдых переплётах, растение исчезло, а красный велосипед остался красным. Одна фраза сделала два изменения, и оба появились в кадре.

Столик в кафе и три старые книги в твёрдых переплётах на подоконнике, где раньше стояло растение в горшке
Отдельная правка от исходного фото: книги вместо растения. Красный велосипед не изменился.

Что сохранилось, а что нет

Столик, чашка, растение и оконная рама прошли все три шага, чёрный велосипед и его корзина пережили вечерний свет, и каждая предыдущая правка оставалась в следующем кадре. Свет менялся один раз, на шаге 2, где об этом просила фраза.

Ломтик лимона лежал на краю стакана, как и просила фраза, а холодный чай остался на блюдце. Каждая инструкция выполнялась один раз, поэтому каждый кадр — один образец.

Инструкции, которые сработали

Четыре инструкции дали четыре пригодные правки с общей схемой.

  • Одно изменение на фразу, затем список того, что сохраняется. Шаг 1 менял велосипед и называл столик, чашку, растение и окно неизменными.
  • Повторяйте список сохранения каждый раз, включая прошлое изменение: шаг 2 пишет «the black bicycle», а шаг 3 удерживает вечер.
  • Говорите, куда встанет новое, в той же фразе, что и про старое: «place a stack of three old hardcover books there».
  • Берите конкретные материалы и цвета: «matte black», «brown wicker basket», «warm yellow», «clear glass».
  • Закрывайте фразой «Photorealistic, no text, no logos». Каждая инструкция в нашей цепочке так и заканчивалась.

О порядке фраз и формулировках для правки рассказывает наше руководство по промптам GPT Image 2. Руководство по виртуальной примерке разбирает замену одежды, а руководство по удалению объектов — удаление предметов.

Что выбрать

FLUX.1 KontextПравка в GPT-Image 2
Вход на запросОдин промпт, одно изображениеОдин промпт, одно изображение
Предел исходника20 MB или 20 мегапикселейЗапрос 1 MiB, вместе с Base64
Размер результатаОколо 1 MPТот размер, который вы указали, в PNG
Ссылка на результат10 минутОколо часа
Состояние моделиПредыдущее поколение, по данным BFLДоступна в OmniaKey

Выбирайте Kontext, если FLUX-процесс уже работает в продакшене и вам пока нужна именно такая форма вызова. Выбирайте GPT-Image 2, если хотите задавать размер сами и иметь час на скачивание по ссылке. BFL направляет новые задачи на FLUX.2, так что новый проект — хороший повод посмотреть ещё раз.

По цене страница тарифов OpenAI (проверено 2026-10-28) считает gpt-image-2 за миллион токенов: $8.00 за вход изображения, $30.00 за выход изображения, $2.00 за кэшированный вход изображения, а пакетный режим идёт по половине стандартного тарифа. Строки за одно изображение там нет; в руководстве по генерации изображений есть калькулятор для одного изображения.

Частые вопросы

Что делает API FLUX Kontext?

Правит фото по текстовой инструкции: один промпт и одно входное изображение на запрос (BFL, проверено 2026-10-28). На странице BFL сказано, что он «edits images using simple text prompts».

FLUX Kontext ещё актуален?

BFL называет FLUX.1 Kontext моделью предыдущего поколения и советует FLUX.2 для новых проектов (проверено 2026-10-28).

Можно править фото через API, используя только текст?

Да. Отправьте одно фото и одну инструкцию на эндпоинт правки GPT-Image 2, и вернётся новое фото. Так мы сделали четыре правки 28 октября 2026 года.

Можно делать правки цепочкой?

Да, по одной задаче на шаг: каждый результат становится исходным фото для следующего шага. Наша цепочка из трёх шагов сохранила прошлые изменения и при вечернем свете, и при замене напитка.

Сколько живут ссылки на результат?

Около часа в OmniaKey, а файл хранится 24 часа (docs.omniakey.com, проверено 2026-10-28). Скачайте PNG сразу после успеха задачи и прочитайте его настоящие размеры.

OmniaKey отдаёт правки GPT-Image 2 через описанный выше поток задач; актуальные цены — на странице тарифов.

Модели в этой статье

FLUX KontextGPT Image 2редактирование изображенийправка по инструкцииAPI

Похожие статьи

Недавние статьи