Skip to main content
OpenAI خدمة تحرير الصور، يمكن إدخال الصور والتعليمات، وإخراج الصور المعدلة. يمكن لنموذج GPT Image سلسلة أن يستقبل ما يصل إلى 16 صورة مرجعية في نفس الوقت. حاليًا، يدعم الواجهة كل من gpt-image-1، وأحدث gpt-image-2، بالإضافة إلى نماذج سلسلة nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro المتصلة من خلال نفس الواجهة. تتناول هذه الوثيقة بشكل رئيسي عملية استخدام OpenAI Images Edits API، مما يتيح لنا استخدام وظيفة تحرير الصور الرسمية من OpenAI بسهولة.

申请流程

لاستخدام OpenAI Images Edits API، يجب أولاً الذهاب إلى لوحة تحكم Ace Data Cloud للحصول على رمز API الخاص بك، احتفظ به للاستخدام لاحقًا. إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل بعد، سيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، وبعد الانتهاء، سيتم العودة تلقائيًا إلى الصفحة الحالية. رمز API واحد يكفي لاستدعاء جميع خدمات المنصة، ولا حاجة لتقديم طلب منفصل لكل خدمة. عند التقديم لأول مرة، ستحصل على رصيد مجاني لتجربته مجانًا؛ عند نفاد الرصيد، يمكنك إعادة شحن الرصيد العام في لوحة التحكم.
📘 الوثيقة الكاملة: OpenAI Images Edits API →

GPT-Image-2 模型

gpt-image-2 في سيناريو تحرير الصور مقارنة بـ gpt-image-1 لديه تحسينات واضحة جدًا:
  • الحفاظ على الهيكل أكثر استقرارًا: عند تغيير الجلد، تغيير الألوان، أو تغيير الخلفية، لن يتم تدمير تنسيق الصورة الأصلية وتكوينها تقريبًا.
  • احتفاظ النص بدقة أكبر: الصور التي تحتوي على نصوص مثل المعلومات الرسومية، الملصقات، القوائم، وغيرها، تظل النصوص واضحة وقابلة للقراءة بعد التحرير.
  • دعم نقل URL مباشرة: بالإضافة إلى تحميل الملفات التقليدي multipart/form-data، gpt-image-2 يدعم أيضًا إدخال URL الصورة بطريقة JSON، دون الحاجة إلى تنزيل الصورة محليًا أولاً، مما يجعله مناسبًا جدًا للاتصال بخطوط الخدمة.
  • دعم نقل base64 مباشرة: كما هو متفق عليه رسميًا، يمكن أيضًا تمرير حقل image مباشرة كـ base64 (data:image/png;base64,... أو base64 عاري)، دون الحاجة إلى تحميل الصورة المحلية إلى موقع تخزين الصور أولاً لتحريرها.
  • دعم إعادة رسم بدقة عالية: يمكن إدخال صورة أصلية بدقة 1K، من خلال معلمة size طلب إخراج بدقة 2K / 4K، سيقوم النموذج بإكمال التكبير أثناء عملية التحرير.

