
لطالما كانت ميزة الإشارة إلى الشخصيات (Character Reference) في واجهة برمجة تطبيقات Sora 2 محط اهتمام المطورين. في هذا المقال، سنقارن بين واجهة برمجة تطبيقات التوجيه الرسمي (Official Forward) وواجهة برمجة تطبيقات الهندسة العكسية الرسمية (Official Reverse) من حيث الإشارة إلى الشخصيات، ودعم المعرفات (ID)، والتكلفة، لنقدم لك نصائح واضحة للاختيار.
القيمة الجوهرية: بعد قراءة هذا المقال، ستعرف تماماً أي خيار من واجهات Sora 2 API هو الأنسب لك بناءً على احتياجاتك في اتساق الشخصيات، والتحكم في التكاليف، وتكامل الوظائف.
خلفية ميزة الإشارة إلى الشخصيات في Sora 2
في مجال توليد الفيديو بالذكاء الاصطناعي، يعد اتساق الشخصية أحد أكبر التحديات التي تواجه المبدعين. تتيح ميزة الشخصيات (Character) في Sora 2 للمستخدمين القيام بما يلي:
| الميزة الوظيفية | الشرح | سيناريوهات التطبيق |
|---|---|---|
| إنشاء الشخصية | استخراج سمات الشخصية من الفيديو لإنشاء معرف (ID) فريد | هوية العلامة التجارية، المذيعون الافتراضيون |
| الإشارة إلى الشخصية بالرمز @ | استخدام @CharacterID داخل الموجه (prompt) لاستدعاء الشخصية | المسلسلات، القصص المتسلسلة |
| الاتساق عبر الفيديوهات | الحفاظ على مظهر موحد لنفس الشخصية في مشاهد مختلفة | الإعلانات، الفيديوهات التعليمية |
| إدارة الشخصيات المتعددة | دعم إنشاء وإدارة عدة شخصيات قابلة لإعادة الاستخدام | الدراما متعددة الشخصيات |
الموقع الرسمي لميزة الشخصيات في Sora 2
وفقاً لوثائق OpenAI الرسمية، تم إطلاق ميزة Character Cameo في البداية على نسخة الويب من Sora (sora.chatgpt.com)، حيث تتيح للمستخدمين إنشاء شخصيات قابلة لإعادة الاستخدام عن طريق رفع الفيديوهات. تعمل هذه الميزة بشكل ممتاز على واجهة التطبيق والويب، ولكن هناك اختلافات واضحة في مدى دعمها على مستوى واجهة برمجة التطبيقات (API).
الوثائق الرسمية: help.openai.com/en/articles/12435986-generating-content-with-characters
الفروق الجوهرية بين التحويل الرسمي والعكس الرسمي لـ Sora 2

