DEV Community

Cover image for كيفية اختبار Sakana Fugu API في Apidog
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

كيفية اختبار Sakana Fugu API في Apidog

لاختبار واجهة برمجة تطبيقات Sakana Fugu داخل Apidog، أنشئ طلب POST جديدًا إلى مسار chat/completions المتوافق مع OpenAI، أضف ترويسة Authorization: Bearer بمفتاحك، ثم أرسل حمولة JSON تستخدم النموذج fugu أو fugu-ultra. بما أن Fugu يقدم نقطة نهاية واحدة متوافقة مع OpenAI، يمكنك اختبارها بنفس نمط Chat Completions دون تبديل SDK. يمنحك Apidog مكانًا واحدًا لحفظ المتغيرات، تشغيل الطلبات، فحص SSE، قراءة usage، ومقارنة زمن الاستجابة بين النوع المتوازن وUltra.

جرّب Apidog اليوم

إذا كنت تريد مسار التكامل بالكود بدل الاختبار اليدوي والمراقبة، فراجع الدليل المصاحب لاستخدام واجهة برمجة تطبيقات Sakana Fugu. هذه المقالة تركز فقط على إعداد Fugu وتشغيله داخل Apidog.

ما الذي تختبره فعليًا مع Fugu

Fugu ليس نموذج دردشة تقليديًا. وفقًا لـ Sakana، هو نظام تنسيق متعدد الوكلاء يظهر لك كنموذج واحد خلف واجهة API واحدة. يقرر Fugu داخليًا هل يجيب مباشرة أم ينسق عدة نماذج لغوية، بما في ذلك حالات تكرارية منه، ثم يعيد لك استجابة واحدة.

لخلفية أوسع عن الفكرة، راجع شرح ماهية Sakana Fugu.

صورة لمخطط يوضح كيفية عمل Fugu

هذا يؤثر على طريقة الاختبار. في Apidog لا تقيس النص الناتج فقط، بل تراقب أيضًا:

  • زمن الاستجابة: هل رد النموذج بسرعة أم احتاج قفزة تنسيق؟
  • usage: كم رمزًا استخدمه الطلب الرئيسي؟
  • سلوك التدفق SSE: متى وصلت أول دلتا؟ وهل كان هناك انتظار طويل قبل بدء الرموز؟
  • الفرق بين fugu و fugu-ultra عند استخدام نفس المطالبة.

النوعان الأساسيان هما:

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

ملاحظة: اسم "Fugu Mini" كان مستخدمًا في بعض النسخ التجريبية أو التغطيات المبكرة. صفحة الإصدار تستخدم "Fugu" و"Fugu Ultra"، لذلك استخدم هذه الأسماء عند إعداد الاختبارات.

المتطلبات قبل البدء

تحتاج إلى:

  1. حساب في console.sakana.ai.
  2. مفتاح API من وحدة Sakana.
  3. عنوان URL الأساسي الخاص بـ Fugu من نفس الوحدة.
  4. مشروع في Apidog.

اعتبارًا من 2026-06-22، لم تنشر Sakana عنوان URL الأساسي في صفحة عامة. لا تخمنه. انسخه من وحدة التحكم واستخدمه كمتغير بيئة. في الأمثلة التالية، استبدل:

<YOUR_FUGU_BASE_URL_FROM_CONSOLE>
Enter fullscreen mode Exit fullscreen mode

بالقيمة التي تظهر لك داخل وحدة Sakana.

إعداد بيئة Fugu في Apidog

افتح Apidog، أنشئ مشروعًا جديدًا، ثم أنشئ بيئة باسم مثل:

Fugu Prod
Enter fullscreen mode Exit fullscreen mode

أضف متغيرين:

المتغير القيمة
fugu_base_url عنوان URL الأساسي من وحدة Sakana
fugu_key مفتاح API الخاص بك

بهذا الشكل يصبح الطلب قابلًا لإعادة الاستخدام:

{{fugu_base_url}}/chat/completions
Enter fullscreen mode Exit fullscreen mode

وتصبح ترويسة المصادقة:

Bearer {{fugu_key}}
Enter fullscreen mode Exit fullscreen mode

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

