2Slides Logo
AI Sunum Ajanı Geliştirme: Komple Geliştirici Rehberi
2Slides Team
6 min read

Yapay Zeka Sunum Ajanı Oluşturma: Eksiksiz Geliştirici Kılavuzu

Yapay zeka ajanları, yazılımların içerik oluşturma şeklini dönüştürüyor. Bir yapay zeka sunum ajanı, CRM iş akışlarından dahili raporlama araçlarına kadar otomatik iş akışlarının bir parçası olarak profesyonel slayt destelerini oluşturabilir, özelleştirebilir ve sunabilir.

Bu kılavuz, 2Slides API kullanarak üretime hazır bir sunum ajanı oluşturma sürecinde size yol gösterir.

Mimari Genel Bakış

Bir sunum ajanı tipik olarak şu akışı izler:

Kullanıcı İsteği → Ajan Mantığı → 2Slides API → İşi Sorgula → Sonucu Teslim Et Bağlam Toplama (veri, şablonlar, marka varlıkları)

Temel Bileşenler

  1. Girdi İşleyici — sunum isteklerini alır (metin, veri, dosyalar)
  2. Bağlam Oluşturucu — istekleri şablonlar, marka bilgileri, verilerle zenginleştirir
  3. Oluşturma Motoru — slayt oluşturmak için 2Slides API'sini çağırır
  4. Durum İzleyici — tamamlanana kadar iş durumunu sorgular
  5. Teslimat Katmanı — indirme bağlantılarını döndürür, e-posta ile gönderir, Slack'e gönderir

Başlarken

1. API Anahtarınızı Alın

2slides.com adresinden kaydolun ve 2slides.com/api adresinde bir API anahtarı oluşturun.

2. Bağımlılıkları Yükleyin

npm install node-fetch dotenv

3. Temel Agent Uygulaması

