دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

شرح استعمال ChatGPT2API: بناء API متوافق مع OpenAI لتوليد وتعديل الصور

فهاد المقال غادي نقدّمو القدرات الأساسية ديال ChatGPT2API، وطرق النشر باستعمال Docker والتطوير المحلي، وغادي نشرحو بأمثلة curl توليد الصور، وتعديلها، والتعاليق المرتابطة بنقط محددة، وتعديل الصور بالخطوط التوضيحية، مع شرح إعدادات التخزين، والوكيل، ومجموعة الحسابات.

شرح ChatGPT2API لبناء API متوافق مع OpenAI لتوليد وتعديل الصور

مقدمة على المشروع وتنبيهات الاستعمال

ChatGPT2API هو مشروع دار ترتيب عكسي وتغليف للإمكانيات المرتابطة بالموقع الرسمي ديال ChatGPT، وكيقدم API وبروكسي متوافقين مع OpenAI لسيناريوهات توليد الصور، تعديل الصور، وتعديل مجموعات ديال الصور. المشروع فيه حتى ورشة رسم أونلاين، وتدبير مجموعة الحسابات، وطرق مختلفة لاستيراد الحسابات، بالإضافة لإمكانية النشر الذاتي باستعمال Docker.

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

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

واجهة ورشة الصور ديال ChatGPT2API

الوظائف الرئيسية

واجهة متوافقة مع OpenAI

  • متوافقة مع واجهة توليد الصور POST /v1/images/generations.
  • متوافقة مع واجهة تعديل الصور POST /v1/images/edits.
  • كتوفر واجهات متوافقة مخصصة للصور: POST /v1/chat/completions و POST /v1/responses.
  • كتعرض لائحة الصور والنماذج المرتابطة بها عبر GET /v1/models.
  • كتدعم استعمال المعامل n لإرجاع عدة نتائج مولدة، والحد الحالي فالخلفية هو من 1 حتى 4 صور.
  • كتدعم توليد ملفات PPT وPSD قابلة للتعديل.

الرسم والتعديل أونلاين

الورشة المدمجة كتدعم توليد الصور من النص، وتعديل الصور المرجعية، وتعديل مجموعات ديال الصور. ويمكن اختيار gpt-image-2 وcodex-gpt-image-2 وauto، بالإضافة لأسماء GPT المستعارة المذكورة فـ README. الواجهة كتقدم حتى تاريخ جلسات الصور، والحفظ المحلي، والحذف والمسح، وتخزين مؤقت لروابط الصور فالخادم، وتتبع تقدم التوليد، والتحميل الكسول، وتذكر موضع التمرير.

تدبير مجموعة الحسابات

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

المشروع كيدعم بروكسيات HTTP وHTTPS وSOCKS5 وSOCKS5H، بالإضافة لبيئة تشغيل مستقرة للبروكسي مكونة من WARP وPrivoxy وFlareSolverr. طرق استيراد الحسابات كتضم CPA JSON المحلي، وخادم CPA عن بعد، وخادم sub2api، وaccess_token.

واجهة تدبير مجموعة حسابات ChatGPT2API

النشر السريع باستعمال Docker

1. جلب المشروع وتشغيل الخدمة

من الأفضل تبداو بتشغيل الخدمة كاملة باستعمال Docker Compose. نفذو الأوامر التالية لنسخ المشروع وتشغيله فالخلفية:

git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
docker compose pull
docker compose up -d

قبل التشغيل، خاصكم تضبطو auth-key فـ config.json. ويمكن حتى تستعملو المتغير البيئي CHATGPT2API_AUTH_KEY فـ docker-compose.yml باش تغطيو على هاد الإعداد.

افتراضيا، عنوان لوحة الويب هو http://localhost:3000، والعنوان الأساسي ديال API هو http://localhost:3000/v1، والبيانات كتتحفظ فالمجلد ./data داخل مجلد المشروع. بعض أمثلة curl فـ README كتستعمل localhost:8000؛ وقت الاستدعاء الفعلي، بدلو المنفذ حسب تعيينات المنافذ ديال Compose ديالكم.

2. الدخول للوحة الويب

من بعد ما تبدا الخدمة، حلو http://localhost:3000 فالمتصفح. فالمرة الأولى، خاصكم تكملو أولا الإعدادات الضرورية ديال مفتاح التفويض والحسابات والبروكسي، ومن بعد جربو توليد الصور أو تعديلها من خلال الورشة.

3. تحديث الخدمة

ملي تبغيو تحدثو الصور لاحقا، يمكنكم تنفذو:

docker compose pull
docker compose up -d

تفعيل بروكسي مستقر باستعمال WARP وFlareSolverr

إلى كانت طلبات الصور كتتعرض بزاف للحظر من طرف Cloudflare، يمكنكم تستعملو حل النشر المرفق مع المشروع، والمكون من WARP وPrivoxy وFlareSolverr:

cp .env.example .env
docker compose -f docker-compose.warp.yml pull
docker compose -f docker-compose.warp.yml up -d