إنشاء طلب Fugu الأساسي

في Apidog، أنشئ طلب HTTP جديدًا بهذه الإعدادات:

POST {{fugu_base_url}}/chat/completions
Enter fullscreen mode Exit fullscreen mode

أضف الترويسات:

Authorization: Bearer {{fugu_key}}
Content-Type: application/json
Enter fullscreen mode Exit fullscreen mode

ثم ضع جسم الطلب التالي:

{
  "model": "fugu",
  "messages": [
    {
      "role": "system",
      "content": "You are a concise API testing assistant."
    },
    {
      "role": "user",
      "content": "Summarize what an SSE delta is in two sentences."
    }
  ],
  "stream": false
}
Enter fullscreen mode Exit fullscreen mode

أرسل الطلب. يجب أن تحصل على استجابة بنمط Chat Completions تحتوي عادةً على:

  • choices
  • message
  • usage
  • معرف الطلب أو الإكمال حسب ما يعيده المزود

احفظ الطلب باسم:

Fugu balanced
Enter fullscreen mode Exit fullscreen mode

تنسيق الحمولة يتبع مرجع OpenAI Chat Completions، وهذا هو الهدف من توافق Fugu مع OpenAI. معرّفات النموذج المذكورة عند الإطلاق هي fugu وfugu-ultra، وقد تظهر معرّفات مؤرخة مثل fugu-ultra-20260615. تحقق دائمًا من الاسم الدقيق داخل وحدة Sakana بدل تثبيت معرّف مؤرخ في الكود أو الاختبارات.

إنشاء طلب Fugu Ultra للمقارنة

انسخ طلب Fugu balanced داخل Apidog، ثم غيّر حقل model فقط:

{
  "model": "fugu-ultra",
  "messages": [
    {
      "role": "user",
      "content": "Reproduce the core result of the Trinity coordinator paper in plain language and note one limitation."
    }
  ],
  "stream": false
}
Enter fullscreen mode Exit fullscreen mode

احفظ النسخة باسم:

Fugu Ultra
Enter fullscreen mode Exit fullscreen mode

الآن لديك طلبان محفوظان:

  • نفس نقطة النهاية
  • نفس الترويسات
  • نفس متغيرات البيئة
  • اختلاف واحد فقط: قيمة model

هذا يجعل المقارنة نظيفة. شغّل نفس المطالبة على الطلبين، ثم قارن:

  • جودة الإجابة
  • زمن الاستجابة
  • prompt_tokens
  • completion_tokens
  • total_tokens

إذا أردت نمطًا أوسع لتسلسل ومقارنة عدة طلبات API، راجع دليل تنسيق اختبار API.

اختبار تدفق SSE من Fugu

لاختبار الاستجابة المتدفقة، غيّر stream إلى true:

{
  "model": "fugu-ultra",
  "messages": [
    {
      "role": "user",
      "content": "Walk through a one-shot chess opening analysis, step by step."
    }
  ],
  "stream": true
}
Enter fullscreen mode Exit fullscreen mode

عند تفعيل التدفق، تكون الاستجابة من نوع:

text/event-stream
Enter fullscreen mode Exit fullscreen mode

وتصل كسلسلة من أجزاء data:. مثال مبسط:

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"The"},"finish_reason":null}]}

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" Sicilian"},"finish_reason":null}]}

data: [DONE]
Enter fullscreen mode Exit fullscreen mode

ما يجب مراقبته في Apidog:

  1. الوقت قبل أول delta

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

  2. ثبات التدفق بعد البداية

    بعد بدء الرموز، راقب هل تأتي الدلتا بشكل مستمر أم على دفعات.

  3. نهاية التدفق

    يجب أن ينتهي التدفق بـ:

   data: [DONE]
Enter fullscreen mode Exit fullscreen mode

عادةً يحمل الجزء الأول معلومات مثل role، ثم تحمل الأجزاء التالية content تدريجيًا، وأخيرًا يظهر finish_reason.

قراءة usage ومقارنة التكلفة

في الطلبات غير المتدفقة، افتح كائن usage في الاستجابة:

