İlk AI Oturumunuzu Çalıştırın
Bu öğreticide bir AI konuşma oturumu oluşturacak, mesajlar gönderecek, Sunucu Gönderimli Olaylar kullanarak yanıtları gerçek zamanlı akış olarak alacak ve AI özellik çalıştırmalarını yürüteceksiniz.
Önkoşullar
- Geçerli bir erişim belirteci olan bir Chainabit hesabı
- Terminalinizde
curl'un mevcut olması - AI kredileri içeren bir plan (bakiyenizi
/wallet/meadresinden kontrol edebilirsiniz)
Ortam değişkenlerinizi ayarlayın:
export TOKEN="your-access-token"Adım 1: Mevcut AI Sağlayıcılarını Kontrol Edin
Bir oturuma başlamadan önce, planınızın hangi AI sağlayıcılarına erişim sağladığını kontrol edin:
curl -s "https://api.chainabit.com/api/v1/ai/providers" \
-H "Authorization: Bearer $TOKEN"Yanıt, her sağlayıcı için bir isAccessible bayrağı içerir:
{
"data": [
{
"key": "google",
"displayName": "Google",
"isActive": true,
"isAccessible": true
},
{
"key": "openai",
"displayName": "OpenAI",
"isActive": true,
"isAccessible": true
},
{
"key": "anthropic",
"displayName": "Anthropic",
"isActive": true,
"isAccessible": false
}
]
}isAccessible: true, planınızın o sağlayıcıya erişim izni verdiği anlamına gelir. Mesaj gönderirken bir sağlayıcı anahtarı (örneğin openai) kullanın.
Ücretsiz plan: Yalnızca
Adım 2: Yeni Bir AI Oturumu Oluşturun
Bir oturum, bir konuşma zincirini tutar:
curl -s -X POST "https://api.chainabit.com/api/v1/ai/sessions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Fitness coaching" }'Yanıt:
{
"data": {
"id": "session_01HQS...",
"title": "Fitness coaching",
"status": "active",
"startedAt": "2026-03-17T10:00:00.000Z"
}
}Oturum ID'sini kaydedin:
export SESSION_ID="session_01HQS..."Adım 3: Bir Mesaj Gönderin
Oturuma bir mesaj gönderin. Hangi AI'nin kullanılacağını kontrol etmek için isteğe bağlı olarak bir provider (sağlayıcı) ve effortMode (çaba modu) geçirebilirsiniz:
curl -s -X POST "https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/messages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "I want to build a morning reporting workflow. I have 45 minutes before work. What activities should I include?",
"provider": "openai",
"effortMode": "thinking"
}'| Alan | Değerler | Açıklama |
|---|---|---|
provider | google, openai, anthropic, mistral ve diğerleri — güncel tam liste için GET /ai/providers | Kullanılacak sağlayıcı. Varsayılan olarak google. google dışındaki her sağlayıcı, o sağlayıcının yetkisine sahip ücretli bir plan gerektirir. |
effortMode | basic, thinking, pro | Model katmanı. basic = hızlı, thinking = dengeli, pro = en yetenekli. |
Her iki alan da isteğe bağlıdır — bunları atlamak planınızın varsayılanını kullanır.
Yanıt:
{
"data": {
"sessionId": "session_01HQS...",
"userMessage": {
"id": "msg_01HQT...",
"role": "user",
"content": "I want to build a morning reporting workflow. I have 45 minutes before work. What activities should I include?",
"createdAt": "2026-03-17T10:01:00.000Z"
},
"assistantMessage": {
"id": "msg_01HQU...",
"role": "assistant",
"content": "",
"status": "pending",
"createdAt": "2026-03-17T10:01:00.100Z"
},
"run": { "id": "run_01HQU...", "status": "queued" },
"resolvedModel": { "modelKey": "gpt-4o", "displayName": "GPT-4o", "provider": "openai", "reason": "explicit" },
"effortDowngrade": null
}
}Bu uç nokta hem kullanıcı mesajını hem asistan mesajını, artı yanıtı üretecek çalıştırmayı (run) oluşturur ve döndürür. Asistan mesajının ID'sini kaydedin — bir sonraki adımda akışa alacağınız budur, kullanıcı mesajının değil:
export MESSAGE_ID="msg_01HQU..."Adım 4: SSE Yoluyla AI Yanıtını Akış Olarak Alın (Stream)
AI yanıtını gerçek zamanlı olarak almak için SSE akış uç noktasına bağlanın. Arabelleğe almayı devre dışı bırakmak için curl -N kullanın:
curl -N "https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/messages/$MESSAGE_ID/stream" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: text/event-stream"SSE Olay Formatı
Sunucu, olayları standart SSE formatında gönderir. Bir akıştaki ilk çerçeve bir stream.connected ön bilgisidir; sonrasındaki her olay numaralandırılmış bir zarftır (bir id: satırı artı bir eventId/type/runId/payload JSON gövdesi — timestamp ve v alanları kısalık için aşağıda atlanmıştır):
event: stream.connected
data: {"runId": "run_01HQU..."}
id: 1
event: message.delta
data: {"eventId":1,"type":"message.delta","runId":"run_01HQU...","payload":{"delta":"Great question! Here's a"}}
id: 2
event: message.delta
data: {"eventId":2,"type":"message.delta","runId":"run_01HQU...","payload":{"delta":" structured 45-minute morning reporting workflow"}}
id: 3
event: message.delta
data: {"eventId":3,"type":"message.delta","runId":"run_01HQU...","payload":{"delta":" that balances exercise, mindfulness, and preparation:\n\n"}}
id: 4
event: message.completed
data: {"eventId":4,"type":"message.completed","runId":"run_01HQU...","payload":{"runId":"run_01HQU...","messageId":"msg_01HQU...","content":"Great question! Here's a structured 45-minute morning reporting workflow..."}}Olay Türleri
| Olay | Açıklama |
|---|---|
message.delta | Yanıt içeriğinin bir parçası |
message.completed | Akış olarak gelen asistan içeriği tamamlandı |
tool.* | Araç-kartı, ilerleme, onay ve sonuç olayları |
run.error / run.failed | Üretim sırasında bir hata oluştu |
run.settlement.completed | Çalıştırma (Run) tamamen çözüldü ve sonlandı |
Adım 5: Konuşma Geçmişini Listeleyin
Bir oturum için tam konuşma zincirini alın:
curl -s "https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/messages" \
-H "Authorization: Bearer $TOKEN"Yanıt:
{
"data": [
{
"id": "msg_01HQT...",
"role": "user",
"content": "I want to build a morning reporting workflow. I have 45 minutes before work. What activities should I include?",
"createdAt": "2026-03-17T10:01:00.000Z"
},
{
"id": "msg_01HQU...",
"role": "assistant",
"content": "Great question! Here's a structured 45-minute morning reporting workflow...",
"createdAt": "2026-03-17T10:01:05.000Z"
}
],
"meta": {
"total": 2
}
}Adım 6: Bir AI Çalıştırması (Run) Oluşturun
AI çalıştırmaları, serbest biçimli bir oturum yerine belirli, yetkilendirme ile korunan bir özelliği (feature) yürütür — özellik anahtarı yol (path) içinde yer alır ve istek gövdesi rastgele bir input nesnesi değil, sohbet tarzı bir messages dizisidir:
GET /ai/features, planınızın erişimi olan her özellik anahtarını listeler. İsteğe bağlı gövde alanları: temperature, maxOutputTokens, idempotencyKey, provider ve effortMode (basic | thinking | pro).
Yanıt (201 Created, veya bu tam istek daha önceki aynı bir çağrıdan hâlâ kuyrukta/çalışıyorsa 200 OK):
{
"data": {
"requestId": "req_01HQV...",
"runId": "run_01HQV...",
"result": {
"finishReason": "queued"
}
}
}Çalıştırma ID'sini kaydedin:
export RUN_ID="run_01HQV..."GET /ai/runs/$RUN_ID, kuyruktan çıktıktan sonra çalıştırmanın güncel durumunu döndürür.
Adım 7: Çalıştırma Çıktısını Akış Olarak Alın (Stream)
AI çalıştırma çıktısını, mesajları akış olarak aldığınız şekilde akış olarak alın:
Çıktı — Adım 4'teki mesaj akışında olduğu gibi, ilk çerçeve bir stream.connected ön bilgisidir ve sonrasındaki her olay numaralandırılmış bir zarftır (timestamp ve v alanları kısalık için atlanmıştır, bkz. Adım 4):
event: stream.connected
data: {"runId": "run_01HQV..."}
id: 1
event: run.started
data: {"eventId":1,"type":"run.started","runId":"run_01HQV...","payload":{"runId":"run_01HQV..."}}
id: 2
event: message.delta
data: {"eventId":2,"type":"message.delta","runId":"run_01HQV...","payload":{"delta":"## Weekly Summary: March 10-16\n\n"}}
id: 3
event: message.delta
data: {"eventId":3,"type":"message.delta","runId":"run_01HQV...","payload":{"delta":"**Workout Chain:** 5/7 days completed (71%)\n"}}
id: 4
event: message.completed
data: {"eventId":4,"type":"message.completed","runId":"run_01HQV...","payload":{"runId":"run_01HQV...","messageId":"msg_01HQW...","content":"## Weekly Summary: March 10-16\n\n..."}}
id: 5
event: run.settlement.completed
data: {"eventId":5,"type":"run.settlement.completed","runId":"run_01HQV...","payload":{"status":"completed"}}Bağlantı Kopmalarını İşleme
SSE bağlantıları ağ sorunları nedeniyle kopabilir. Yeniden bağlantıyı işlemek için:
- Aldığınız son olayı izleyin
- Bağlantı koptuğunda, aynı uç noktaya yeniden bağlanın
- Üretim hala devam ediyorsa, sunucu kaldığı yerden devam edecektir
# Bağlantı koparsa, sadece yeniden bağlanın:
curl -N "https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/messages/$MESSAGE_ID/stream" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: text/event-stream"Eğer run.settlement.completed, run.failed veya run.error alırsanız, akış sonlanmıştır ve yeniden bağlantı gerekmez.
Özet
Bu öğreticide şunları yaptınız:
- Planınızdaki mevcut AI modellerini listelediniz
- Bir konuşma zinciri için bir AI oturumu oluşturdunuz
- Bir mesaj gönderdiniz ve ID'sini yakaladınız
- SSE aracılığıyla gerçek zamanlı olarak AI yanıtını akış olarak aldınız
- Tam konuşma geçmişini aldınız
- Belirli bir özellik için bir AI çalıştırması oluşturdunuz
- Aynı SSE deseniyle çalıştırma çıktısını akış olarak aldınız
Sonraki Adımlar
- Gelişmiş akış desenleri ve JavaScript örnekleri için AI Yanıtlarını Nasıl Akış Olarak Alırsınız
- Sizin için oturumlar çalıştırabilen yeniden kullanılabilir bir ajan oluşturmak için Bir AI Ajanı Oluşturun
- Tam AI uç noktaları belgeleri için API Referansı