إعداد Compose هذا غادي يشغل الخدمات التالية:

  • warp-proxy: كيوفر مخرج SOCKS5 ديال WARP.
  • privoxy: كيحول SOCKS5 ديال WARP لبروكسي HTTP.
  • flaresolverr: كيجدد Cloudflare clearance.
  • init-config: كيكتب إعداد proxy_runtime الافتراضي بطريقة قابلة لإعادة التنفيذ بدون آثار إضافية.
  • app: كيشغل الخدمة الرئيسية ديال ChatGPT2API.

افتراضيا، غير الطلبات الموجهة لـ OpenAI أو ChatGPT من المصدر غادي تستعمل البروكسي المستقر، أما سلاسل المساعدة بحال بريد الحساب وCPA فما غاديش يتم التحكم فيها إجباريا. أولوية البروكسي هي: البروكسي المضبوط فالحساب نفسه، وبيئة تشغيل البروكسي المستقر، والبروكسي المحدد بشكل صريح، والبروكسي العام القديم. يمكنكم تبدلو المنافذ ومعاملات التشغيل فـ .env، وتقدرو حتى تختابرو البروكسي وclearance من صفحة الإعدادات فالخلفية.

بيئة التطوير المحلية

تشغيل الخلفية

README ديال المشروع كيستعمل uv لتدبير تبعيات Python. نفذو الأوامر التالية لتشغيل الخلفية:

git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
uv sync
uv run main.py

تشغيل الواجهة الأمامية

من بعد الدخول لمجلد Web، استعملو Bun لتثبيت التبعيات وتشغيل خادم التطوير:

cd chatgpt2api/web
bun install
bun run dev

إعداد خلفية تخزين البيانات

المشروع كيختار طريقة التخزين من خلال المتغير البيئي STORAGE_BACKEND:

  • json: ملفات JSON محلية، وهي الطريقة الافتراضية.
  • sqlite: قاعدة بيانات SQLite محلية.
  • postgres: PostgreSQL خارجي، وكيحتاج إعداد DATABASE_URL.
  • git: مستودع Git خاص، وكيحتاج إعداد GIT_REPO_URL وGIT_TOKEN.

مثلا، عند استعمال PostgreSQL، يمكنكم تزيدو فمتغيرات بيئة Compose:

environment:
  - STORAGE_BACKEND=postgres
  - DATABASE_URL=postgresql://user:password@host:5432/dbname

استدعاء API ديال توليد الصور

جميع واجهات AI خاصها تحمل رؤوس طلب التفويض التالية:

Authorization: Bearer <auth-key>

عيطو أولا على واجهة لائحة النماذج باش تشوفو النماذج المعروضة حاليا:

curl http://localhost:8000/v1/models \
  -H "Authorization: Bearer <auth-key>"

توليد الصور من النص كيستعمل POST /v1/images/generations. المثال التالي غادي يولد قطة عائمة فالفضاء:

curl http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "قطة عائمة فالفضاء",
    "n": 1,
    "response_format": "b64_json"
  }'

خاص model يستعمل قيمة متاحة وراجعة من /v1/models، وREADME كيوصي باستعمال gpt-image-2 لتوليد الصور. يمكن ضبط n لتحديد العدد ديال الصور المولدة، ولكن الخلفية الحالية محدداه من 1 حتى 4؛ أما مثال response_format فكيستعمل b64_json.

استدعاء API ديال تعديل الصور

رفع صورة محلية باستعمال multipart

واجهة تعديل الصور كتدعم رفع ملف محلي، ووصف التغيير المطلوب باستعمال prompt:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -F "model=gpt-image-2" \
  -F "prompt=بدل هاد الصورة لستايل منظر ليلي سايبربانك" \
  -F "n=1" \
  -F "image=@./input.png"

تعديل صورة عبر URL

يمكن حتى تمريرو رابط الصورة بصيغة JSON:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "بدل هاد الصورة لستايل منظر ليلي سايبربانك",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ]
  }'

تعديل منطقة محددة باستعمال نقاط التعليق

من خلال مصفوفة comments يمكن محاكاة تعديل الصور باستعمال التعليقات بحال النسخة الويب. القيمتان x وy كيدعمو أرقاما مطبعة من 0 حتى 1، أو سلاسل مئوية، أو أرقاما من 0 حتى 100:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "خلّي باقي الأجزاء كيف ما هي",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ],
    "comments": [
      {"x": "27.5%", "y": "70%", "text": "بدّل إبريق الشاي الخزفي السماوي بإبريق شاي من الخزف الأبيض بحواف ذهبية"},
      {"x": 0.36, "y": 0.315, "text": "زيد دبوس شعر ذهبي آخر فوق الكعكة"}
    ]
  }'

إلى كان الطلب فيه comments، تقدر تحيد prompt. وكل تعليق يقدر يستعمل image_index باش يحدّد صورة الإدخال المعنية، والقيمة الافتراضية هي 0.

التعديل باستعمال خطوط التعليق

