API Referansı

AI Ağ Geçidi (chat ve generate)

Dağıtılmış projenizden FloopFloop'un yönetilen LLM ağ geçidini çağırın — chat completion, tek istemli üretim, akışlı SSE, otomatik model yönlendirme.

Son güncelleme:

AI Ağ Geçidi

AI Ağ Geçidi, dağıtılmış FloopFloop projenizin herhangi bir üçüncü taraf kimlik bilgisi tutmanıza gerek kalmadan yönetilen bir LLM uç noktasını çağırmasını sağlar. FloopFloop isteği doğru sağlayıcıya yönlendirir, yeniden deneme ve devre kesici mekanizmalarını yönetir, proje sahibinin kredilerinden düşer ve kullanımı pano için kaydeder.

Bu, FloopFloop üzerinde oluşturduğunuz projelerdeki AI özelliklerini güçlendiren mekanizmadır. Projenizin sunucu taraflı kodundan doğrudan çağırabilirsiniz.

Çoğu projenin bu ham HTTP API'sini kullanmasına gerek yoktur.Her oluşturulan proje, aşağıda belgelenen her şeyi saran@floopfloop/aiSDK'sı ile birlikte gelir:

import { FloopAI } from "@floopfloop/ai";

const ai = new FloopAI({ apiKey: process.env.FLOOPFLOOP_AI_KEY! });

const reply = await ai.chat({ messages, model: "smart" });

Bu referansı, ağ geçidini bir FloopFloop projesi dışından (özel bir arka uç, bir hata ayıklama betiği veya Node dışı bir çalışma ortamı) çağırmanız gerektiğinde ya da özel bir istemci için tam kablo biçimini bilmek istediğinizde kullanın.

Kimlik Doğrulama: proje AI anahtarları

Ağ geçidi, API'nin geri kalanında kullanılan kullanıcı düzeyiflp_ anahtarlarından ayrı olarak flp_sk_önekiyle proje kapsamlı bir anahtar kullanır. Proje başına bir aktif anahtar bulunur ve proje oluşturulurken otomatik olarak sağlanır.

  • Anahtarınızı panodaki Project settings → AIbölümünde bulun veya döndürün. Döndürme işlemi yeni birflp_sk_ değeri oluşturur, eskisini iptal eder ve çalışan projenin onu alması için yeniden dağıtım tetikler.
  • FloopFloop, aktif anahtarı FLOOPFLOOP_AI_KEY ortam değişkeni olarak projenizin derleme paketine yerleştirir; böylece sunucu taraflı kod, gizli bilgi gidiş dönüşü olmadanprocess.env.FLOOPFLOOP_AI_KEY aracılığıyla okuyabilir.
  • Tüm istekler standart Bearer şemasını kullanır:
    Authorization: Bearer flp_sk_…
  • Yalnızca sunucu tarafı.Anahtarı istemci taraflı koda asla yerleştirmeyin — sayfa kaynağına erişimi olan herkes projenin kredilerini tüketebilir.

Sohbet tamamlamaları

POST /api/v1/ai/chat

Yapılandırılmış mesaj listesiyle OpenAI/Anthropic tarzı sohbet.

İstek gövdesi:

{
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user",   "content": "Summarise this in one sentence: ..." }
  ],
  "model":       "auto",   // optional alias; default "auto" picks the best fit
  "system":      "...",    // optional, alternative to a system role message
  "temperature": 0.7,      // optional, 0-2
  "max_tokens":  1024,     // optional, clamped to plan limit
  "stream":      false     // optional, default false (see streaming below)
}

Yanıt (200, akışsız):

{
  "content": "...",
  "model":   "auto",
  "usage": {
    "input_tokens":      123,
    "output_tokens":     45,
    "total_tokens":      168,
    "credits_used":      0.21,
    "credits_remaining": 4837.79
  },
  "finishReason": "end_turn"
}

model değeri "auto" olduğunda, ağ geçidi istek karmaşıklığını sınıflandırır ve uygun boyutta bir model seçer. Desteklenen diğer takma adlar şunlardır:

AliasUse case
"auto"Varsayılan — platform istek karmaşıklığına göre seçer
"fast"Basit görevler, düşük gecikme (çeviriler, özetler, sınıflandırma)
"smart"Karmaşık görevler (kod oluşturma, analiz, akıl yürütme)
"reason"Çok adımlı akıl yürütme, planlama, derin analiz (genişletilmiş düşünme)