فهم الفرق بين "التحويل الرسمي" و"العكس الرسمي" هو الخطوة الأولى لاختيار الحل الصحيح.
ما هي واجهة برمجة تطبيقات التحويل الرسمي (Official Forward)
يشير التحويل الرسمي إلى طريقة الاستدعاء عبر نقاط نهاية OpenAI الرسمية (platform.openai.com):
- استخدام مفتاح API الرسمي للمصادقة.
- يمر عبر خوادم OpenAI الرسمية.
- المحاسبة بالثانية (0.10$ – 0.50$ للثانية).
- يخضع لسياسات مراجعة المحتوى الرسمية الصارمة.
ما هي واجهة برمجة تطبيقات العكس الرسمي (Official Reverse)
يشير العكس الرسمي إلى واجهة برمجة تطبيقات مغلفة من خلال الهندسة العكسية لتطبيق Sora على iOS أو نقاط نهاية الويب:
- يعتمد على واجهات تطبيق App المغلفة عكسيًا.
- يدعم ميزة الإشارة إلى الشخصية (Character Reference).
- المحاسبة لكل طلب (حوالي 0.12$ لكل فيديو).
- تجربة الوظائف أقرب إلى نسخة المستخدم النهائي.
جدول مقارنة الوظائف الأساسية
| بعد المقارنة | التحويل الرسمي (Forward) | العكس الرسمي (Reverse) | الفائز |
|---|---|---|---|
| دعم @معرف_الشخصية | ❌ غير مدعوم | ✅ دعم كامل | العكس الرسمي |
| واجهة إنشاء الشخصية | ❌ غير مدعوم | ✅ يدعم طريقتين | العكس الرسمي |
| اتساق الشخصية عبر الفيديوهات | ⚠️ فقط عبر reference_video | ✅ معرف الشخصية (Character ID) أصلي | العكس الرسمي |
| السعر (فيديو 10 ثوانٍ) | 1.00$ – 5.00$ | 0.12$ | العكس الرسمي |
| الاستقرار | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | التحويل الرسمي |
| الدعم الرسمي | ✅ مع ضمان SLA | ❌ لا يوجد دعم رسمي | التحويل الرسمي |
| مراجعة المحتوى | صارم (قيود على الوجوه البشرية) | مرن نسبيًا | العكس الرسمي |
| العلامة المائية | موجودة | غير موجودة | العكس الرسمي |
| المنصات المتاحة | OpenAI, Azure, APIYI | APIYI | – |
لماذا لا يدعم التحويل الرسمي @معرف_الشخصية
وفقًا للمناقشات في مجتمع مطوري OpenAI، يركز التصميم الحالي لواجهة برمجة التطبيقات الرسمية على:
- أولوية الواجهات القياسية: توفير ثلاثة أنماط إدخال قياسية: نص إلى فيديو، صورة إلى فيديو، وفيديو إلى فيديو.
- أمن وامتثال المحتوى: الكشف الصارم عن الوجوه يمنع استخدام صور مرجعية (reference_image) تحتوي على وجوه حقيقية.
- خارطة طريق ميزة الشخصيات: صرحت الشركة رسميًا بأن ميزة الإشارة إلى الشخصية ستتاح تدريجيًا لواجهة برمجة التطبيقات.
مناقشة المجتمع: community.openai.com/t/how-to-use-characters-funcion-by-api/1368202
التنفيذ التقني للإشارة إلى الشخصية في Sora 2 API