{
  "usage": {
    "prompt_tokens": 38,
    "completion_tokens": 412,
    "total_tokens": 450
  }
}
Enter fullscreen mode Exit fullscreen mode

استخدم هذه القيم للمقارنة بين fugu وfugu-ultra عند تشغيل نفس المطالبة.

لكن انتبه: Fugu هو منسق قد يستدعي نماذج أخرى خلف الكواليس. كائن usage الذي تراه هو محاسبة طلبك إلى Fugu، وليس بالضرورة تفصيلًا لكل نموذج downstream تم استخدامه داخليًا.

وفقًا لـ Sakana، التسعير مبني على طبقات اشتراك للاستخدام اليومي، إضافة إلى خطة دفع حسب الاستخدام لأعباء العمل الأثقل والمؤسسية. وللمقارنة مع نموذج واحد، تشير أسعار Anthropic المنشورة بتاريخ 2026-06-09 إلى أن Fable 5 وMythos 5 عند 10 دولارات لكل مليون رمز إدخال و50 دولارًا لكل مليون رمز إخراج. يغطي دليل Claude Fable 5 API هذه النقطة إذا أردت تشغيل خط أساس في نفس مشروع Apidog.

قياس تكلفة قفزة التنسيق في زمن الاستجابة

أفضل اختبار عملي هو إرسال نفس المطالبة إلى الطلبين المحفوظين:

  1. شغّل Fugu balanced.
  2. سجّل زمن الاستجابة وusage.
  3. شغّل Fugu Ultra بنفس المطالبة.
  4. سجّل زمن الاستجابة وusage.
  5. كرر الاختبار عدة مرات.

مثال مطالبة مناسبة للمقارنة:

Analyze this chess opening in one shot and explain the strategic trade-offs.
Enter fullscreen mode Exit fullscreen mode

أو:

Summarize a research paper result, identify the method, and list one limitation.
Enter fullscreen mode Exit fullscreen mode

عادةً يعود النوع المتوازن أسرع. وفقًا لـ Sakana، يستهدف fugu الخدمات التفاعلية منخفضة زمن الاستجابة، بينما يستهدف fugu-ultra أقصى جودة. لذلك يمكن اعتبار فرق الزمن بينهما مؤشرًا عمليًا على تكلفة التنسيق.

اختبر مهامًا تقول Sakana إن Fugu قوي فيها، مثل:

  • AutoResearch
  • التصميم الميكانيكي
  • التنبؤ بسلاسل زمنية مالية
  • تحليل الشطرنج بلقطة واحدة

وفقًا لـ Sakana، يتفوق Fugu باستمرار على Gemini 3.1 Pro وOpus 4.8 وGPT 5.5 في تلك التطبيقات المحددة. اقرأ هذا الادعاء بدقة: قد يحقق Fugu هذه النتائج عبر استدعاء نماذج أخرى وتوليف مخرجاتها. لذلك تعامل مع النتائج كأداء "نموذج من نماذج" وليس كنموذج واحد مستقل. اختبره على مطالباتك أنت قبل اتخاذ قرار إنتاجي.

اختبار توجيه الوكلاء والحوكمة

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

إذا كانت وحدة Sakana لديك تعرض عناصر تحكم في مجموعة الوكلاء، يمكنك اختبار ذلك كالتالي:

  1. احفظ طلبًا ثابتًا في Apidog.
  2. شغّله مع إعدادات الوكلاء الافتراضية.
  3. غيّر الوكلاء المؤهلين داخل وحدة Sakana إن كانت الميزة متاحة.
  4. أعد تشغيل نفس الطلب.
  5. قارن:
    • زمن الاستجابة
    • جودة الإجابة
    • usage
    • اختلاف الصياغة أو الاستدلال

الأساس البحثي لهذا التوجه مدعوم بورقتين من ICLR 2026:

لا تخلط بين الورقتين. كما أن ربط أي عدد معلمات محدد بالمنتج التجاري النهائي يبقى استنتاجًا خارجيًا ما لم تؤكده Sakana رسميًا.

كيف تستخدم هذا داخل سير عمل Apidog

