Kendi Cihazınızdaki Modeller

Bilgisayarınızda çalışan modelleri dış programlardan API ile kullanın

Onysoft AI Gateway Node programını bilgisayarınıza kurup hesabınıza bağladıysanız, o bilgisayarda çalışan modelleri n8n, Cursor, LangChain, OpenAI kütüphaneleri ya da kendi kodunuz gibi dış programlardan kullanabilirsiniz. Uç ve anahtar diğer modellerle aynıdır; tek fark, model adının başındaki node/ önekidir.

info

Önce Onysoft AI Gateway Node programını bilgisayarınıza kurup hesabınıza bağlayın ve programda paylaşımı açın. Cihazlarınızı ve modellerinin durumunu panelde GPU Paylaşımım sayfasından izleyebilirsiniz.

POST /v1/chat/completions

Model adı node/<katalog_kimliği> olduğunda istek sizin cihazınızda çalışır.

GET /v1/node/models

Cihazlarınızda yüklü modelleri ve o an kullanıma hazır olup olmadıklarını listeler.

Nasıl Çalışır?

Bilgisayarınız dışarıya port açmaz; bağlantıyı her zaman Node programı sunucuya doğru kurar. Bir istek şu yolu izler:

  1. Programınız isteği her zamanki gibi https://api.onysoft.com/v1/chat/completions adresine gönderir.
  2. Sunucu, anahtarın panelden oluşturduğunuz kişisel bir anahtar olduğunu ve istenen modelin çevrimiçi cihazlarınızdan birinde hazır olduğunu kontrol eder.
  3. İstek, sahibi siz olacak şekilde kuyruğa alınır.
  4. Bilgisayarınızdaki Node programı, sunucuya kendisinin açtığı ve sürekli yenilediği giden bağlantı üzerinden işi alır ve modeli bilgisayarınızda yerel olarak (127.0.0.1) çalıştırır.
  5. Sonuç sunucuya geri gönderilir ve programınıza diğer modellerle aynı biçimde yanıt olarak döner.
  6. Token sayıları ve süre kullanım kaydınıza işlenir; ücret 0'dır.
Programınız (n8n, Cursor, kendi kodunuz)
   │  ▲
   │  │   POST /v1/chat/completions  "model": "node/..."
   │  │   yanıt, diğer modellerle aynı biçimde döner
   ▼  │
api.onysoft.com   anahtar ve cihaz kontrolü → kuyruk
   ▲  │
   │  │   giden bağlantı: Node programı işi alır, sonucu geri gönderir
   │  │   (bilgisayarınızda port açılmaz)
   │  ▼
Bilgisayarınız    Onysoft AI Gateway Node → yerel model (127.0.0.1)

Model Adı

Katalog kimliğinin başına node/ ekleyin. Aynı model birden fazla cihazınızda hazırsa istek bunlardan birine gider; belirli bir cihazı seçmek için sonuna @<cihaz_no> ekleyin.

Model adı Anlamı
node/qwen3-4b-q4_k_m Bu modelin hazır olduğu çevrimiçi cihazlarınızdan herhangi biri.
node/qwen3-4b-q4_k_m@12 Yalnız 12 numaralı cihazınız. Bu cihaz çevrimdışıysa ya da model orada hazır değilse istek başka bir cihaza gitmez, 503 node_unavailable döner.