المشروع كيدعم حتى قلم التعليق فنسخة الويب. ملي كتستعمل markup_strokes، كتكون points عبارة عن خط منكسر بإحداثيات موحّدة، واللون الافتراضي ديال color هو #FF3B30، أما width فهي نسبة عرض الخط مقارنة مع الضلع الأقصر فالصورة:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "بدّل اللافتة النيون اللي داخل الدائرة للون الأخضر",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ],
    "markup_strokes": [
      {
        "points": [[0.62, 0.18], [0.78, 0.22], [0.75, 0.42], [0.6, 0.38], [0.62, 0.18]],
        "color": "#FF3B30",
        "width": 0.01
      }
    ]
  }'

إلى كانت عندك من قبل صورة PNG شفافة فيها خطوط بنفس نسبة أبعاد الصورة الأصلية، تقدر حتى ترفعها بطريقة multipart باستعمال ملف markup. المشروع غادي يحاذي الخطوط مع صورة الإدخال ويدمجهم، ومن بعد ينفّذ التعديل.

استعمال واجهات Chat Completions وResponses المتوافقة

Chat Completions

POST /v1/chat/completions كتوفّر توافق مع حالات النص، والبحث فالويب، والصور، ولكن README كيوضّح أنها ماشي وكيل محادثة عام ومتكامل. هادي عيّنة لتوليد صورة:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-image-2",
    "messages": [
      {
        "role": "user",
        "content": "ولّد صورة لقطة سايبربانك فزنقة من زناقي طوكيو فالليل والمطر كيطيح"
      }
    ],
    "n": 1
  }'

الحقل messages فهاد الواجهة يقدر يحمل محتوى ديال طلبات النص والبحث والصور؛ وtools كتدعم أدوات البحث فالويب المذكورة فـREADME، أما stream فما زال فمرحلة الاختبار فحالات النص والبحث والصور.

Responses API

POST /v1/responses كتدعم استدعاء أداة توليد الصور ومنطق التوافق مع البحث فالويب، ولكنها حتى هي ماشي وكيل كامل ومتوافق مع Responses API العامة:

curl http://localhost:8000/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-5",
    "input": "ولّد صورة لأفق مدينة مستقبلية",
    "tools": [
      {
        "type": "image_generation"
      }
    ]
  }'

الحقل tools كيدعم image_generation وweb_search وweb_search_preview وweb_search_preview_2025_03_11. الاستجابة بالتدفق مطبّقة، ولكنها ما زالت قيد الاختبار.

نصائح للاستعمال المتقدم

  1. تحقّق أولاً من التفويض ولائحة النماذج: من بعد النشر، عيّط أولاً لـ/v1/models وتأكد باللي إعدادات auth-key والمنفذ صحيحة قبل ما تبدا طلبات الصور.
  2. اختار الواجهة الخلفية للتخزين بعقلانية: فالاختبارات الشخصية تقدر تستعمل JSON الافتراضي أو SQLite؛ وإلى احتجتي قاعدة بيانات خارجية، عاد أعدّ PostgreSQL وحافظ مزيان على سلسلة الاتصال.
  3. تعامل مع حجب Cloudflare: إلى كانت استقرارية الطلبات للجهة العليا ضعيفة، تبع أولاً إعداد وكيل مستقر باستعمال حل WARP Compose اللي كيوفّرو المشروع، واختبر الوكيل وclearance من لوحة الإدارة.
  4. تحكّم فمخاطر مجموعة الحسابات: نقّي دورياً الـTokenات اللي سالات الصلاحية، واستعمل البحث والتصفية والتحديث الجماعي باش تحافظ على حالة الحسابات، وتجنّب العمليات الجماعية أو الاستعمالات المسيئة اللي README كيمنعها على الحسابات.
  5. ميّز بين أسماء النماذج المستعارة: codex-gpt-image-2 مخصّص لحالات الرسم فـCodex، ومتاح غير لاشتراكات Plus وTeam وPro؛ والنماذج المتاحة فعلياً خاصها تتحدّد حسب النتيجة اللي كيرجّعها /v1/models.
  6. ردّ بالك لحدود الواجهات: Chat Completions وResponses موجّهتين أساساً لحالات النص والبحث والصور المذكورة فـREADME، وما خاصكش تستعملهم كوكيل عام ومتكامل.

الخلاصة

ChatGPT2API كتغلّف إمكانيات الصور المرتبطة بنسخة الويب ديال ChatGPT فواجهات على طريقة OpenAI، وكتوفّر حتى ورشة عمل على الإنترنت، وتحسينات لتعديل الصور، ومجموعة حسابات، وبيئة لتشغيل الوكلاء، وطرق متعددة للنشر. تقدر تبدا بنشر أساسي باستعمال Docker، ومن بعد تهيّأ واجهة التخزين، والوكيل المستقر، واستيراد الحسابات حسب الحاجة، وفي الأخير تربط مسار توليد وتعديل الصور عبر /v1/images/generations و/v1/images/edits. وخاصك دائماً تحترم إخلاء مسؤولية المشروع، وشروط خدمات الجهة العليا، والقوانين والأنظمة المحلية.