Logo 2Slides
Zbuduj agenta AI do prezentacji: Kompletny przewodnik dla programistów
2Slides Team
6 min read

Zbuduj Agenta AI do Prezentacji: Kompletny Przewodnik dla Deweloperów

Agenci AI zmieniają sposób, w jaki oprogramowanie tworzy treści. Agent AI do prezentacji może generować, dostosowywać i dostarczać profesjonalne zestawy slajdów jako część zautomatyzowanych procesów — od pipeline'ów CRM po wewnętrzne narzędzia raportowania.

Ten przewodnik przeprowadzi Cię przez budowanie gotowego do produkcji agenta prezentacji przy użyciu API 2Slides.

Przegląd Architektury

Agent prezentacji zazwyczaj działa według następującego schematu:

Żądanie Użytkownika → Logika Agenta → API 2Slides → Sprawdzanie Zadania → Dostarczenie Wyniku ↓ Zbieranie Kontekstu (dane, szablony, zasoby marki)

Główne Komponenty

  1. Moduł Obsługi Wejścia — odbiera żądania prezentacji (tekst, dane, pliki)
  2. Kreator Kontekstu — wzbogaca żądania o szablony, informacje o marce, dane
  3. Silnik Generowania — wywołuje API 2Slides w celu utworzenia slajdów
  4. Monitor Statusu — sprawdza status zadania do momentu ukończenia
  5. Warstwa Dostarczania — zwraca linki do pobrania, wysyła przez email, publikuje na Slack

Pierwsze kroki

1. Uzyskaj swój klucz API

Zarejestruj się na 2slides.com i utwórz klucz API na 2slides.com/api.

2. Zainstaluj zależności

npm install node-fetch dotenv

3. Podstawowa implementacja agenta

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' }) { // Krok 1: Rozpocznij generowanie 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 || 'Generation failed'); // Krok 2: Odpytuj do momentu ukończenia 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('Generation failed'); await new Promise(r => setTimeout(r, 3000)); } throw new Error('Generation timed out'); } 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(); } } // Użycie const agent = new PresentationAgent('sk-2slides-xxx'); const result = await agent.generateSlides({ topic: 'Przegląd biznesowy Q1 2026', themeId: 'mckinsey-theme-id', resolution: '2K' }); console.log('Pobierz:', result.downloadUrl);

Implementacja w Python

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('Generowanie nie powiodło się') time.sleep(3) raise TimeoutError('Przekroczono limit czasu generowania') # Użycie agent = PresentationAgent('sk-2slides-xxx') result = agent.generate_slides('Trendy AI 2026', resolution='4K') print(f"Pobierz: {result['downloadUrl']}")

Zaawansowane Wzorce

Wzorzec 1: Generowanie Oparte na Szablonach

Wstępnie skonfiguruj motywy dla różnych przypadków użycia:

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 }); }

Wzorzec 2: Integracja z Pipeline'em Danych

Połącz się ze swoimi źródłami danych:

async function weeklyReport(dataSource) { // 1. Pobierz najnowsze dane const data = await dataSource.getWeeklyMetrics(); // 2. Sformatuj jako dane wejściowe prezentacji const topic = `Raport Tygodniowy: Przychód $${data.revenue}, Użytkownicy ${data.users}, Rezygnacje ${data.churn}%`; // 3. Wygeneruj slajdy const result = await agent.generateSlides({ topic, themeId: 'mckinsey-id' }); // 4. Dostarcz await slackBot.postMessage('#team-updates', `Raport tygodniowy gotowy: ${result.downloadUrl}`); }

Wzorzec 3: Wyjście w Wielu Formatach

Wygeneruj slajdy + narrację + wideo w jednym pipeline:

async function fullPresentation(topic) { // 1. Wygeneruj slajdy const slides = await agent.generateSlides({ topic }); // 2. Dodaj narrację głosową await agent.addNarration({ jobId: slides.jobId, mode: 'multi', voice: 'Charon' }); // 3. Pobierz z dźwiękiem 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(); }

Uwagi Produkcyjne

Ograniczanie Szybkości

  • Domyślnie: 60 żądań/minutę
  • Obsługuj odpowiedzi 429 z wykładniczym wycofywaniem
  • Używaj trybu asynchronicznego dla operacji wsadowych

Obsługa Błędów

  • Opakowuj wszystkie wywołania API w try/catch
  • Implementuj logikę ponownych prób dla przejściowych błędów
  • Loguj ID zadań do debugowania

Zarządzanie Kosztami

  • Śledź zużycie kredytów na generowanie
  • Ustaw alerty budżetowe w panelu 2Slides
  • Używaj niższych rozdzielczości dla wewnętrznych/wersji roboczych treści

Bezpieczeństwo

  • Przechowuj klucze API w zmiennych środowiskowych, nigdy w kodzie
  • Używaj wywołań API tylko po stronie serwera — nigdy nie ujawniaj kluczy klientom
  • Implementuj podpisywanie żądań dla callbacków webhook

Najczęściej Zadawane Pytania

Czy mogę zbudować produkt SaaS w oparciu o API 2Slides?

Tak — API jest zaprojektowane do użytku produkcyjnego. Nie ma ograniczeń dla aplikacji komercyjnych.

Jaki jest maksymalny limit równoczesnych generowań?

API obsługuje równoczesne żądania poprzez ograniczanie szybkości. W przypadku potrzeb dużej liczby operacji, skontaktuj się z zespołem 2Slides w sprawie limitów korporacyjnych.

Czy istnieje webhook dla ukończenia zadania?

Obecnie używaj odpytywania poprzez endpoint zadań. Wsparcie webhook jest w planach rozwoju.


Zbuduj swojego agenta prezentacji — uzyskaj klucz API w 2Slides i zacznij generować slajdy programowo.

About 2Slides

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

Try For Free
2Slides logo

Twój Agent AI dla slajdów. Oszczędzaj czas, błyszcz szybciej dzięki inteligentnemu tworzeniu prezentacji.

Podsumuj za pomocą AI

ChatGPTClaudeGrokPerplexity
Wszystkie usługi działają

© 2026 2slides. Wszelkie prawa zastrzeżone.