الانتقال إلى المحتوى الرئيسي
OpenAI خدمة تحرير الصور، يمكن إدخال أي عدد من الصور والتعليمات، وإخراج الصور المعدلة. تتناول هذه الوثيقة بشكل رئيسي عملية استخدام OpenAI Images Edits API، من خلاله يمكننا استخدام وظيفة تحرير الصور الرسمية من OpenAI بسهولة.

申请流程

لاستخدام OpenAI Images Edits API، يمكنك أولاً الذهاب إلى صفحة OpenAI Images Edits API والنقر على زر “Acquire” للحصول على الشهادات المطلوبة: إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل بعد، سيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، وبعد تسجيل الدخول والتسجيل، سيتم العودة تلقائيًا إلى الصفحة الحالية. عند التقديم لأول مرة، سيكون هناك حد مجاني متاح، يمكنك استخدام هذا API مجانًا.

基本使用

بعد ذلك يمكنك استخدام الكود لإجراء الاستدعاء، أدناه هو استدعاء باستخدام CURL:
curl -s -D >(grep -i x-request-id >&2) \
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
  -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F 'prompt=Create a lovely gift basket with these this items in it'
عند استخدام هذه الواجهة لأول مرة، نحتاج على الأقل إلى ملء أربعة محتويات، أحدها هو authorization، يمكن اختيارها مباشرة من القائمة المنسدلة. المعامل الآخر هو model، model هو نوع النموذج الذي نختار استخدامه من موقع OpenAI الرسمي، هنا لدينا نوع واحد من النماذج، يمكن الاطلاع على التفاصيل في النماذج التي نقدمها. المعامل الثالث هو prompt، prompt هو الكلمة الدالة التي ندخلها لتوليد الصورة. المعامل الأخير هو image، هذا المعامل يحتاج إلى مسار الصورة التي سيتم تحريرها، والصورة التي تحتاج إلى التحرير موضحة في الصورة أدناه:

مثال على استدعاء Python بنفس تأثير الاستدعاء:
import base64
from openai import OpenAI
client = OpenAI()

prompt = """
Generate a photorealistic image of a gift basket on a white background 
labeled 'Relax & Unwind' with a ribbon and handwriting-like font, 
containing all the items in the reference pictures.
"""

result = client.images.edit(
    model="gpt-image-1",
    image=[
        open("test.png", "rb")
    ],
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# Save the image to a file
with open("gift-basket.png", "wb") as f:
    f.write(image_bytes)
لاستخدام Python، نحتاج أولاً إلى استيراد متغيرين بيئيين، أحدهما OPENAI_BASE_URL، يمكن تعيينه إلى https://api.acedata.cloud/openai، والآخر هو متغير الشهادة OPENAI_API_KEY، هذه القيمة يتم الحصول عليها من authorization، في نظام Mac OS يمكن تعيين المتغيرات البيئية باستخدام الأوامر التالية:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
بعد الاستدعاء، سنجد أنه تم إنشاء صورة في الدليل الحالي باسم gift-basket.png، والنتيجة المحددة كما يلي:

بهذه الطريقة، أكملنا عملية تحرير الصورة، حاليًا تدعم مهام Edits الرسمية نوعين من النماذج، وهما: dall-e-2، gpt-image-1.

异步回调

نظرًا لأن OpenAI Images Edits API قد يستغرق وقتًا طويلاً لتحرير الصور، إذا لم يكن هناك استجابة من API لفترة طويلة، ستظل طلبات HTTP متصلة، مما يؤدي إلى استهلاك موارد النظام الإضافية، لذا فإن هذه API توفر أيضًا دعمًا للردود غير المتزامنة. العملية العامة هي: عندما يقوم العميل بإرسال الطلب، يحدد حقل callback_url إضافي، بعد أن يقوم العميل بإرسال طلب API، ستقوم API بإرجاع نتيجة على الفور، تحتوي على حقل task_id، الذي يمثل معرف المهمة الحالية. عند الانتهاء من المهمة، سيتم إرسال نتيجة تحرير الصورة إلى callback_url المحدد من قبل العميل عبر POST JSON، والذي يتضمن أيضًا حقل task_id، بحيث يمكن ربط نتيجة المهمة من خلال المعرف. دعونا نفهم كيفية القيام بذلك من خلال مثال. أولاً، ردود Webhook هي خدمة يمكنها استقبال طلبات HTTP، يجب على المطورين استبدالها بعنوان URL الخاص بخادم HTTP الذي قاموا بإنشائه. هنا، لتسهيل العرض، نستخدم موقع Webhook عام https://webhook.site/، افتح هذا الموقع للحصول على عنوان URL لـ Webhook، كما هو موضح في الصورة: انسخ هذا URL، يمكنك استخدامه كـ Webhook، والعينة هنا هي https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. بعد ذلك، يمكننا تعيين الحقل callback_url إلى عنوان URL الخاص بـ Webhook المذكور أعلاه، مع ملء المعاملات المناسبة، كما هو موضح في الكود أدناه:
curl -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F "prompt=Create a lovely gift basket with these items in it" \
  -F "callback_url=https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
بعد الاستدعاء، يمكننا أن نلاحظ أننا حصلنا على نتيجة على الفور، كما يلي:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
بعد قليل، يمكننا ملاحظة نتيجة تحرير الصورة على عنوان URL الخاص بـ Webhook، المحتوى كما يلي:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
يمكننا أن نرى أن النتيجة تحتوي على حقل task_id، وحقل data يحتوي على نفس نتيجة تحرير الصورة كما في الاستدعاء المتزامن، من خلال حقل task_id يمكن ربط المهمة.

错误处理

عند استدعاء API، إذا واجهت خطأ، ستقوم API بإرجاع رمز الخطأ والمعلومات المناسبة. على سبيل المثال:
  • 400 token_mismatched: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 400 api_not_implemented: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 401 invalid_token: غير مصرح به، رمز تفويض غير صالح أو مفقود.
  • 429 too_many_requests: عدد كبير جدًا من الطلبات، لقد تجاوزت الحد الأقصى لمعدل الطلبات.
  • 500 api_error: خطأ داخلي في الخادم، حدث خطأ ما على الخادم.

错误响应示例

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

结论

من خلال هذه الوثيقة، لقد تعرفت على كيفية استخدام واجهة برمجة تطبيقات تحرير الصور من OpenAI بسهولة لاستخدام ميزات تحرير الصور الرسمية من OpenAI. نأمل أن تساعدك هذه الوثيقة في التوصيل واستخدام هذه الواجهة بشكل أفضل. إذا كان لديك أي أسئلة، فلا تتردد في الاتصال بفريق الدعم الفني لدينا.