ابدأ

بدء التشغيل السريع لواجهة برمجة التطبيقات

ابدأ باستخدام واجهات برمجة تطبيقات Ninja وقم بتشغيل منتجات الذكاء الاصطناعي الخاصة بك بسرعة وقابلية تطوير وموثوقية لا مثيل لها.

تعرف على المزيد

التسجيل

قم بالتسجيل في النينجا الخارق لبدء استخدام واجهات برمجة التطبيقات الخاصة بنا.

يمكنك التسجيل مجانًا أو الاشتراك في فئة Ultra أو Business. تمنحك Ultra and Business وصولاً غير محدود إلى الملعب لتجربة برامج LLM الرائدة والمنطقية والبحثية العميقة*.

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

* تخضع لعتبات إساءة الاستخدام

قروض الشراء

  • بعد الاشتراك في النينجا الخارق، انتقل إلى اللوحة اليسرى وانقر على رمز API.

    Image of user navigating to the api management page
  • ثم انتقل إلى «الاشتراك والائتمانات».

    Image of user navigating to the API keys & credits page
  • تحت «ائتماناتك» انقر «قروض الشراء».

    Image of the API credits section in Ninja AI
  • في «مبلغ الدفع التلقائي» الحقل، أدخل المبلغ الذي ترغب في شرائه للحصول على ائتمانات (الحد الأدنى 30 دولارًا).

    Image of a user setting their credit amount for their auto-pay agreement in Ninja AI
  • في «حد الدفع التلقائي» في الحقل، حدد الحد الأدنى للمبلغ الذي عندما ينخفض رصيدك عن هذا المبلغ سنقوم بإعادة تحميل «مبلغ الدفع التلقائي». هذا يضمن عدم نفاد الاعتمادات أو توقف مفتاح API الخاص بك عن العمل (25 دولارًا كحد أدنى).

    Image of a user setting their threshold amount for their auto-pay agreement in Ninja AI
  • حدد طريقة الدفع المفضلة لديك وانقر «التأكيد والدفع». ستتم إعادة توجيهك بعد ذلك إلى شاشة فواتير Stripe لإكمال الدفع.

    Image of different payment vendors provided to users when purchasing API credits

قم بإنشاء مفتاح API

  • بعد شراء ائتماناتك، انتقل إلى «إدارة مفاتيح API الخاصة بك» القسم الخاص بـ صفحة مفاتيح API والائتمانات.

    Image of user navigating to the API keys & credits page
  • انقر فوق «إنشاء مفتاح جديد» زر.

    Image of manage your API keys section in Ninja AI
  • في «الاسم» الحقل، أدخل اسمًا لمفتاحك (على سبيل المثال، مفتاح الإنتاج) ثم انقر «إنشاء مفتاح».

    Image of naming process for an API key generated by Ninja AI
  • بمجرد إنشاء مفتاحك، انسخها واحفظه في مكان آمن، حيث يمكن لأي شخص لديه حق الوصول استخدامه. إذا لزم الأمر، يمكنك تجدد مفتاح جديد.

    Image of an API key generated with Ninja AI

استخدام واجهات برمجة تطبيقات النينجا

نظرة عامة

عنوان URL الأساسي:
https://api.myninja.ai/v1

المصادقة:
تتطلب جميع الطلبات مفتاح API الذي تم تمريره في العنوان كما يلي <token-key>أين رمز المصادقة الخاص بك:
التفويض: حامل <token-key>

نقطة النهاية:
بريد /الدردشة/الإكمالات
تقبل نقطة النهاية هذه طلبات الدردشة وتدفق الردود بناءً على النموذج المحدد.

الموديلات:
تشمل النماذج المتوفرة حاليًا:
البحث العميق للنينجا
وكيل النينجا الخارق: توربو
وكيل النينجا الخارق: أبيك
وكيل النينجا الخارق: التفكير

يمكن اختيار هذه النماذج من خلال توفير نموذج المعلمة في نص الطلب الخاص بك.

صيغة الطلب

تتبع واجهة برمجة تطبيقات النينجا مواصفات واجهة برمجة تطبيقات OpenAI عن كثب. يحتوي كائن JSON للطلب على:

نموذج (سلسلة):
معرف النموذج المراد استخدامه (على سبيل المثال، «البحث العميق للنينجا»).

الرسائل (المصفوفة):
مجموعة من كائنات الرسائل. يتبع كل كائن التنسيق:

JSON

{ "role": "user", "content": "Your query here." }
  

تيار (منطقي):
عند الضبط على صحيح، تستجيب واجهة برمجة التطبيقات باستجابة متدفقة.

خيارات التدفق (الكائن):
خيارات إضافية للبث، مثل «include_usage»: صحيح لتضمين تفاصيل استخدام الرمز المميز.

رؤوس إضافية (كائن):
أي عناوين إضافية تتطلبها Ninja API (لا شيء في هذه المرحلة)

مثال الطلب (جسون)

JSON

{
  "model": "ninja-super-agent:turbo",
  "messages": [
    {
      "role": "user",
      "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
    }
  ],
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}
  

الاستجابة

تقوم واجهة برمجة التطبيقات بإرجاع دفق من مقطع إكمال الدردشة الكائنات. قد تحتوي كل قطعة على:

المحتوى:
نص الإكمال، والذي قد يتضمن خطوات منطقية مغلفة بـ XML.

اقتباسات:
قائمة بعناوين URL التي تدعم المنطق المقدم.

معلومات الاستخدام:
إحصائيات استخدام الرمز المميز إذا «include_usage»: صحيح تم تحديده.

يمكن لرمز العميل معالجة هذه الأجزاء لعرض استجابة غنية تتضمن:

خطوات التفكير: تم استخراجه وتنسيقه من مقاطع XML.

اقتباسات: يتم عرضها كقائمة مرقمة.

إحصائيات الاستخدام: عرض رموز الإدخال والإخراج.

أمثلة التعليمات البرمجية النموذجية

Python

import time
import xml.etree.ElementTree as ET
from uuid import uuid4
from openai import OpenAI, Stream
from openai.types import CompletionUsage
from openai.types.chat import ChatCompletionChunk

# Initialize the OpenAI client with your API key and base URL.
client = OpenAI(api_key="PUT_YOUR_API_KEY_HERE", base_url="https://api.myninja.ai/v1")

def print_reasoning_step(reasoning_step: str):
    step = ET.fromstring(reasoning_step)
    print(f"[{step.find('header').text}]\n{step.find('content').text}\n")

def print_citations(citations: list[str]):
    width = len(str(len(citations)))
    print("[Citations]")
    for n, citation in enumerate(citations, 1):
        print(f"{n:{width}}. {citation}")
    print()

def print_content(content: str):
    print(content, end="", flush=True)

def print_usage(usage: CompletionUsage):
    print(
        f"\n\n| Input tokens: {usage.prompt_tokens:,} "
        f"| Output tokens: {usage.completion_tokens:,} ",
        end="",
        flush=True,
    )

def main():
    query = (
        "I am an advanced snowboarder and want a good all-mountain snowboard and new boots and "
        "I'd like to spend no more than $1000 all in. Also look at trends and reviews and give "
        "me options that are currently trendy and cool and have high reviews."
    )

    start_time = time.time()
    
    response: Stream[ChatCompletionChunk] = client.chat.completions.create(
        model="ninja-deep-research",
        messages=[
            {"role": "user", "content": query},
        ],
        stream=True,
        stream_options={
            "include_usage": True,
        },
    )

    for chunk in response:
        for choice in chunk.choices:
            if content := choice.delta.content:
                if content.startswith("<step>"):
                    print_reasoning_step(content)
                else:
                    print_content(content)

        if citations := chunk.model_extra.get("citations"):
            print_citations(citations)
        elif usage := chunk.usage:
            print_usage(usage)

    elapsed_time = time.time() - start_time
    print(f"| Elapsed: {elapsed_time:.1f} seconds |")

if __name__ == "__main__":
    main()
  
cURL

