Uygulamayı aç
Moonborn — Developers

OpenAI uyumlu uç noktaya geç

OpenAI SDK'sını kullanan bir uygulamayı tek satırlık temel URL değişimiyle Moonborn'a taşı. Akış (streaming), araç çağrısı ve fonksiyon çağrısı değişmeden geçer.

Halihazırda OpenAI SDK'sını kullanan bir ürün varsa, Moonborn'a en ucuz geçiş yolu OpenAI uyumlu katman (shim)'dır. /v1/openai/chat/completions uç noktası OpenAI şekilli istekleri kabul eder, OpenAI şekilli yanıtlar döner ve model alanı bir GPT model adı yerine bir persona kimliği taşır.

Kod tarafında üç şey değişir: API anahtarı, temel URL, ve model alanı. Geri kalan her şey (akış, araç / fonksiyon çağrısı, choices dizisi, finish_reason) aynı kalır — uygulamanın geri kalanını yeniden yazman gerekmez.

Bu rehberi bitirdiğinde

  • OpenAI SDK'sını tek satırlık yapılandırma değişikliğiyle Moonborn'a yönlendirebileceksin.
  • model alanına bir persona kimliğinin nasıl yazılacağını bileceksin.
  • Akışlı (streaming) yanıtları olduğu gibi alabileceksin.
  • Araç (tool) / fonksiyon çağrısını Moonborn üzerinden çalıştırabileceksin.
  • Persona'larını OpenAI'nin models endpoint'i şeklinde listeleyebileceksin.
  • OpenAI uyumlu katmanın neyi kapsamadığını (görsel, vektör — embedding, ses, asistanlar) bilip onları nereye yönlendireceğini ayırt edebileceksin.

Ön koşul: OpenAI SDK'sı kullanan bir uygulama, bir Moonborn API anahtarı ve en az bir persona kimliği. Persona'n yoksa İlk persona'yı baştan sona üret rehberine bak.

1. İstemciyi (client) tek satırla değiştir

OpenAI SDK'sını içe aktardığın yerde temel URL ve API anahtarını değiştir.

import OpenAI from 'openai';
 
const client = new OpenAI({
  apiKey: process.env.MOONBORN_API_KEY,
  baseURL: 'https://api.moonborn.co/v1/openai',
});

Üç değişiklik:

AlanÖnceSonra
API anahtarı ortam değişkeniOPENAI_API_KEYMOONBORN_API_KEY
baseURL / base_url(varsayılan OpenAI)https://api.moonborn.co/v1/openai
modelgpt-4o, gpt-4-turbopersona://<persona_id>

2. Bir çağrı yap

const reply = await client.chat.completions.create({
  model: 'persona://per_01H...',
  messages: [{ role: 'user', content: 'Seni en çok ne tetikler?' }],
});
 
console.log(reply.choices[0].message.content);

Yanıt şekli OpenAI'nin yanıtına bire bir uyar:

{
  "id": "chatcmpl_...",
  "object": "chat.completion",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Beni tetikleyen şey aradaki boşluk..."
      },
      "finish_reason": "stop"
    }
  ]
}

3. Akış (streaming) değişmeden geçer

const stream = await client.chat.completions.create({
  model: 'persona://per_01H...',
  messages: [{ role: 'user', content: 'Sessiz bir gerçek söyle.' }],
  stream: true,
});
 
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}

SSE parça (chunk) deseni, delta alanı ve finish_reason — hepsi OpenAI ile aynıdır. Drift zarfı, akış kapanırken son HTTP yanıt başlıkları olarak gelir.

4. Araç / fonksiyon çağrısı

const reply = await client.chat.completions.create({
  model: 'persona://per_01H...',
  messages: [{ role: 'user', content: "İstanbul'da saat kaç?" }],
  tools: [
    {
      type: 'function',
      function: {
        name: 'get_time',
        description: 'Returns the current time in a given timezone',
        parameters: {
          type: 'object',
          properties: { tz: { type: 'string' } },
          required: ['tz'],
        },
      },
    },
  ],
});
 
const toolCall = reply.choices[0].message.tool_calls?.[0];
if (toolCall?.function.name === 'get_time') {
  // Kendi fonksiyonunu çağır, sonra sonucu geri gönder
}

Araç çağrıları olduğu gibi geçer. Önemli olan şu: persona'nın sesi araç sonucu ele alımını da sarar. Yani fonksiyonun döndürdüğü ham veriyi karakter kendi tonunda açıklar — jenerik bir asistan tonunda değil.

5. Persona'ları OpenAI model listesi olarak göster

OpenAI'nin models.list() çağrısı Moonborn'da çalışma alanının persona'larını döner — IDE seçicileri, yönetim arayüzleri veya bir açılır listeye persona seçtirmek için bedava bir API'dir.

const models = await client.models.list();
for (const m of models.data) {
  console.log(m.id); // persona://per_01H...
}

OpenAI uyumlu katman neleri kapsamaz

- chat.completions (eşzamanlı + akış)
- chat.completions (araç / fonksiyon çağrısı)
- models.list (persona kataloğu)
- Drift zarfı yanıt başlıklarında

Plan gereksinimi

Free ve üzeri. OpenAI uyumlu uç nokta çalışma alanının genel hız limitini miras alır — plana göre tabanlar hız limitleri başvurusunda.

Başardın

Uygulamanın sohbet çağrısını Moonborn'a yönlendirdiysen, persona'nın yanıtını gördüysen ve mevcut OpenAI araç / akış kodun değişmeden çalıştıysa geçiş tamamdır.

Sonraki adım

MCP sunucusu entegrasyonu

Claude Desktop / Cursor / agent çatıları için MCP üzerinden bağlanma.

Open →
OpenAI uyumlu entegrasyon arka planı

Katmanın tam yüzeyi, başlık anlambilimi, gözetilen sınırlar.

Open →
Hız limitleri başvurusu

Plana göre limit tabanları ve x-ratelimit-* başlık anlambilimi.

Open →
Hata kodları başvurusu

OpenAI uyumlu katman altında dönen 4xx / 5xx kodları ve OpenAI eşlemesi.

Open →