Uygulamayı aç
Moonborn — Developers

OpenAI-compat geçişi

OpenAI SDK'sından Moonborn'un `/v1/openai` shim'ine tek satırlık swap. Streaming, tool calling ve function calling geçişli.

OpenAI SDK'sını zaten kullanıyorsan, Moonborn'a en ucuz yol bir base-URL swap. /v1/openai/chat/completions shim'i OpenAI şekilli istekleri kabul eder, OpenAI şekilli yanıtlar döner ve model alanı bir gpt-4 yerine bir persona ID taşır.

1. Client'ı swap et

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

Üç değişiklik:

  • API key env var: OPENAI_API_KEY yerine MOONBORN_API_KEY.
  • Base URL: https://api.moonborn.co/v1/openai.
  • Model: bir model adı yerine persona://<persona_id>.

2. Bir çağrı yap

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

Yanıt şekli OpenAI'ye tam uyuyor. Moonborn'a özgü metadata x-moonborn-* response header'larında biner — drift score, voice fingerprint match, audit ID. OpenAI client'ın default'ta görmezden gelir; istersen reply.response.headers'tan çek.

3. Stream

const stream = await client.chat.completions.create({
  model: 'persona://persona_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 ?? '');
}

Streaming değişmeden geçer. SSE chunk'ları OpenAI'nin delta şeklinde; drift envelope stream kapanırken son header olarak gelir.

4. Tool / function calling

const reply = await client.chat.completions.create({
  model: 'persona://persona_01H...',
  messages: [{ role: 'user', content: 'İstanbul\'da saat kaç?' }],
  tools: [
    {
      type: 'function',
      function: {
        name: 'get_time',
        parameters: { type: 'object', properties: { tz: { type: 'string' } } },
      },
    },
  ],
});

Tool çağrıları geçişli. Personanın sesi yine tool-result ele alımını sarar — aracının döndürdüğü veri etrafında karakterde bir açıklama alırsın.

5. Persona'larını model olarak listele

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

GET /v1/openai/models workspace'inin personalarını OpenAI'nin model şeklinde döner. IDE picker'ları, admin UI'lardaki model selector'ları vb. için yararlı.

OpenAI uyumlu olmayanlar

  • Image generation, embeddings, audio. Moonborn'un alanı değil. Bu endpoint'ler için OpenAI client'ını yan yana tut.
  • Custom assistants API. Moonborn'un yerli persona yüzeyini kullan — bkz. Build your first persona.

Tarif

Free ve üstü. Endpoint workspace'inin rate limit'ini miras alır; bkz. rate limits reference.

Sonraki