线路变体(:official / :reverse

gpt-image-2 يسير بشكل افتراضي عبر الخط القياسي. من خلال لاحقة اسم النموذج، يمكن اختيار الخط بشكل صريح:
  • gpt-image-2:official: قناة رسمية، مستقرة ومتوافقة. يتم تحديد التكلفة من خلال رموز إدخال النص، ورموز إدخال الصورة أثناء التحرير ورموز إخراج الصورة، ويتم التسوية النهائية وفقًا للاستخدام الفعلي في الاستجابة؛ الأسعار المعروضة للجودة/الحجم على الصفحة هي للتقدير فقط؛ يتم احتساب الأسعار للعملاء بحوالي 80% من السعر الرسمي لـ OpenAI وفقًا لأقصى حزمة استخدام. ستقوم الخدمة تلقائيًا بتجاوز الأخطاء بين القنوات المتاحة، والقدرة والتكلفة تعتمد على النتائج الفعلية المستلمة.
  • gpt-image-2:reverse: يعادل تمامًا gpt-image-2 الافتراضي، مع قيمة أفضل، والسعر يبقى كما هو.
:official 计费公式 التكلفة النهائية = رموز إدخال النص + رموز إدخال الصورة (فقط للتحرير) + رموز إخراج الصورة. السعر المعروض على الصفحة لـ quality × size هو تقدير قبل الطلب، ويتم خصم التكلفة الفعلية وفقًا لـ usage في الاستجابة الناجحة. على سبيل المثال، عادةً ما تكون تكلفة إخراج الصورة لـ low، 1024x1024 حوالي 0.0505 Credits، بالإضافة إلى عدد قليل من رموز الإدخال؛ عند استخدام auto، قد يختار النموذج جودة أعلى، وسيتم فحص الحد المسبق وفقًا لمستوى أعلى.

支持的 size 取值

تتوافق واجهة التحرير مع تنسيق التحقق من size مع واجهة التوليد - gpt-image-2 يحتاج فقط إلى أن يكون size إما auto، فارغ، أو يتوافق مع تنسيق WIDTHxHEIGHT، أي شكل آخر سيعيد 400. يتم خصم gpt-image-2 الافتراضي و:reverse بشكل موحد لكل صورة؛ :official سيحسب رموز إدخال النص، ورموز إدخال الصورة المرجعية ورموز إخراج الصورة، حيث قد تؤثر الصورة الأصلية، الحجم والجودة على التكلفة النهائية. قيود الحجم: يجب أن تلبي الأبعاد المخصصة أن تكون الأبعاد مضاعفات 16، وألا يتجاوز الطول 3840، وإجمالي عدد البكسلات ≤ 8,294,400، وإذا تجاوزت ذلك ستعيد 4xx.
على سبيل المثال: إذا كانت الصورة الأصلية 1024x1024، وعند تمرير size كـ 2048x2048، سيقوم النموذج بإعادة رسم الصورة وإخراج صورة بدقة 2K؛ إذا تم تمرير size كـ 3840x2160، سيتم إخراج صورة بدقة 4K. يتم خصم تكاليف الأبعاد الثلاثة لـ gpt-image-2 الافتراضي و:reverse بشكل متساوٍ؛ بينما يتم احتساب :official وفقًا للاستخدام الفعلي للرموز. إغفال حقل size وتمريره كـ auto متساوي تمامًا: سيقوم gpt-image-2 بقراءة نية الحجم المحددة في الكلمات الدلالية، بما في ذلك البكسلات، النسبة، الاتجاه الأفقي أو العمودي، مستوى الدقة (مثل 4K / high-res) أو اسم القماش. عند التعرف على نية الحجم، سيتم استخدام الأبعاد المحددة المخططة؛ إذا لم يكن هناك متطلبات حجم في الكلمات الدلالية أو لم يكن من الممكن الحكم تلقائيًا، سيتم الرجوع إلى حجم الصورة المرجعية الأولى. سيتم تطبيع الأبعاد النهائية المحددة قبل تقديم الطلب إلى مضاعفات 16، مع قيود على الطول وإجمالي عدد البكسلات؛ إذا كنت بحاجة إلى تحكم مطلق، يرجى تمرير WIDTHxHEIGHT مباشرة. بعد الانتهاء من التوليد، لن يتم إعادة المحاولة تلقائيًا بسبب اختلاف بكسلات الإخراج، لتجنب تكاليف التوليد المكررة. حول معلمة n تدعم واجهة تحرير gpt-image-2 n > 1: يمكن أن تعيد طلب واحد العدد المقابل من نتائج التحرير. بشكل افتراضي، يتم احتساب gpt-image-2 و :reverse بناءً على عدد الصور الناجحة؛ بينما يتم احتساب :official بناءً على الاستخدام الفعلي للتوكن في الاستجابة الكاملة (تتراوح قيم n من 1 إلى 10). ينطبق نفس الشيء على gpt-image-1 / gpt-image-1.5، وكذلك سلسلة nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro. لاحظ أن response_format=b64_json يدعم فقط n=1، وعند استخدام n>1 يرجى استخدام الإرجاع الافتراضي عبر URL. إذا فشلت بعض الصور في التوليد، فسيتم إرجاع واحتساب الجزء الناجح فقط.
فيما يلي مثالان حقيقيان من زوايا مختلفة لتجربة قدرة تحرير gpt-image-2.

طريقة الاستدعاء الأولى: JSON + URL الصورة (موصى بها)

أرسل الطلب مباشرة بطريقة application/json، مع ملء حقل image برابط صورة واحدة، سيقوم النموذج بتحميل تلك الصورة وتحريرها وفقًا لـ prompt. على سبيل المثال، الصورة الأصلية أدناه تم إنشاؤها باستخدام gpt-image-2 كدليل علمي:

نرغب في تغييرها إلى ألوان “وضع الليل”. يمكننا استدعاءها بهذه الطريقة:
أو باستخدام Python:
نتيجة الإرجاع كما يلي:
الصورة بعد التحرير كما يلي:

يمكنك أن ترى أن هيكل الوحدة، تقسيم المعلومات، وتنسيق الخطوط تم الاحتفاظ بها بدقة، فقط تم عكس نظام الألوان إلى موضوع داكن.
تلميح: حقل image يدعم أيضًا تمرير مصفوفة، مثل "image": ["url1", "url2", "url3"]، يمكن تمرير ما يصل إلى 16 صورة مرجعية في وقت واحد، مما يسمح للنموذج بالرجوع إلى عدة صور لإجراء التحرير.
إرسال base64 مباشرة: يمكن أن يكون image (وكل عنصر في المصفوفة) أيضًا base64 — data:image/png;base64,... أو base64 عاري، مناسب للصور المحلية التي لا ترغب في تحميلها على موقع رفع الصور أولاً. على سبيل المثال:

طريقة الاستدعاء الثانية: JSON + عدة صور مرجعية

يدعم gpt-image-2 الرجوع إلى عدة صور في وقت واحد لتوليد النتيجة النهائية، مثل دمج عدة صور للمنتجات في سلة هدايا واحدة:

مثال على السيناريو: تغيير النمط + الحفاظ على الهيكل

إليك مثال آخر، استبدال رف كتب خشبي برف عائم حديث، مع الحفاظ بدقة على عدد وترتيب الكتب في كل طبقة. الصورة الأصلية (رف الكتب الخشبي الذي تم إنشاؤه باستخدام gpt-image-2):

الاستدعاء:
نتيجة التحرير (task_id: e9544dba-727e-44a2-81e1-223d49869380):

يمكنك أن ترى أن النمط والبيئة تم استبدالهما بالكامل وفقًا لتعليمات النص، لكن عدد الكتب في كل طبقة (1 / 3 / 7) لا يزال محفوظًا بدقة، وتم إضافة وعاء صغير من النباتات العصارية كما هو مطلوب.

طريقة الاستدعاء الثالثة: multipart/form-data (متوافقة مع OpenAI SDK)

إذا كنت قد بدأت بالفعل في استخدام SDK الرسمي لـ OpenAI Python، فإن طريقة التحميل الأصلية multipart/form-data تنطبق أيضًا، فقط قم بتغيير model إلى gpt-image-2:
عند استخدام SDK، تحتاج أولاً إلى استيراد متغيرين بيئيين، OPENAI_BASE_URL يجب أن يكون https://api.acedata.cloud/openai، و OPENAI_API_KEY يجب أن يكون الرمز المميز الذي حصلت عليه:

نماذج Nano Banana

سلسلة nano-banana تتصل أيضًا بـ /openai/images/edits في سيناريوهات التحرير، فقط قم بتغيير model إلى أي واحد من الجدول أدناه.
مهم: نطاق دعم المعلمات تتصل Nano Banana ببروتوكول OpenAI من خلال طبقة التكيف، وتدعم فقط المعلمات التالية: model، prompt، image، n.
  • يمكن تحميل image إما عبر multipart/form-data (سيتم تحويل الملفات المحلية تلقائيًا إلى base64)، أو يمكن تمرير سلسلة URL الصورة مباشرة عبر حقل النموذج.
  • لا تدعم المعلمات مثل mask، size، response_format؛ إذا تم ملؤها، سيتم تجاهلها. n > 1 مدعوم (1–10)، وسيتم إرجاع عدد نتائج التحرير المقابلة مع احتساب التكلفة.
  • تتبع بنية الإرجاع تنسيق OpenAI (data[].url)، لكن created ثابت عند 0، ولن يتم إرجاع b64_json، و revised_prompt دائمًا يساوي prompt الأصلي.

استدعاء عبر النموذج + URL الصورة

نتيجة الإرجاع كما يلي:
الصورة المعدلة:

استدعاء عبر النموذج + ملف محلي

ردود غير متزامنة

آلية ردود callback_url غير المتزامنة فعالة أيضًا مع nano-banana، وتدفق الاستدعاء متطابق تمامًا مع النماذج الأخرى، انظر القسم التالي ردود غير متزامنة.

الاستخدام الأساسي

الآن يمكنك استخدام الكود لإجراء الاستدعاء، أدناه هو استدعاء عبر CURL:
عند استخدام هذه الواجهة لأول مرة، نحتاج على الأقل إلى ملء أربعة محتويات، أحدها هو authorization، يمكنك اختياره مباشرة من القائمة المنسدلة. المعلمة الأخرى هي model، model هو نوع النموذج الذي نختار استخدامه من موقع OpenAI، هنا لدينا نموذج واحد رئيسي، يمكنك الاطلاع على التفاصيل في النماذج المقدمة. المعلمة الأخرى هي prompt، prompt هو النص الذي ندخله لتوليد الصورة. وأخيرًا، المعلمة هي image، هذه المعلمة تحتاج إلى مسار الصورة التي تحتاج إلى التحرير، والصورة التي تحتاج إلى التحرير موضحة في الصورة أدناه:
تلميح: يمكن أن تظهر image[] عدة مرات لتحميل صور مرجعية متعددة، مثل -F "image[]=@a.png" -F "image[]=@b.png"، تدعم نماذج GPT Image ما يصل إلى 16 صورة (كل صورة لا تتجاوز 50 ميجابايت، بصيغة png/webp/jpg). إذا تجاوزت العدد، ستعود 400.

نموذج استدعاء Python بنفس التأثير:
عند استدعاء Python، نحتاج أولاً إلى استيراد متغيرين بيئيين، أحدهما OPENAI_BASE_URL، يمكن تعيينه إلى https://api.acedata.cloud/openai، والآخر هو متغير الاعتماد OPENAI_API_KEY، هذه القيمة يتم الحصول عليها من authorization، في نظام Mac OS يمكنك تعيين المتغيرات البيئية باستخدام الأمر التالي:
بعد الاستدعاء، سنجد أنه تم إنشاء صورة في الدليل الحالي باسم gift-basket.png، والنتيجة المحددة كما يلي:

这样我们就完成了对图片的编辑操作,目前 Edits 接口共支持 gpt-image-1gpt-image-2 两种模型,其中 gpt-image-2 是当前推荐使用的模型,详见上文 GPT-Image-2 模型 一节。

异步回调

由于 OpenAI Images Edits API 编辑图片的时间可能相对较长,如果 API 长时间无响应,HTTP 请求会一直保持连接,导致额外的系统资源消耗,所以本 API 也提供了异步回调的支持。 整体流程是:客户端发起请求的时候,额外指定一个 callback_url 字段,客户端发起 API 请求之后,API 会立马返回一个结果,包含一个 task_id 的字段信息,代表当前的任务 ID。当任务完成之后,编辑图片的结果会通过 POST JSON 的形式发送到客户端指定的 callback_url,其中也包括了 task_id 字段,这样任务结果就可以通过 ID 关联起来了。 下面我们通过示例来了解下具体怎样操作。 首先,Webhook 回调是一个可以接收 HTTP 请求的服务,开发者应该替换为自己搭建的 HTTP 服务器的 URL。此处为了方便演示,使用一个公开的 Webhook 样例网站 https://webhook.site/,打开该网站即可得到一个 Webhook URL,如图所示: 将此 URL 复制下来,就可以作为 Webhook 来使用,此处的样例为 https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab 接下来,我们可以设置字段 callback_url 为上述 Webhook URL,同时填入相应的参数,如以下代码所示:
调用之后,可以发现会立即得到一个结果,如下:
稍等片刻,我们可以在 Webhook URL 上观察到编辑图片的结果,内容如下:
可以看到结果中有一个 task_id 字段,data 字段包含了和同步调用一样的图片编辑结果,通过 task_id 字段即可实现任务的关联。

错误处理

在调用 API 时,如果遇到错误,API 会返回相应的错误代码和信息。例如:
  • 400 token_mismatched:请求错误,可能是由于缺少或无效的参数。
  • 400 api_not_implemented:请求错误,可能是由于缺少或无效的参数。
  • 401 invalid_token:未授权,授权令牌无效或缺失。
  • 429 too_many_requests:请求过多,您已超出速率限制。
  • 500 api_error:内部服务器错误,服务器出现问题。

错误响应示例

结论

通过本文档,您已经了解了如何使用 OpenAI Images Edits API 轻松使用官方 OpenAI 的图像编辑功能。希望本文档能帮助您更好地对接和使用该 API。如有任何问题,请随时联系我们的技术支持团队。