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_KEYyerineMOONBORN_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
- Yoldaş: MCP server integration.
- Arka plan: OpenAI-compatible integration.
- Models endpoint reference.