ميزة اختبار Fugu في Apidog بدل أمر curl واحد هي قابلية التكرار. يمكنك بناء مجموعة اختبار صغيرة مثل:

Fugu/
  Fugu balanced - basic chat
  Fugu Ultra - reasoning
  Fugu balanced - streaming
  Fugu Ultra - streaming
  Fugu comparison - same prompt
Enter fullscreen mode Exit fullscreen mode

ثم استخدم نفس متغيرات البيئة لكل الطلبات:

{{fugu_base_url}}
{{fugu_key}}
Enter fullscreen mode Exit fullscreen mode

عند تدوير مفتاح API أو تغيير عنوان URL الأساسي أو تحديث معرّف النموذج، تعدّل المتغير مرة واحدة بدل تعديل كل طلب.

لقطة شاشة لـ Apidog تعرض طلب Fugu

حلقة العمل العملية تصبح:

  1. أنشئ الطلب مرة واحدة.
  2. خزّن المفتاح والمضيف في البيئة.
  3. احفظ طلبًا لـ fugu وآخر لـ fugu-ultra.
  4. شغّل نفس المطالبة على الاثنين.
  5. قارن الاستجابة، الزمن، وusage.
  6. فعّل stream لمراقبة SSE والدلتا الأولى.
  7. كرر الاختبار مع مطالبات واقعية من منتجك.

تسمية Sakana مستوحاة من كلمة "سمك" باليابانية، وFugu هو سمك المنتفخ. الاستعارة مناسبة لمنسق يجمع عدة نماذج في إجابة واحدة، لكنها تبقى استعارة وليست معيارًا. المعيار الحقيقي هو اختبار مطالباتك، زمنك، وتكلفتك داخل Apidog.

الأسئلة المتكررة

ما هو عنوان URL الأساسي الذي أستخدمه لاختبار Fugu في Apidog؟

انسخ عنوان URL الأساسي من console.sakana.ai بعد تسجيل الدخول. لم تنشر Sakana المضيف في صفحة عامة اعتبارًا من 2026-06-22، لذلك لا تخمنه. خزّنه في Apidog كمتغير بيئة واستخدمه هكذا:

{{fugu_base_url}}/chat/completions
Enter fullscreen mode Exit fullscreen mode

هل أحتاج إلى SDK خاص لاستدعاء Fugu؟

لا. يقدم Fugu نقطة نهاية متوافقة مع OpenAI، لذلك يمكن لأي عميل أو أداة تدعم تنسيق Chat Completions العمل عبر تغيير عنوان URL الأساسي والمفتاح فقط. يظهر نفس نمط إعادة التوجيه في دليل Claude Code مع OpenRouter.

كيف أختبر استجابات التدفق من Fugu؟

ضع:

"stream": true
Enter fullscreen mode Exit fullscreen mode

في جسم الطلب. ستصل الاستجابة كـ text/event-stream مع أجزاء data: تحمل delta تدريجيًا، وتنتهي بـ:

data: [DONE]
Enter fullscreen mode Exit fullscreen mode

يعرض Apidog تدفق SSE مباشرة حتى تتمكن من مراقبة الرموز أثناء وصولها.

ما الفرق بين Fugu وFugu Ultra؟

fugu هو النوع المتوازن منخفض زمن الاستجابة للبرمجة اليومية، المراجعة، وروبوتات الدردشة. fugu-ultra يستهدف جودة أعلى في مهام البحث، الاستدلال، استنساخ الأوراق، والتحليل الأمني. كلاهما يستخدم نفس نقطة النهاية، والفرق الأساسي في الطلب هو قيمة model.

لماذا Fugu Ultra أبطأ من النوع المتوازن؟

زمن الاستجابة الإضافي غالبًا يمثل قفزة التنسيق. وفقًا لـ Sakana، يمكن لـ Fugu الإجابة مباشرة أو تنسيق فريق من النماذج. تميل Ultra إلى تنسيق أعمق من أجل الجودة، لذلك قد ترى تأخيرًا أطول قبل أول رمز أو قبل اكتمال الاستجابة.

هل انتصارات Fugu في المعايير هي نتائج نموذج واحد؟

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

Top comments (0)