

Yapay Zeka Sunum Ajanları için Sistem Promptları: Geliştirici Rehberi (2026)
Yapay zeka sunum ajanları için sistem promptları, kullanıcı promptlarından farklıdır — belirli görev yerine ajanın rolünü, kısıtlamalarını ve çıktı sözleşmesini kodlar. İyi hazırlanmış bir sistem prompt'u genel bir LLM'i güvenilir bir slayt oluşturma ajanına dönüştürür: tutarlı ses, öngörülebilir yapı ve çağrılabilir araç kullanımı. Bu geliştirici rehberi, 2Slides'ın kendi ajan boru hattı tarafından üretimde kullanılan 7 bölümlü sistem prompt şablonunu, Claude, GPT-4o veya DeepSeek ile bir slayt ajanı oluşturmak için yapıştırılmaya hazır bir sistem prompt'u, güvenilmez çıktı üreten üç anti-örüntüyü ve bir sistem prompt'unu 2Slides V1 API (generate, create-pdf-slides, create-like-this, generate-narration, jobs/:id, themes/search) ile nasıl entegre edeceğinizi kapsar. Rehber üç çalışılmış örnekle bitiyor: kurucu notlarını yatırımcı sunumlarına dönüştüren bir pitch sunumu ajanı, üç aylık metrikleri yönetici izleyiciler için biçimlendiren bir yönetim kurulu sunumu ajanı ve PDF'leri sunumlara dönüştüren bir alım ajanı.
Bir sohbet botu, slayt çıktısı gönderen bir kodlama asistanı veya raporlamayı otomatikleştiren bir iç araç oluşturuyorsanız, bir demo ile üretim arasındaki fark neredeyse tamamen sistem prompt'undadır. Bu rehber geliştirici izleyicisi için yazılmıştır: pazarlama dolgusu yok, gerçek kod, gerçek uç noktalar.
Sistem Promptları vs Kullanıcı Promptları: Gerçek Fark Nedir?
Bir kullanıcı prompt'u görevdir. Bir sistem prompt'u işletim kılavuzudur.
Bir ürün yöneticisi "Q3 geliri hakkında bana 10 slayt yap" yazdığında, bu bir kullanıcı prompt'udur. Ajanınız tutarlı şekilde geçerli JSON döndürdüğünde, slayt bütçenizi asla aşmadığında, her zaman konuşmacı notlarında kaynakları belirttiğinde ve kullanıcı bir dosya yüklediğinde
create-pdf-slidesOpenAI, Anthropic ve Google API'lerinde, sistem prompt'u ayrı bir alandır (Anthropic'te
systemsystemsystemInstruction- Rol tanımı — bu ajanın ne tür bir ajan olduğu
- Çıktı sözleşmeleri — JSON şeması, markdown formatı veya araç çağrı şekli
- Sıkı kısıtlamalar — kelime sınırları, ton kuralları, yasaklı içerik
- Araç/API envanteri — hangi fonksiyonların çağrılabilir olduğu ve ne zaman
- Yükseltme kuralları — ne zaman reddedileceği, açıklama isteneceği veya devredileceği
Bunların tümünü kodlamaya çalışan kullanıcı promptları, kullanıcının görev metni uzadığı anda kırılır. Sistem promptları her turda hayatta kalır.
7 Bölümlü Sistem Prompt Şablonu
2Slides'ta gönderdiğimiz veya denetlediğimiz her güvenilir slayt oluşturma ajanı, bu yedi bölümlü yapının bir varyantını kullanır. Sıra önemlidir — LLM'ler önceki talimatları daha ağır tartar, bu yüzden rol ve sözleşme önce, çalışılmış örnekler en son gelir.
- Kimlik ve Rol — ajanın kim olduğunu ve ne yaptığını tek paragrafta anlatan açıklama
- Çıktı Sözleşmesi — ajanın döndürmesi gereken tam şema veya format
- Sıkı Kısıtlamalar — müzakere edilemez kurallar (uzunluk, ton, yasaklı örüntüler)
- Araç Envanteri — mevcut her API veya fonksiyon, ne zaman çağrılacağı rehberliğiyle
- Akıl Yürütme Politikası — ajanın nasıl düşünmesi gerektiği (düşünce zinciri, öz kontrol, yükseltme)
- Hata İşleme — girdi belirsiz, hatalı biçimlendirilmiş veya konu dışı olduğunda ne yapılacağı
- Çalışılmış Örnekler — doğru davranışı gösteren iki ila dört tam girdi/çıktı çifti
Şablon kasıtlı olarak görüş bildiricidir. Üretimde yanlış davranan ajanları denetlediğimizde, neden neredeyse her zaman kötü bir bölüm değil, eksik bir bölümdür. Araç envanteri olmayan ajanlar uç noktaları halüsine eder. Hata işleme bölümü olmayan ajanlar, girdiler ince olduğunda veri uydurur. Çalışılmış örnekleri olmayan ajanlar uzun konuşmalarda ton kayması yaşar.
Üretim Hazır Sistem Prompt'u (Kopyala-Yapıştır)
İşte şablonun tamamı, arka uç olarak 2Slides V1 API'yi kullanan bir slayt oluşturma ajanı için doldurulmuş. Bunu Claude, GPT-4o, DeepSeek, Gemini veya herhangi bir OpenAI uyumlu uç noktanın
system# Identity & Role You are SlideAgent, a presentation-generation assistant. Your job is to take unstructured user input (notes, transcripts, PDFs, raw data) and return a structured slide deck specification that can be rendered by the 2Slides V1 API. You are not a general-purpose chatbot. You do not answer trivia, write code, or hold long conversations. You produce slide decks, then stop. # Output Contract For every user turn that describes a deck to be built, you MUST output a single JSON object matching this schema: { "title": string, // 3-10 words, title case "audience": string, // e.g. "series-a investors", "exec staff" "tone": "formal" | "conversational" | "technical", "slide_count": integer, // 5 <= n <= 40 "language": string, // ISO 639-1 code, default "en" "theme_hint": string, // free-text, will be passed to themes/search "slides": [ { "layout": "title" | "content" | "two-column" | "quote" | "chart" | "image", "heading": string, // <= 12 words "bullets": string[], // 0-5 items, each <= 18 words "speaker_notes": string, // 30-80 words, full sentences "image_prompt": string?, // optional, for image layouts "chart_data": object? // optional, for chart layouts } ], "api_call": { "endpoint": "generate" | "create-pdf-slides" | "create-like-this", "reasoning": string // one sentence: why this endpoint } } No prose before or after the JSON. No markdown fences around the JSON. If the user asks a question that is not a deck request, return: { "error": "not_a_deck_request", "suggestion": string } # Hard Constraints - Never exceed 40 slides. If the user asks for more, cap at 40 and note it in speaker_notes of slide 1. - Every slide must have speaker_notes. Empty speaker_notes is a bug. - Bullets must be parallel grammatically (all start with verb, or all noun phrases — never mixed). - Do not invent statistics. If the user did not provide a number, do not write one. Use "[source needed]" as a placeholder. - Do not include contact information, phone numbers, or email addresses unless the user explicitly provided them. - Titles are title case. Bullets are sentence case. No ALL CAPS. - Refuse to produce content that is defamatory, or that makes medical, legal, or financial claims the user did not source. # Tool Inventory (2Slides V1 API) You may direct the calling code to invoke these endpoints. You do not call them yourself; you name them in the "api_call" field. - generate — Default. Text-in, deck-out. Use for most requests. - create-pdf-slides — When the user uploaded or pasted a PDF URL. Pass the PDF URL in the user prompt. - create-like-this — When the user said "like my last deck" or provided a reference deck URL. Reuses theme + structure. - generate-narration — After a deck is built, to add TTS voiceover to each slide. Only call when user asks for video or narration explicitly. - download-slides-pages-voices — Batch download rendered pages and audio. Call at the end of a video workflow. - jobs/:id — Poll for async job status. The calling code handles polling; you do not. - themes/search — Find a theme by keyword. Your "theme_hint" field will be passed here by the calling code. # Reasoning Policy Before emitting JSON, think step by step inside <thinking> tags: 1. Parse the user input. What is the actual deck about? 2. Identify the audience. Investors? Engineers? Board? Sales team? 3. Choose slide_count based on content density, not user flattery. 4. Select endpoint: generate (default) | create-pdf-slides | create-like-this. 5. Draft the outline, then self-check: are bullets parallel? Are numbers sourced? After </thinking>, emit the JSON object. Do not include the thinking in the final output — the calling code strips <thinking> blocks before rendering. # Failure Handling - Ambiguous topic: ask ONE clarifying question in the "suggestion" field of an error response. Do not ask multiple questions. - Malformed input (user pasted gibberish): return { "error": "unintelligible_input", "suggestion": "..." }. - Conflicting instructions (user wants 50 slides in 5 minutes): honor the hard constraint (max 40) and note the conflict in slide 1 speaker_notes. - PDF URL that looks invalid: still emit the JSON with api_call = create-pdf-slides; the backend will return a clear error if the URL cannot be fetched. # Worked Examples ## Example 1: Minimal input User: "make me a deck about our Q3 revenue, we hit $4.2M, up 30% YoY, audience is the board" <thinking> Board audience -> formal tone. Revenue deck -> 8-12 slides is standard. Numbers are sourced (user provided them). Endpoint: generate. </thinking> { "title": "Q3 Revenue Review", "audience": "board of directors", "tone": "formal", "slide_count": 10, "language": "en", "theme_hint": "minimal corporate finance", "slides": [ { "layout": "title", "heading": "Q3 Revenue Review", "bullets": [], "speaker_notes": "Opening slide. ..." }, ... ], "api_call": { "endpoint": "generate", "reasoning": "Text-only input, no reference deck or PDF." } } ## Example 2: PDF ingestion User: "turn this whitepaper into a 12-slide summary for engineers: https://example.com/whitepaper.pdf" <thinking> PDF URL present -> create-pdf-slides. Engineer audience -> technical tone. User specified 12 slides -> honor it. </thinking> { "title": "Whitepaper Summary", "audience": "software engineers", "tone": "technical", "slide_count": 12, "language": "en", "theme_hint": "technical documentation dark", "slides": [ ... ], "api_call": { "endpoint": "create-pdf-slides", "reasoning": "User supplied PDF URL." } } ## Example 3: Not a deck request User: "what is the capital of France?" { "error": "not_a_deck_request", "suggestion": "I build slide decks. Try: 'make a 5-slide briefing on France'." }
Yukarıdaki prompt yaklaşık 1.800 token'dir. Önerdiğimiz tavan budur — daha uzun olan her şey, 8k veya 16k bağlam penceresi olan modellerde kullanıcının gerçek girdisini sıkıştırmaya başlar. 200k-bağlam modelleri için çalışılmış örnekleri güvenle daha fazla uç durumu kapsayacak şekilde genişletebilirsiniz.
2Slides V1 API ile Entegrasyon
Sistem prompt'u uç noktaları adlandırır; çağıran kod onları çağırır. İşte her uç noktanın ne yaptığı ve ajanınızın ne zaman ona başvurması gerektiği.
- — İş beygiri. İsteğe bağlı yapılandırılmış ipuçları (slayt sayısı, dil, tema ID) ile birlikte bir metin prompt'u kabul eder ve bir iş ID'si döndürür. Ajan trafiğinin yüzde doksanı bu uç noktaya çarpar.
POST /api/v1/slides/generate - — Bir PDF URL'sini kabul eder ve bir sunuma dönüştürür. Kullanıcı bir belge yüklediğinde kullanın. Çıkarma, parçalama ve özetlemeyi sunucu tarafında ele alır, böylece ajanınızın bir PDF ayrıştırıcısına ihtiyacı olmaz.
POST /api/v1/slides/create-pdf-slides - — Bir referans sunum URL'si veya ID'si ile yeni bir konu kabul eder. Referansın görsel temasını ve yapısal ritmini yeniden kullanır. "Son yönetim kurulu sunumumuz gibi görünsün" iş akışları için kullanın.
POST /api/v1/slides/create-like-this - — Mevcut bir sunuma TTS seslendirme ekler. Slayt başına ses URL'leri döndürür. Alt akış çıktısı video olduğunda
POST /api/v1/slides/generate-narration'den sonra zincirleyin.generate - — Oluşturulmuş sayfa görsellerini ve seslendirme sesini tek bir yanıtta döndüren toplu uç nokta. Bir video dışa aktarma boru hattının son adımında kullanın.
GET /api/v1/slides/download-slides-pages-voices - — Sorgulama uç noktası. Ajanınız bunu çağırmaz; çağıran kodunuz çağırır. Tamamlandığında
GET /api/v1/jobs/:id,pending,processingveyasuccessartı son sunum URL'sini döndürür.failed - — Herkese açık tema kütüphanesinde anahtar kelime araması.
GET /api/v1/themes/search?q=...'i çağırmadan önce somut bir tema ID'sine çözmek için sistem prompt çıktınızdangeneratealanını buraya geçirin.theme_hint
Tam bir ajan döngüsü sözde kodda şöyle görünür:
const completion = await llm.messages.create({ system: SYSTEM_PROMPT, // the 7-section template above messages: [{ role: "user", content: userInput }], }); const spec = JSON.parse(stripThinking(completion.content)); if (spec.error) return handleError(spec); const theme = await fetch(`/api/v1/themes/search?q=${spec.theme_hint}`); const job = await fetch(`/api/v1/slides/${spec.api_call.endpoint}`, { method: "POST", body: JSON.stringify({ ...spec, themeId: theme.id }), }); const result = await pollJob(job.id); // hits /api/v1/jobs/:id return result.deckUrl;
API şekliyle yeniyseniz, yapay zeka sunum ajanı oluşturmak için geliştirici rehberi çalışan TypeScript ile tam akışta size eşlik eder. Sistem prompt'unun birkaç beceri arasında yalnızca bir beceri olduğu daha yüksek seviyeli bir beceri tabanlı mimari için, yapay zeka slayt ajan becerileri genel bakışına bakın.
Slayt Ajanlarını Bozan 3 Anti-Örüntü
İç analitik araçlarından halka açık satış yardımcılarına kadar onlarca üretim ajanını inceledikten sonra, aynı üç başarısızlık modu tekrar tekrar ortaya çıkıyor.
Anti-Örüntü 1: Sınırsız Çıktı Sözleşmesi
Belirti: Ajan bazen JSON, bazen markdown, bazen kibar bir paragraf döndürür. Ayrıştırıcınız her 50 istekte bir kez
SyntaxError: Unexpected tokenNeden: Sistem prompt'u tam şekli belirtmeden "bir slayt sunumu döndür" diyor veya bir şekil belirtiyor ama etrafında düzyazı olmasına izin veriyor.
Çözüm: Şemayı sistem prompt'una yazın. Açıkça söyleyin: "JSON'dan önce veya sonra düzyazı yok. JSON etrafında markdown çiti yok." Ardından her çıktıyı bir doğrulayıcıdan (Zod, Pydantic, io-ts) geçirin ve hata durumunda yeniden deneyin. Şema uyumluluğunu sıkı bir ürün gerekliliği olarak ele alın, sahip olunsa güzel bir şey olarak değil.
Anti-Örüntü 2: Araç Envanteri Kayması
Belirti: Ajan kendinden emin şekilde kullanıcıya "
refine-deckNeden: Sistem prompt'u araçları yapılandırılmış bir envanter yerine düzyazıda bahsediyor, bu yüzden model varyasyonları halüsine ediyor. Veya envanter yeni uç noktaları gönderdikten sonra güncel değil.
Çözüm: Sistem prompt'unda tek bir kanonik araç envanteri tutun, API değiştiğinde her seferinde yenileyin. API'nizin 7 uç noktası varsa, tam olarak 7 listeleyin, her biri ne zaman çağrılacağını açıklayan bir satırla. Modele başka bir şey adlandırmasını yasaklayın — "Yukarıdaki uç noktaların hiçbiri uygulanmazsa,
api_call: nullAnti-Örüntü 3: İstatistik Halüsinasyonu
Belirti: Kullanıcı sayı sağlamadan "Q3 sayılarımız hakkında bir sunum yap" diyor. Ajan neşeyle "Gelir 8,2 milyon dolara %47,3 büyüdü" yazıyor. CFO öfkeli.
Neden: Hiçbir sıkı kısıtlama veri icat etmeyi yasaklamaz. Model varsayılan olarak makul görünen kurguya varsayılır çünkü çoğu LLM yetersiz belirtildiğinde bunu yapar.
Çözüm: Açık bir kural ekleyin: "İstatistik icat etme. Kullanıcı bir sayı sağlamadıysa, yer tutucu olarak
[source needed]Çalışılmış Örnek 1: Pitch Sunumu Ajanı
Pitch sunumu ajanı, kurucu notlarını 10 slaytlık bir yatırımcı sunumuna dönüştürür. Temel sistem prompt'una bu satırları ekleyin:
# Specialization: Pitch-Deck Mode When building a pitch deck, use exactly this structure: 1. Title 2. Problem 3. Solution 4. Market size (TAM/SAM/SOM) 5. Product demo / screenshot 6. Traction metrics 7. Business model 8. Competition 9. Team 10. Ask (funding amount + use of funds) Force slide_count = 10. Force tone = "conversational but confident." If the user did not provide a number for market size, traction, or ask, use "[source needed]" — do not invent.
Örnek girdi: "Diş ofisleri için B2B SaaS, sigorta taleplerini otomatikleştirmelerine yardımcı oluyoruz, 12 ödeme yapan müşterimiz var, 1,5 milyon dolar seed topluyoruz."
Örnek çıktı (kısaltılmış): Sabit yapıya sahip on slaytlık JSON,
api_call.endpoint = "generate"theme_hint = "pitch deck modern gradient"["12 ödeme yapan diş ofisi", "[source needed] — MRR", "[source needed] — tutma"]Çalışılmış Örnek 2: Yönetim Kurulu Sunumu Ajanı
Yönetim kurulu sunumları farklı bir sözleşmeye sahiptir: resmi ton, yoğun tablolar, sıfır emoji, CFO'ların beklediği belirli slayt sırası. Ekleyin:
# Specialization: Board-Deck Mode Use exactly this structure for board meetings: 1. Executive summary (3 bullets) 2. Financials (revenue, margin, runway) 3. KPI scorecard (table layout) 4. Strategic initiatives (status + risk) 5. Hiring plan 6. Risks & mitigations 7. Asks from the board Force tone = "formal." Force language to match user locale. Every number must have a source in speaker_notes. No image slides — board decks are text and tables.
Yönetim kurulu sunumu ajanı, yönetim kurulu önceki üç aylık sunumları gördüğünde
create-like-thisÇalışılmış Örnek 3: PDF'den Sunuma Alım Ajanı
Bu ajan müşteri tanıtım belgelerini, araştırma PDF'lerini veya RFP'leri sindirilebilir özet sunumlara dönüştürür. Oluşturulması en basit olandır çünkü 2Slides
create-pdf-slides# Specialization: PDF Ingestion Mode Trigger: user provides a URL ending in .pdf OR explicitly says "turn this PDF/whitepaper/report into slides." Always set api_call.endpoint = "create-pdf-slides". Set slide_count based on PDF length: - < 5 pages -> 5 slides - 5-20 pages -> 8-12 slides - 20-50 pages -> 15-20 slides - > 50 pages -> 25-30 slides (cap at 30) Extract the PDF title for the deck title. If the user specified an audience different from the PDF's original audience, flag that in slide 1 speaker_notes so the renderer knows to adapt tone.
Claude Desktop veya benzer bir MCP ana bilgisayarında yaşayan ajanlar için, PDF alım akışı bir saatten kısa sürede bağlanabilir — tam tur için sunumlar oluşturmak için Claude MCP nasıl kullanılır yazısına bakın.
Sıkça Sorulan Sorular
Sistem prompt'unu kodda mı yoksa bir veritabanında mı tutmalıyım?
Üretim ajanları için onu sürüm kontrolüne koyun (oluşturma zamanında içe aktarılan bir
.mdBir sistem prompt'u ne kadar uzun olmalı?
Slayt oluşturma ajanları için 1.500 ila 2.500 token tatlı noktadır. Daha kısa promptlar kısıtlamaları kaçırır ve uç durumlarda başarısız olur. Daha uzun promptlar daha küçük bağlamlı modellerde kullanıcının gerçek girdisini sıkıştırır ve sıklıkla kendilerini tekrar ederler. 3.000 token'in üzerindeyseniz, gereksizliği denetleyin — aynı kural muhtemelen iki kez belirtilmiştir.
Claude vs GPT-4o vs DeepSeek için farklı sistem promptlarına ihtiyacım var mı?
Yalnızca küçük ayarlamalar. 7 bölümlü şablon üçünde de çalışır. Claude XML etiket iskelesine (
<thinking><output>Sistem prompt'unu yeniden dağıtmadan güncelleyebilir miyim?
Evet — ve hızlı yineleme için yapabilmelisiniz. Prompt'u bir ortam değişkeninde veya bir özellik bayrağı hizmetinde saklayın, böylece SRE kötü bir prompt'u saniyeler içinde geri alabilir. Kötü bir prompt'u kötü bir dağıtım gibi ele alın: bu bir üretim olayıdır ve aynı patlama yarıçapı kontrollerine ihtiyaç duyar.
Bir sistem prompt'unu nasıl test ederim?
Gerçek kullanıcı dağılımınızı kapsayan 50 ila 200 girdi/çıktı çiftinden oluşan bir regresyon seti oluşturun: mutlu yol sunumları, düşmanca girdiler, hatalı biçimlendirilmiş JSON girişimleri, konu dışı istekler. Her prompt değişikliğinde tüm seti çalıştırın ve şema uyumluluğunu artı insan derecelendirmeli kaliteyi puanlayın. Bu, ajan güvenilirliği için en yüksek kaldıraçlı tek mühendislik yatırımıdır.
Sonuç
Bir sistem prompt'u metin değil, altyapıdır. Genel bir LLM'i bilinen bir çıktı sözleşmesi, sabit bir araç envanteri ve öngörülebilir başarısızlık modlarına sahip güvenilir bir slayt oluşturma ajanına dönüştüren şeydir. Sistem prompt'unu bir ürün eseri olarak ele alan geliştiriciler — sürüm kontrollü, test edilmiş, izlenen — gerçek kullanıcılarla temas sonrası hayatta kalan ajanlar gönderir. Tek seferlik bir prompt mühendisliği alıştırması olarak ele alan geliştiriciler demo gönderir.
Bu rehberdeki 7 bölümlü şablon ve üretime hazır örnek başlangıç noktasıdır, bitiş noktası değil. Bunları çatallayın, kullanım senaryonuz için özelleştirin, 2Slides V1 API'ye bağlayın ve — en önemlisi — göndermeden önce regresyon kablosunu oluşturun. 2026'da kazanan ajanlar, promptları kodları kadar titizlikle mühendislik yapılmış olanlardır.
Slayt ajanınızı üretimde gönderin — 2Slides API anahtarı edinin veya MCP sunucusunu keşfedin.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free