يساعد فهم التنفيذ الداخلي المطورين على اتخاذ خيارات أكثر ذكاءً.
الحل البديل في واجهة التحويل الرسمي
بما أن التحويل الرسمي لا يدعم @معرف_الشخصية، يحتاج المطورون لاستخدام بارامتر reference_video كبديل:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # استخدام واجهة APIYI الموحدة
)
# خيار التحويل الرسمي: استخدام reference_video للحفاظ على اتساق الشخصية
response = client.video.generate(
model="sora-2",
prompt="فتاة تشرب القهوة في مقهى",
reference_video="https://example.com/character_source.mp4",
influence_strength=0.8 # من 0 إلى 1، كلما زادت القيمة زاد اتساق الشخصية
)
محدودية خيار التحويل الرسمي:
- عند زيادة قيمة
influence_strengthقد يتأثر الإبداع في المشهد. - لا يمكن التحكم بدقة في أي سمات من الشخصية يجب الحفاظ عليها.
- صور الوجوه الحقيقية قد يتم حظرها بواسطة مراجعة المحتوى.
تنفيذ الإشارة إلى الشخصية في واجهة العكس الرسمي
توفر واجهة العكس الرسمي طريقتين لإنشاء الشخصيات:
الطريقة الأولى: استخراج شخصية من رابط فيديو
import requests
# استخدام واجهة العكس الرسمي من APIYI
base_url = "https://api.apiyi.com/v1"
# الخطوة 1: إنشاء الشخصية
create_response = requests.post(
f"{base_url}/sora/characters",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"video_url": "https://example.com/source_video.mp4",
"name": "coffee_girl",
"description": "فتاة ترتدي فستاناً أبيض"
}
)
character_id = create_response.json()["character_id"]
# صيغة العودة: char_abc123xyz
# الخطوة 2: استخدام @معرف_الشخصية لتوليد الفيديو
generate_response = requests.post(
f"{base_url}/sora/generate",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"prompt": f"@{character_id} تسير على الشاطئ عند غروب الشمس",
"duration": 10
}
)
الطريقة الثانية: استخراج شخصية من فيديو تم توليده بالفعل
# إذا كان لديك معرف مهمة فيديو تم توليده مسبقاً بواسطة Sora
extract_response = requests.post(
f"{base_url}/sora/characters/extract",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"task_id": "task_xyz789", # معرف مهمة التوليد السابقة
"name": "beach_girl"
}
)
عرض الكود الكامل لإدارة الشخصيات
import requests
import time
class SoraCharacterManager:
"""مدير شخصيات Sora - يدعم واجهة العكس الرسمي"""
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = "https://api.apiyi.com/v1" # واجهة APIYI الموحدة
self.headers = {"Authorization": f"Bearer {api_key}"}
def create_character(self, video_url: str, name: str, description: str = "") -> str:
"""إنشاء شخصية من فيديو"""
response = requests.post(
f"{self.base_url}/sora/characters",
headers=self.headers,
json={
"video_url": video_url,
"name": name,
"description": description
}
)
response.raise_for_status()
return response.json()["character_id"]
def list_characters(self) -> list:
"""سرد جميع الشخصيات"""
response = requests.get(
f"{self.base_url}/sora/characters",
headers=self.headers
)
response.raise_for_status()
return response.json()["characters"]
def generate_with_character(self, character_id: str, prompt: str, duration: int = 5) -> dict:
"""توليد فيديو باستخدام الشخصية"""
full_prompt = f"@{character_id} {prompt}"
response = requests.post(
f"{self.base_url}/sora/generate",
headers=self.headers,
json={
"prompt": full_prompt,
"duration": duration
}
)
response.raise_for_status()
return response.json()
def wait_for_video(self, task_id: str, timeout: int = 300) -> str:
"""انتظار اكتمال توليد الفيديو"""
start_time = time.time()
while time.time() - start_time < timeout:
response = requests.get(
f"{self.base_url}/sora/tasks/{task_id}",
headers=self.headers
)
result = response.json()
if result["status"] == "completed":
return result["video_url"]
elif result["status"] == "failed":
raise Exception(f"فشل التوليد: {result.get('error')}")
time.sleep(5)
raise TimeoutError("انتهت مهلة توليد الفيديو")
# مثال على الاستخدام
manager = SoraCharacterManager("YOUR_API_KEY")
# إنشاء شخصية
char_id = manager.create_character(
video_url="https://example.com/my_character.mp4",
name="product_mascot",
description="تميمة الشركة"
)
# توليد سلسلة من الفيديوهات
scenes = [
"يعمل في المكتب",
"يلقي خطاباً في غرفة الاجتماعات",
"يشرب القهوة في منطقة الاستراحة"
]
for scene in scenes:
task = manager.generate_with_character(char_id, scene, duration=5)
video_url = manager.wait_for_video(task["task_id"])
print(f"المشهد '{scene}' اكتمل: {video_url}")
🎯 نصيحة تقنية: في التطوير الفعلي، ننصح بالحصول على صلاحيات الوصول لواجهتي التحويل الرسمي والعكس الرسمي عبر منصة APIYI (apiyi.com)، لتتمكن من التبديل بينهما مرونة حسب احتياجات المشروع.
سيناريوهات التوصية لاستخدام مراجع الشخصية في Sora 2 API
بعد توضيح الاختلافات التقنية، دعونا نقدم توصيات للاختيار بناءً على سيناريوهات محددة.
السيناريو الأول: حالات اختيار الـ API الرسمي (المحوّل)
| سيناريو الاستخدام | السبب | مؤشر التوصية |
|---|---|---|
| بيئة إنتاج على مستوى الشركات | الحاجة إلى ضمانات اتفاقية مستوى الخدمة (SLA) والدعم الفني الرسمي | ⭐⭐⭐⭐⭐ |
| متطلبات امتثال صارمة | القطاعات الخاضعة للرقابة مثل التمويل والرعاية الصحية | ⭐⭐⭐⭐⭐ |
| عدم الحاجة لاتساق الشخصيات | إنشاء محتوى مستقل في كل مرة | ⭐⭐⭐⭐ |
| مستخدمو نظام Azure | وجود اشتراك Azure OpenAI فعلي | ⭐⭐⭐⭐ |
نموذج المستخدم المثالي:
- فرق تطبيقات الذكاء الاصطناعي في الشركات المدرجة.
- المشاريع التي تتطلب فواتير ضريبية وعقوداً رسمية.
- السيناريوهات التي تتطلب استقراراً فائقاً للخدمة.
السيناريو الثاني: حالات اختيار الـ API العكسي
| سيناريو الاستخدام | السبب | مؤشر التوصية |
|---|---|---|
| سلسلة فيديوهات لشخصية محددة | الحاجة إلى استخدام معرف الشخصية (@character_id) للحفاظ على الاتساق | ⭐⭐⭐⭐⭐ |
| المشاريع الحساسة للتكلفة | فيديو مدته 10 ثوانٍ مقابل 0.12 دولار فقط | ⭐⭐⭐⭐⭐ |
| صناعة المحتوى الإبداعي | مراجعة محتوى أكثر مرونة | ⭐⭐⭐⭐ |
| التحقق السريع من النماذج الأولية | بدون علامة مائية وبتكلفة منخفضة | ⭐⭐⭐⭐ |
| المطورون الأفراد | دفع مرن بدون حد أدنى للاستهلاك | ⭐⭐⭐⭐ |
نموذج المستخدم المثالي:
- صناع المحتوى للفيديو القصير.
- مطورو الألعاب المستقلون.
- فرق إدارة المذيعين الافتراضيين (Virtual Idol).
- الشركات الناشئة في تطبيقات فيديو الذكاء الاصطناعي.
السيناريو الثالث: استخدام كلا النوعين معاً
بالنسبة للمشاريع المعقدة، قد يكون الاستخدام المختلط لنوعي الـ API هو الحل الأمثل:
class HybridSoraClient:
"""عميل Sora هجين - اختيار ذكي بين الرسمي والعكسي"""
def __init__(self, api_key: str):
self.base_url = "https://api.apiyi.com/v1"
self.api_key = api_key
def generate(self, prompt: str, use_character: bool = False,
character_id: str = None, priority: str = "cost"):
"""
توجيه ذكي لطلبات الإنشاء
Args:
prompt: وصف الفيديو (الموجه)
use_character: هل سيتم استخدام شخصية
character_id: معرف الشخصية
priority: الأولوية - "cost" (التكلفة أولاً) / "stability" (الاستقرار أولاً)
"""
# منطق اتخاذ القرار
if use_character and character_id:
# الحاجة لميزة الشخصية تتطلب استخدام الـ API العكسي
return self._generate_reverse(prompt, character_id)
elif priority == "stability":
# الأولوية للاستقرار، استخدام الـ API الرسمي
return self._generate_official(prompt)
else:
# الأولوية للتكلفة، استخدام الـ API العكسي
return self._generate_reverse(prompt)
def _generate_official(self, prompt: str):
"""استخدام الـ API الرسمي"""
# التنفيذ الرسمي...
pass
def _generate_reverse(self, prompt: str, character_id: str = None):
"""استخدام الـ API العكسي"""
# التنفيذ العكسي...
pass
تحليل مقارنة أسعار Sora 2 API
تُعد التكلفة عاملاً حاسماً عند اختيار حل الـ API.
مقارنة الأسعار التفصيلية
| بند الفوترة | الـ API الرسمي | الـ API العكسي | فارق التكلفة |
|---|---|---|---|
| فيديو 5 ثوانٍ | $0.50-2.50 | $0.12 | 4-20 ضعفاً |
| فيديو 10 ثوانٍ | $1.00-5.00 | $0.12 | 8-40 ضعفاً |
| فيديو 20 ثانية | $2.00-10.00 | $0.12 | 16-80 ضعفاً |
| إنشاء شخصية | غير مدعوم | مجاني | – |
| إشارة لشخصية | غير مدعوم | متضمن في رسوم الإنشاء | – |
تقدير التكلفة الشهرية
بفرض أن فريق صناعة محتوى فيديو يحتاج إلى إنتاج 500 فيديو شهرياً، مدة كل منها 10 ثوانٍ:
| الخيار | سعر الوحدة | التكلفة الشهرية | التكلفة السنوية |
|---|---|---|---|
| الـ API الرسمي (Standard) | $1.00 | $500 | $6,000 |
| الـ API الرسمي (Pro) | $5.00 | $2,500 | $30,000 |
| الـ API العكسي | $0.12 | $60 | $720 |
💰 تحسين التكلفة: بالنسبة للمشاريع ذات الميزانية المحدودة، يمكن للواجهة العكسية التي يوفرها APIYI (apiyi.com) توفير أكثر من 80% من التكاليف. وتتضح هذه الميزة بشكل أكبر عند إنشاء سلاسل المحتوى التي تتطلب اتساقاً في الشخصيات.
لقد أجرينا مقارنة تجريبية لاتساق الشخصية بين الحلين المتاحين.
منهجية الاختبار
| بند الاختبار | المعايير |
|---|---|
| شخصية الاختبار | شخصية أنثوية افتراضية (ليست حقيقية) |
| عدد السيناريوهات | 5 سيناريوهات مختلفة |
| مرات التوليد لكل سيناريو | 3 مرات |
| أبعاد التقييم | اتساق الوجه، اتساق الملابس، الأسلوب العام |
نتائج الاختبار
| بُعد التقييم | API رسمي (توجيه) reference_video | API رسمي (عكسي) @معرف_الشخصية | ملاحظات التقييم |
|---|---|---|---|
| اتساق الوجه | 65/100 | 92/100 | النسخة العكسية أكثر استقراراً بوضوح |
| اتساق الملابس | 50/100 | 88/100 | النسخة الرسمية (توجيه) تظهر تغييراً أكبر |
| الأسلوب العام | 70/100 | 90/100 | النسخة العكسية أكثر توحيداً |
| الثبات عبر السيناريوهات | 55% | 90%+ | متوسط 5 سيناريوهات |
أهم النتائج
-
محدودية reference_video في API الرسمي (توجيه):
- تعيين
influence_strengthبدرجة عالية جداً قد يحد من التعبير الإبداعي. - تعيينه بدرجة منخفضة يؤدي إلى تراجع اتساق الشخصية.
- تختلف نقطة التوازن المثلى حسب الشخصية والسيناريو.
- تعيين
-
مزايا @معرف_الشخصية في API الرسمي (عكسي):
- يتم تخزين خصائص الشخصية بشكل دائم في النظام.
- مطابقة تلقائية عند الاستدعاء، دون الحاجة لضبط المعلمات (Parameters).
- يدعم ظهور شخصيات متعددة في آن واحد.
الأسئلة الشائعة
س1: متى سيدعم API الرسمي (توجيه) خاصية @معرف_الشخصية؟
وفقاً لتصريحات OpenAI الرسمية، سيتم فتح ميزة مرجع الشخصية (character reference) تدريجياً للـ API، ولكن لم يتم الإعلان عن جدول زمني محدد. حالياً (يناير 2026)، لا يزال API التوجيه الرسمي لا يدعم هذه الميزة. إذا كان مشروعك يحتاج بشكل عاجل لاتساق الشخصية، ننصح باستخدام API الرسمي (عكسي) كحل مؤقت.
س2: كيف يتم ضمان استقرار API الرسمي (عكسي)؟
يعتمد API الرسمي (عكسي) على الهندسة العكسية لنقاط نهاية تطبيق iOS، ويعتمد استقراره على تغييرات سياسة عميل OpenAI. في 10 يناير 2026، قامت OpenAI بتعديل سياسة الوصول، ولكن منصة APIYI أتمت التكيف مع التغيير خلال ساعات قليلة. ننصح المطورين بتنفيذ منطق "تراجع تلقائي" (fallback) للتحويل إلى API التوجيه الرسمي في حال عدم توفر النسخة العكسية.
س3: هل يمكن استخدام نفس الشخصية في كلا النوعين من الـ API؟
لا، لا يمكن ذلك. "معرف الشخصية" (Character ID) الذي يتم إنشاؤه في النسخة العكسية فريد لهذا النظام ولا يمكن استخدامه في API التوجيه الرسمي. أنظمة الشخصيات في كلا الـ API مستقلة تماماً. إذا كنت بحاجة للحفاظ على اتساق الشخصية بينهما، فالخيار الوحيد هو تقديم نفس الـ reference_video كمرجع.
س4: كيف أختار الحل المناسب لي؟
معايير بسيطة للقرار:
- تحتاج @معرف_الشخصية ← اختر API الرسمي (عكسي).
- تحتاج إلى SLA رسمي ← اختر API الرسمي (توجيه).
- التكلفة هي الأولوية ← اختر API الرسمي (عكسي).
- متطلبات امتثال عالية ← اختر API الرسمي (توجيه).
يمكنك الحصول على كلا الواجهتين والتبديل بينهما بمرونة حسب الحاجة.
س5: هل هناك مخاطر قانونية في استخدام API الرسمي (عكسي)؟
الـ API العكسي هو في الأساس تغليف برمجياً لمنتج موجه للمستهلكين. ننصح المستخدمين بالالتزام بشروط استخدام OpenAI وعدم استخدامه لتوليد محتوى مخالف. يُفضل استشارة مستشار قانوني قبل الاستخدام التجاري الواسع.
الملخص
يتمتع كل من الـ API الرسمي والـ API المعكوس لـ Sora 2 بمكانته ومميزاته الخاصة:
| الخيار | المزايا الأساسية | القيود الأساسية | السيناريوهات الموصى بها |
|---|---|---|---|
| API رسمي | استقرار عالٍ، دعم رسمي متوفر | لا يدعم @CharacterID، التكلفة مرتفعة | بيئات الإنتاج على مستوى المؤسسات |
| API معكوس | يدعم @CharacterID، تكلفة منخفضة | الاستقرار يعتمد على صيانة الطرف الثالث | إنشاء محتوى لسلسلة شخصيات |
💡 نصيحة الاختيار: يعتمد اختيار نوع الـ API بشكل أساسي على ما إذا كنت بحاجة إلى ميزة "اتساق الشخصيات". فإذا كنت ترغب في إنتاج سلسلة فيديوهات تعتمد على شخصيات محددة، فإن ميزة @CharacterID في الـ API المعكوس تكاد تكون خياراً لا غنى عنه؛ أما إذا كان تركيزك ينصب على الاستقرار والدعم الرسمي، فإن الـ API الرسمي هو الخيار الأكثر أماناً. ننصح بالوصول إلى كلا النوعين من الـ API عبر منصة APIYI (apiyi.com)، والتبديل بينهما بمرونة وفقاً لمتطلبات كل مشروع، مما يتيح لك الاستفادة من ميزات الشخصيات وتوفير التكاليف في الـ API المعكوس، مع ضمان استقرار الخدمة عبر الـ API الرسمي عند الحاجة.
المراجع
-
وثائق ميزات الشخصيات في OpenAI Sora: تعريف رسمي بكيفية إنشاء واستخدام الشخصيات
- الرابط:
help.openai.com/en/articles/12435986-generating-content-with-characters
- الرابط:
-
مناقشات مجتمع مطوري OpenAI: حالة دعم ميزات الشخصيات عبر الـ API
- الرابط:
community.openai.com/t/how-to-use-characters-funcion-by-api/1368202
- الرابط:
-
صفحة الإصدار الرسمي لـ Sora 2: عرض المنتج وتحديثات الميزات
- الرابط:
openai.com/index/sora-2/
- الرابط:
-
وثائق OpenAI API – Sora 2: شرح واجهات الـ API الرسمية
- الرابط:
platform.openai.com/docs/models/sora-2
- الرابط:
هذا المقال من إعداد فريق APIYI، للتبادل التقني يرجى زيارة apiyi.com