Bir takma ada sabitlemek, sağlayıcı model kimliğini doğrudan kodlamaktan tercih edilir — platform, sağlayıcılar gelip gittikçe takma adlar üzerinden yeniden yönlendirir; doğrudan kodlanmış bir kimlik ise o model yukarı akışta kullanımdan kaldırıldığında başarısız olmaya başlar.

Tek istemli üretim

POST /api/v1/ai/generate

/chat ile aynı model yönlendirmesi, ancak mesaj dizisi yerine tek bir düz metin prompt alır. Tamamlama tarzı kullanım durumları için uygundur.

{
  "prompt":      "Write a haiku about the moon",   // required, ≤ 500_000 chars
  "system":      "...",                            // optional
  "model":       "auto",                           // optional
  "temperature": 0.7,                              // optional
  "max_tokens":  1024,                             // optional
  "stream":      false                             // optional
}

Yanıt şekli /chat ile aynıdır.

Akış (SSE)

Her iki uç noktada da "stream": true geçirerektext/event-stream yanıtı alın. Her kare, birdata: satırında JSON biçimindedir:

data: {"text": "Once "}

data: {"text": "upon "}

data: {"text": "a time"}

data: {"usage": { "input_tokens": 14, "output_tokens": 47, "total_tokens": 61, "credits_used": 0.07, "credits_remaining": 4837.93 }, "finishReason": "end_turn"}

data: [DONE]

Son usage karesi, çağıranların ayrı bir istek olmadan maliyeti kaydedebilmesi için [DONE]'dan önce gönderilir. Yukarı akış akış ortasında hata verirse akışdata: {"error": "..."} ardından [DONE]yayınlar — üretilmiş token'lar yine de faturalandırılır.

Gömme (henüz mevcut değil)

POST /api/v1/ai/embed

Şu an 501 NOT_IMPLEMENTEDdöndürür. Uç nokta, SDK'ların ağ geçidi yayınlanmadan önce metodu taslak olarak ekleyebilmesi için ayrılmıştır; henüz buna bağımlı olmayın.

Sınırlar ve bütçeler

Her proje AI anahtarı, kredi bakiyesinin üzerinde iki katmanlı kısıtlamaya sahiptir:

  • Dakika başına istekProject settings → AI bölümünde yapılandırılabilir, varsayılan 10 RPM. Aşım 429 RATE_LIMITED döndürür ve bir Retry-After başlığı içerir.
  • Günlük token bütçesi— UTC gece yarısında sıfırlanır, varsayılan günde 10 000 token. Aşım429 BUDGET_EXCEEDED döndürür.
  • İstek başına girdi boyutu, planın bağlam sınırıyla kısıtlanmıştır. Büyük boyutlu girdiler, mesajda sınırı belirterek400 INPUT_TOO_LARGE döndürür.

Bunların üzerine, her çağrı modelin yapılandırılmış oranında (girdi + çıktı) token başına fiyatlandırılmış kredi düşer. Proje sahibinin kredi bakiyesi sıfıra ulaştığında istekler402 INSUFFICIENT_CREDITS döndürür.

Ağ geçidine özgü hata kodları

HTTPCodeMeaning
400INVALID_BODYGövde geçerli JSON değil
400VALIDATION_ERRORAlan eksik, yanlış türde veya aralık dışı
400INPUT_TOO_LARGETahmini girdi token sayısı plan sınırını aşıyor
400INVALID_MODELBilinmeyen model takma adı
402INSUFFICIENT_CREDITSProje sahibinin kredisi tükendi
429RATE_LIMITEDAnahtar başına RPM aşıldı
429BUDGET_EXCEEDEDGünlük token bütçesi tükendi
501NOT_IMPLEMENTEDUç nokta ayrıldı (şu an yalnızca embed)
502PROVIDER_ERRORYukarı akış LLM sağlayıcısı başarısız oldu; daha sonra yeniden deneyin
503SERVICE_UNAVAILABLETüm sağlayıcılar tetiklendi; Retry-After: 60

Her ağ geçidi yanıtı — başarı veya başarısızlık — birX-Request-Id başlığı taşır. Sorunları bildirirken bunu belirtin; böylece destek ekibi izi proje başına AI kullanım günlüğünde bulabilir.