Openrouter 60s Quickstart

مسار أول طلب خلال 60 ثانية (AR)

هذا الدليل يوصلك من التسجيل إلى أول طلب `POST /v1/chat/completions` خلال حوالي 60 ثانية.

1) إنشاء مفتاح مستأجر (التسجيل)

curl -sS -X POST https://dcp.sa/api/dc1/renters/register \
  -H "Content-Type: application/json" \
  -d &#;{
    "name": "DX Quickstart",
    "email": "dx-quickstart@example.com"
  }&#;

احفظ قيمة `api_key` من الاستجابة.

2) ضبط عنوان API والمفتاح

export DCP_API_V1="https://api.dcp.sa/v1"
export DCP_RENTER_KEY="dc1-renter-your-key"

3) التحقق من قائمة النماذج

curl -sS "$DCP_API_V1/models"

4) إرسال أول طلب محادثة (cURL)

curl -sS "$DCP_API_V1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "x-renter-key: $DCP_RENTER_KEY" \
  -d &#;{
    "model": "ALLaM-AI/ALLaM-7B-Instruct-preview",
    "messages": [
      { "role": "user", "content": "Reply with exactly: quickstart-ok" }
    ],
    "max_tokens": 
  }&#;

5) مسار Node.js (نسخ ولصق)

import https from "https";

const payload = JSON.stringify({
  model: "ALLaM-AI/ALLaM-7B-Instruct-preview",
  messages: [{ role: "user", content: "Reply with exactly: quickstart-ok" }],
  max_tokens: ,
});

const req = https.request("https://api.dcp.sa/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Content-Length": Buffer.byteLength(payload),
    "x-renter-key": process.env.DCP_RENTER_KEY,
  },
}, (res) => {
  let body = "";
  res.on("data", (chunk) => (body += chunk));
  res.on("end", () => console.log(body));
});

req.write(payload);
req.end();

6) مسار Python (نسخ ولصق)

import json
import os
import urllib.request

payload = {
    "model": "ALLaM-AI/ALLaM-7B-Instruct-preview",
    "messages": [{"role": "user", "content": "Reply with exactly: quickstart-ok"}],
    "max_tokens": ,
}

req = urllib.request.Request(
    "https://api.dcp.sa/v1/chat/completions",
    data=json.dumps(payload).encode("utf-"),
    headers={
        "Content-Type": "application/json",
        "x-renter-key": os.environ["DCP_RENTER_KEY"],
    },
    method="POST",
)

with urllib.request.urlopen(req, timeout=) as resp:
    print(resp.read().decode("utf-"))

ملاحظات

  • المصادقة في هذا المسار تكون عبر مفتاح المستأجر (`x-renter-key`).
  • أخطاء `/v1` تحتوي `error.code` للتعامل البرمجي الثابت:

- `rate_limit_exceeded` (`429` مع `retry_after_seconds`) - `no_capacity_available` (`503`) - `provider_unavailable` (`503`) - `upstream_timeout` (`504`)

  • أعد المحاولة فقط عندما تكون `error.retryable === true`، ويفضّل الاعتماد على `retry_after_seconds` إن وُجدت.