Kullanabileceğiniz adları ve cihaz numaralarını GET /v1/node/models yanıtındaki id ve device_model_id alanlarında bulursunuz. node/ sonrasındaki katalog kimliğinde büyük/küçük harf farkı önemli değildir; öneki ise küçük harfle yazın. Anahtarınıza model kısıtı tanımladıysanız, tüm cihaz modellerine izin vermek için listeye node/* ekleyebilirsiniz.

Örnek İstek

Uç, anahtar ve istek gövdesi diğer modellerle aynıdır; yalnız model alanı değişir.

cURL
curl https://api.onysoft.com/v1/chat/completions \
  -H "Authorization: Bearer sk-ony-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "node/qwen3-4b-q4_k_m",
    "messages": [
      {"role": "user", "content": "Merhaba! Kısaca kendini tanıtır mısın?"}
    ],
    "max_tokens": 300
  }'

Örnek Yanıt

Yanıt diğer modellerle aynı biçimdedir. id isteğin kimliğidir (req_...), model alanında cihaz numarası olmadan node/<katalog_kimliği> yazar ve cost.amount her zaman 0'dır. Model düşünce metni ürettiyse mesajda reasoning ve reasoning_content alanları da bulunur; araç çağırdıysa tool_calls gelir ve finish_reason değeri tool_calls olur.

JSON
{
  "success": true,
  "data": {
    "id": "req_5c1e9a7d2b3f4e6a8c0d1e2f",
    "object": "chat.completion",
    "created": 1758542400,
    "model": "node/qwen3-4b-q4_k_m",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "Merhaba! Ben Qwen3, bilgisayarınızda çalışan bir dil modeliyim."
        },
        "finish_reason": "stop",
        "logprobs": null
      }
    ],
    "usage": {
      "prompt_tokens": 18,
      "completion_tokens": 16,
      "total_tokens": 34
    },
    "cost": {
      "amount": 0,
      "currency": "USD"
    }
  }
}

Desteklenen Parametreler

Cihazınıza yalnız aşağıdaki alanlar iletilir:

Akış (Streaming)

stream:true gönderdiğinizde yanıt, diğer modellerde olduğu gibi SSE parçaları hâlinde gelir. Ancak cihaz yanıtı sunucuya tamamını ürettikten sonra gönderir; bu yüzden parçalar, yanıt cihazda tamamlanınca art arda ve yaklaşık 40 karakterlik dilimler hâlinde gelir.

Cihaz yanıtı üretirken bağlantı açık tutulur: sunucu 5 saniyede bir : ping yorum satırı gönderir. SSE istemcileri ve OpenAI kütüphaneleri bu satırları yok sayar. Akışsız istekte süre sınırı daha kısa olduğundan uzun yanıtlar için stream:true kullanmanızı öneririz.

SSE
: ping

: ping

data: {"id":"req_5c1e9a7d2b3f4e6a8c0d1e2f","object":"chat.completion.chunk","created":1758542400,"model":"node/qwen3-4b-q4_k_m","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null,"logprobs":null}]}

data: {"id":"req_5c1e9a7d2b3f4e6a8c0d1e2f","object":"chat.completion.chunk","created":1758542400,"model":"node/qwen3-4b-q4_k_m","choices":[{"index":0,"delta":{"content":"Merhaba! Ben Qwen3, bilgisayarınızda çal"},"finish_reason":null,"logprobs":null}]}

data: {"id":"req_5c1e9a7d2b3f4e6a8c0d1e2f","object":"chat.completion.chunk","created":1758542400,"model":"node/qwen3-4b-q4_k_m","choices":[{"index":0,"delta":{"content":"ışan bir dil modeliyim."},"finish_reason":null,"logprobs":null}]}

data: {"id":"req_5c1e9a7d2b3f4e6a8c0d1e2f","object":"chat.completion.chunk","created":1758542400,"model":"node/qwen3-4b-q4_k_m","choices":[{"index":0,"delta":{},"finish_reason":"stop","logprobs":null}]}

data: {"id":"req_5c1e9a7d2b3f4e6a8c0d1e2f","object":"chat.completion.chunk","created":1758542401,"model":"node/qwen3-4b-q4_k_m","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":16,"total_tokens":34},"cost":{"amount":0,"currency":"USD"}}

data: [DONE]

Parça sırası: role, varsa düşünce metni (reasoning / reasoning_content), content, varsa tool_calls ve finish_reason. stream_options.include_usage gönderdiyseniz ardından bir usage parçası gelir. En sonda her zaman usage ve cost içeren parça, ardından [DONE] gönderilir.

Akış başladıktan sonra oluşan hatalar (cihazın isteği süresinde almaması, zaman aşımı, cihaz hatası) HTTP durum kodu olarak değil, akışın içinde bir error parçası olarak gelir ve akış [DONE] ile kapanır. Anahtar, model adı ve istek gövdesiyle ilgili hatalar ise akış başlamadan, normal JSON hata yanıtı olarak döner.

data: {"error":{"code":"node_timeout","message":"..."}}

data: [DONE]

Cihaz Modellerini Listeleme

GET /v1/node/models, hesabınıza bağlı cihazlarda yüklü modelleri döner. Aynı model iki cihazınızda yüklüyse iki satır gelir (node_id farklıdır). Bir modeli o an kullanabilmek için ready alanının true olması gerekir. Bu uç da yalnız kişisel anahtarlarla çalışır.

cURL
curl https://api.onysoft.com/v1/node/models \
  -H "Authorization: Bearer sk-ony-your-api-key"
JSON
{
  "success": true,
  "object": "list",
  "data": [
    {
      "id": "node/qwen3-4b-q4_k_m",
      "object": "model",
      "created": 1758369600,
      "owned_by": "cihazim",
      "name": "Qwen3 4B",
      "purpose": "genel",
      "context_window": 8192,
      "node_id": 12,
      "node_name": "MacBook Pro",
      "device_model_id": "node/qwen3-4b-q4_k_m@12",
      "online": true,
      "sharing": true,
      "model_status": "hazir",
      "ready": true,
      "last_seen_at": "2026-09-22T14:05:31+03:00",
      "pricing": {
        "input_per_million_tokens": 0,
        "output_per_million_tokens": 0,
        "currency": "USD"
      }
    }
  ],
  "total": 1
}
Alan Anlamı
idİstekte model olarak kullanacağınız ad; istek, modelin hazır olduğu cihazlarınızdan birine gider.
device_model_idModeli yalnız bu cihazda çalıştırmak için kullanacağınız ad.
node_id, node_nameCihazın numarası ve adı.
readyonline ve sharing true, model_status da hazir ise true olur. İstek yalnız bu durumda o cihazda çalışır.
onlineCihaz son 45 saniye içinde sunucuya bağlandıysa true.
sharingNode programında paylaşım açıksa true.
model_statusModelin cihazdaki durumu: hazir (kullanıma hazır), yukleniyor (yükleniyor), hata (hata oluştu) ya da durdu (durduruldu).
purposeModelin kullanım amacı: genel, kod, hizli, akil_yurutme ya da turkce.
context_windowModelin bağlam penceresi (token). Bilinmiyorsa <code>null</code> olur; bu durumda 8192 token varsayılır.
last_seen_atCihazın sunucuya son bağlandığı an (ISO 8601).
pricingKendi cihazınızı kullanmak ücretsiz olduğu için her zaman 0.

Hata Kodları

Hata yanıtları diğer uçlarla aynı biçimdedir: {"success": false, "error": {"code": "...", "message": "..."}}. Hata mesajları Türkçedir.

Kod code Açıklama
400context_length_exceededİstek, modelin bağlam uzunluğunu aşıyor. Sunucu tahmini istem uzunluğunu cihaza göndermeden önce kontrol eder; cihaz bağlam aşımı bildirdiğinde de aynı kod döner.
400invalid_requestİstek gövdesi hatalı: örneğin n 1'den farklı, messages dizi değil ya da bir parametre yanlış tipte.
403node_owner_onlyAnahtar, panelden oluşturulmuş kişisel bir anahtar değil (proje ya da iş ortağı anahtarı). Cihaz modellerini yalnız kişisel anahtarlar kullanabilir.
403model_not_allowedAnahtarınızın model kısıtı bu modele izin vermiyor.
404model_not_foundnode/ sonrasındaki kimlik katalogda yok ya da model adı hatalı yazılmış.
413payload_too_largeMesajlar 256 KB'ı ya da istek gövdesinin tamamı (mesajlar, araçlar ve biçim tanımları) 512 KB'ı aşıyor.
422validation_errorGenel istek doğrulaması başarısız: model ya da messages alanı eksik, messages dizi değil ya da boş. Hatalı alanlar error.fields içinde listelenir.
429too_many_node_jobsCihazlarınızda aynı anda en fazla 4 istek işlenebilir. Retry-After: 5 başlığıyla döner; önceki istekler bitince tekrar deneyin.
502node_errorCihazınız isteği işleyemedi. Node programında modelin durumunu kontrol edip tekrar deneyin.
503node_unavailableBu model için çevrimiçi ve hazır bir cihazınız yok ya da cihazınız isteği süresi içinde almadı (akışsız istekte 30, akışta 60 saniye). Alınmayan istek iptal edilir.
503node_busySunucunun cihaz isteklerini bekletme kapasitesi o an dolu. Retry-After: 5 başlığıyla döner; birkaç saniye sonra tekrar deneyin.
504node_timeoutCihazınız yanıtı süresi içinde üretemedi. Daha kısa bir mesajla, daha düşük max_tokens ile ya da stream:true ile tekrar deneyin.

Sınırlar

Gizlilik ve Güvenlik

Ücret

Kendi cihazınızı kullanmak ücretsizdir; bakiyenizden kesinti yapılmaz. İstekler kullanım kaydınızda tutarı 0 olarak görünür, token sayıları ve süre yine kaydedilir.

Sık Sorulan Sorular

Neden ayrı bir uç yok?

n8n, Cursor, LangChain ve OpenAI kütüphaneleri gibi OpenAI uyumlu araçlar sohbet için /v1/chat/completions ucunu bekler. Aynı ucu kullandığımız için bu araçlarda adresi ya da anahtarı değiştirmeniz gerekmez; yalnız model adını değiştirirsiniz. node/ öneki, isteğin katalogdaki bir modele değil sizin cihazınıza gideceğini açıkça belirtir.

Bilgisayarım kapalıysa ne olur?

Çevrimiçi ve modeli hazır bir cihazınız yoksa istek 503 node_unavailable ile döner. Bilgisayarınız az önce kapandıysa sunucu onu 45 saniye boyunca çevrimiçi sayar; bu durumda istek kuyruğa girer ve hata, isteğin alınma süresi dolunca (akışsız istekte 30, akışta 60 saniye) gelir. Akışlı istekte bu hata akışın içinde bir error parçası olarak gelir. İstek başka bir cihaza ya da başka bir modele aktarılmaz.

Proje anahtarımla kullanabilir miyim?

Hayır. Cihaz modelleri yalnız panelde API Anahtarları sayfasından oluşturduğunuz kişisel anahtarlarla çalışır; proje ve iş ortağı anahtarları 403 node_owner_only alır.

Başkası benim cihazımı bu yoldan kullanabilir mi?

Hayır. İstek, onu gönderen anahtarın sahibinin cihazlarına gider. Sizin anahtarınızla gönderilen istek yalnız sizin cihazlarınızda, başkasının anahtarıyla gönderilen istek yalnız onun cihazlarında çalışır.

Size uygun modeli bulmanıza yardımcı olayım mı?