curl -N https://api.myninja.ai/v1/chat/completions \
  -H "Authorization: Bearer PUT_YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ninja-super-agent:turbo",
    "messages": [
      {
        "role": "user",
        "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    "stream": true,
    "stream_options": {
      "include_usage": true
    }
  }'
Java

HttpResponse<String> response = Unirest.post("https://api.myninja.ai/v1/chat/completions")
  .header("Authorization", "Bearer PUT_YOUR_API_KEY_HERE")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
  
JavaScript

const options = {
  method: 'POST',
  headers: {
    Authorization: 'Bearer PUT_YOUR_API_KEY_HERE',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: "ninja-super-agent:turbo",
    messages: [
      {
        role: "user",
        content: "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    stream: true,
    stream_options: {
      include_usage: true
    }
  })
};

fetch('https://api.myninja.ai/v1/chat/completions', options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
  
Go

package main

import (
  "bufio"
  "bytes"
  "fmt"
  "io"
  "log"
  "net/http"
)

func main() {
  url := "https://api.myninja.ai/v1/chat/completions"

  jsonStr := ` + "`" + `{
    "model": "ninja-super-agent:turbo",
    "messages": [
      {
        "role": "user",
        "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    "stream": true,
    "stream_options": {
      "include_usage": true
    }
  }` + "`" + `

  req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(jsonStr)))
  if err != nil {
    log.Fatalf("Error creating request: %v", err)
  }

  req.Header.Set("Authorization", "Bearer PUT_YOUR_API_KEY_HERE")
  req.Header.Set("Content-Type", "application/json")

  client := &http.Client{}
  resp, err := client.Do(req)
  if err != nil {
    log.Fatalf("Error sending request: %v", err)
  }
  defer resp.Body.Close()

  if resp.StatusCode != http.StatusOK {
    log.Fatalf("Request failed with status: %s", resp.Status)
  }

  reader := bufio.NewReader(resp.Body)
  for {
    line, err := reader.ReadBytes('\n')
    if err != nil {
      if err == io.EOF {
        break
      }
      log.Fatalf("Error reading response: %v", err)
    }
    fmt.Print(string(line))
  }
}
  
C#

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

namespace NinjaApiExample
{
  class Program
  {
    static async Task Main(string[] args)
    {
      var url = "https://api.myninja.ai/v1/chat/completions";
      var apiKey = "PUT_YOUR_API_KEY_HERE";

      using var client = new HttpClient();
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

      var payload = new
      {
        model = "ninja-super-agent:turbo",
        messages = new[]
        {
          new { role = "user", content = "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?" }
        },
        stream = true,
        stream_options = new { include_usage = true }
      };

      var jsonPayload = JsonSerializer.Serialize(payload);
      var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

      try
      {
        var response = await client.PostAsync(url, content);
        response.EnsureSuccessStatusCode();

        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
      }
      catch (HttpRequestException e)
      {
        Console.WriteLine("Request error: " + e.Message);
      }
    }
  }
}
  

التسعير

الوضع

سعر الإدخال/ لكل رموز M

سعر الإخراج/ لكل رموز M

السعر/ مهمة

كوين 3 كودر 480B (المخ)

الإعداد الافتراضي لـ نينجا كلاين AI ستوديو

1.50 دولار

الوضع القياسي

توازن الجودة والسرعة
الإعداد الافتراضي:
غلام 4.6
ديب كودر:
غلام 4.6

1.00 دولار

الوضع المعقد

برنامج LLM عالي الجودة للمهام المعقدة
الإعداد الافتراضي:
سونيت 4.5
ديب كودر
سونيت 4.5

1.50 دولار

الوضع السريع

أسرع وكيل عام في العالم
الإعداد الافتراضي:
غلام 4.6*
البحث العميق:
Qwen Model Logo
كوين 3 — 235 ب*
ديب كودر:
غلام 4.6
*مدعوم من سيريبراس
Cerebras logo

1.50 دولار

الوضع

سعر الإدخال/ لكل رموز M

سعر الإخراج/ لكل رموز M

السعر/ مهمة

كوين 3 كودر 480B (المخ)

الإعداد الافتراضي لـ نينجا كلاين AI ستوديو

3.75 دولار

3.75 دولار

الوضع القياسي

توازن الجودة والسرعة
الإعداد الافتراضي:
غلام 4.6
ديب كودر:
غلام 4.6

1.50 دولار

1.50 دولار

الوضع المعقد

برنامج LLM عالي الجودة للمهام المعقدة
الإعداد الافتراضي:
سونيت 4.5
ديب كودر
سونيت 4.5

4.50 دولار

22.50 دولارًا

الوضع السريع

أسرع وكيل عام في العالم
الإعداد الافتراضي:
غلام 4.6*
البحث العميق:
Qwen Model Logo
كوين 3 — 235 ب*
ديب كودر:
غلام 4.6
*مدعوم من سيريبراس
Cerebras logo

3.75 دولار

3.75 دولار

نموذج

سعر الإدخال/ لكل رموز M

سعر الإخراج/ لكل رموز M

توربو 1.0

0.11 دولار

0.42 دولار

أبيX 1.0

0.88 دولار

7.00 دولار

المنطق 2.0

0.38 دولار

1.53 دولار

ديب ريسيرش 2.0

1.40 دولار

5.60 دولار

حدود الأسعار

يفرض Ninja AI قيودًا على معدلات طلبات الاستدلال لكل نموذج لضمان قدرة المطورين على تجربة الاستدلال الأسرع.

نموذج

طلب لكل دقيقة (دورة في الدقيقة)

توربو 1.0

50

أبيX 1.0

20

المنطق 2.0

30

ديب ريسيرش 2.0

5

أسئلة متكررة

إليك ما تحتاج إلى معرفته حول واجهة برمجة تطبيقات Ninja استنادًا إلى أكثر ما يُطلب منا.

كيف يمكنني زيادة حد الدفع التلقائي والمبلغ؟

  • في Ninja، انتقل إلى اللوحة اليسرى وانقر على رمز إدارة API.

  • تحت «ائتماناتك» انقر «إدارة الاعتمادات».

  • في «مبلغ الدفع التلقائي» الحقل، أدخل المبلغ الذي ترغب في زيادته للائتمانات (الحد الأدنى 30 دولارًا).

  • في «حد الدفع التلقائي» في الحقل، قم بتحرير الحد الأدنى للمبلغ الذي عندما ينخفض رصيدك إلى أقل من هذا المبلغ، سنقوم بإعادة تحميل «مبلغ الدفع التلقائي». هذا يضمن عدم نفاد الاعتمادات أو توقف مفتاح API الخاص بك عن العمل (بحد أدنى 25 دولارًا).

  • انقر «حفظ التغييرات» للتأكيد.

كيف يمكنني إلغاء اتفاقية الدفع التلقائي الخاصة بي؟

  • في Ninja، انتقل إلى اللوحة اليسرى وانقر على رمز إدارة API.

  • حدد «مفاتيح API والاعتمادات» ثم انتقل إلى «ائتماناتك» قسم.

  • تحت «ائتماناتك» انقر «المزيد من الخيارات».

  • حدد «إلغاء الدفع التلقائي للائتمانات»(الحد الأدنى 30 دولارًا).

  • انقر «حذف الدفع التلقائي» للتأكيد.

كيف أحذف مفتاح API؟

  • في Ninja، انتقل إلى اللوحة اليسرى وانقر على رمز إدارة API.

  • حدد «مفاتيح API والاعتمادات،» ثم انتقل إلى «مفاتيح API».

  • ابحث عن مفتاح API الخاص بك وحدد رمز سلة المهملات على اليمين.

  • انقر «حذف مفتاح API» للتأكيد.

كيف يمكنني عرض استخدام كل طلب API؟

  • في Ninja، انتقل إلى اللوحة اليسرى وانقر على رمز إدارة API.

  • ثم انقر «استخدام واجهة برمجة التطبيقات».

  • على «استخدام واجهة برمجة التطبيقات» في الصفحة، سترى جدولًا يعرض التفاصيل التالية لكل واجهة برمجة تطبيقات:

    • اسم المفتاح

    • نموذج

    • رموز الإدخال والإخراج

    • تكلفة المدخلات والمخرجات

    • طابع زمني للطلب

    • التكلفة الإجمالية