import fetch from 'node-fetch'; class PresentationAgent { constructor(apiKey) { this.apiKey = apiKey; this.baseUrl = 'https://2slides.com/api/v1'; } async generateSlides({ topic, themeId, language = 'en', resolution = '2K' }) { // Adım 1: Oluşturmayı başlat const response = await fetch(`${this.baseUrl}/slides/generate`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ userInput: topic, themeId, responseLanguage: language, resolution, mode: 'async' }) }); const job = await response.json(); if (!response.ok) throw new Error(job.error || 'Oluşturma başarısız oldu'); // Adım 2: Tamamlanana kadar kontrol et return await this.waitForCompletion(job.jobId); } async waitForCompletion(jobId, maxWait = 300000) { const start = Date.now(); while (Date.now() - start < maxWait) { const response = await fetch(`${this.baseUrl}/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${this.apiKey}` } }); const status = await response.json(); if (status.status === 'success') return status; if (status.status === 'failed') throw new Error('Oluşturma başarısız oldu'); await new Promise(r => setTimeout(r, 3000)); } throw new Error('Oluşturma zaman aşımına uğradı'); } async generateFromFile({ fileUrl, prompt, themeId }) { const response = await fetch(`${this.baseUrl}/slides/create-pdf-slides`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ fileUrl, userInput: prompt, themeId, mode: 'async' }) }); const job = await response.json(); return await this.waitForCompletion(job.jobId); } async generateWithDesign({ topic, referenceImageUrl, resolution = '2K' }) { const response = await fetch(`${this.baseUrl}/slides/create-like-this`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ userInput: topic, designStyle: { global: { referenceImageUrl } }, resolution, mode: 'async' }) }); const job = await response.json(); return await this.waitForCompletion(job.jobId); } async addNarration({ jobId, mode = 'single', voice = 'Charon' }) { const response = await fetch(`${this.baseUrl}/slides/generate-narration`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ jobId, mode, voice, contentMode: 'concise' }) }); return await response.json(); } } // Kullanım const agent = new PresentationAgent('sk-2slides-xxx'); const result = await agent.generateSlides({ topic: '2026 1. Çeyrek İş Değerlendirmesi', themeId: 'mckinsey-theme-id', resolution: '2K' }); console.log('İndir:', result.downloadUrl);

Python Uygulaması

import requests import time class PresentationAgent: def __init__(self, api_key): self.api_key = api_key self.base_url = 'https://2slides.com/api/v1' self.headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' } def generate_slides(self, topic, theme_id=None, language='en', resolution='2K'): response = requests.post( f'{self.base_url}/slides/generate', headers=self.headers, json={ 'userInput': topic, 'themeId': theme_id, 'responseLanguage': language, 'resolution': resolution, 'mode': 'async' } ) response.raise_for_status() job = response.json() return self._wait_for_completion(job['jobId']) def generate_from_file(self, file_url, prompt, theme_id=None): response = requests.post( f'{self.base_url}/slides/create-pdf-slides', headers=self.headers, json={ 'fileUrl': file_url, 'userInput': prompt, 'themeId': theme_id, 'mode': 'async' } ) response.raise_for_status() job = response.json() return self._wait_for_completion(job['jobId']) def _wait_for_completion(self, job_id, max_wait=300): start = time.time() while time.time() - start < max_wait: response = requests.get( f'{self.base_url}/jobs/{job_id}', headers=self.headers ) status = response.json() if status['status'] == 'success': return status if status['status'] == 'failed': raise Exception('Oluşturma başarısız oldu') time.sleep(3) raise TimeoutError('Oluşturma zaman aşımına uğradı') # Kullanım agent = PresentationAgent('sk-2slides-xxx') result = agent.generate_slides('2026 AI Trendleri', resolution='4K') print(f"İndir: {result['downloadUrl']}")

Gelişmiş Kalıplar

Kalıp 1: Şablon Tabanlı Üretim

Farklı kullanım senaryoları için temaları önceden yapılandırın:

const TEMPLATES = { 'pitch-deck': { themeId: 'apple-id', resolution: '2K' }, 'quarterly-review': { themeId: 'mckinsey-id', resolution: '2K' }, 'training': { themeId: 'corporate-id', resolution: '1K' }, 'social-media': { themeId: 'saul-bass-id', resolution: '4K', aspectRatio: '1:1' }, }; async function generateByType(type, topic) { const config = TEMPLATES[type]; return agent.generateSlides({ topic, ...config }); }

Kalıp 2: Veri Hattı Entegrasyonu

Veri kaynaklarınıza bağlanın:

async function weeklyReport(dataSource) { // 1. En son verileri getir const data = await dataSource.getWeeklyMetrics(); // 2. Sunum girdisi olarak formatla const topic = `Haftalık Rapor: Gelir $${data.revenue}, Kullanıcılar ${data.users}, Kayıp Oranı ${data.churn}%`; // 3. Slaytları oluştur const result = await agent.generateSlides({ topic, themeId: 'mckinsey-id' }); // 4. Dağıt await slackBot.postMessage('#team-updates', `Haftalık rapor hazır: ${result.downloadUrl}`); }

Kalıp 3: Çoklu Format Çıktısı

Tek bir hatta slayt + anlatım + video oluşturun:

async function fullPresentation(topic) { // 1. Slaytları oluştur const slides = await agent.generateSlides({ topic }); // 2. Sesli anlatım ekle await agent.addNarration({ jobId: slides.jobId, mode: 'multi', voice: 'Charon' }); // 3. Sesli olarak indir const download = await fetch(`${agent.baseUrl}/slides/download-slides-pages-voices`, { method: 'POST', headers: agent.headers, body: JSON.stringify({ jobId: slides.jobId }) }); return download.json(); }

Üretim Hususları

Hız Sınırlama

  • Varsayılan: 60 istek/dakika
  • Üstel geri çekilme ile 429 yanıtlarını işleyin
  • Toplu işlemler için async modu kullanın

Hata İşleme

  • Tüm API çağrılarını try/catch ile sarın
  • Geçici arızalar için yeniden deneme mantığı uygulayın
  • Hata ayıklama için iş kimliklerini kaydedin

Maliyet Yönetimi

  • Üretim başına kredi kullanımını takip edin
  • 2Slides kontrol panelinizde bütçe uyarıları ayarlayın
  • Dahili/taslak içerik için düşük çözünürlükler kullanın

Güvenlik

  • API anahtarlarını ortam değişkenlerinde saklayın, asla kodda tutmayın
  • Yalnızca sunucu tarafı API çağrıları kullanın — anahtarları asla istemcilere açmayın
  • Webhook geri aramalar için istek imzalama uygulayın

Sıkça Sorulan Sorular

2Slides API üzerine bir SaaS ürünü geliştirebilir miyim?

Evet — API, üretim kullanımı için tasarlanmıştır. Ticari uygulamalar üzerinde herhangi bir kısıtlama yoktur.

Maksimum eşzamanlı üretim sınırı nedir?

API, eşzamanlı istekleri hız sınırlama yoluyla yönetir. Yüksek hacimli ihtiyaçlar için kurumsal limitler hakkında 2Slides ekibiyle iletişime geçin.

İş tamamlama için webhook var mı?

Şu anda jobs endpoint üzerinden yoklama kullanın. Webhook desteği yol haritasında.


Sunum ajanınızı oluşturun — 2Slides'ta API anahtarınızı alın ve programatik olarak slayt oluşturmaya başlayın.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free