Bloga dön

Yeni başlayanlar için AIKılavuz

İyi bir istem nasıl yazılır: 5 bölüm ve bir öncesi/sonrası örneği

Belirsiz tek satırlık bir isteği görev, bağlam, biçim, örnek ve kurallarla bir isteme dönüştürün, ardından OpenAI uyumlu bir API üzerinden gönderin.

Yazan: CheapTokens TeamYayınlanma tarihi: 5 dk okuma

Kapak: tek satırlık bir istek "Bu e-postayı özetle" ve görev, bağlam, biçim, örnek ve kurallara ihtiyaç duyduğu yanıt
Bu sayfada
  1. "Bu e-postayı özetle" neden bir kumar
  2. Beş bölüm, sade bir dille
  3. Öncesi ve sonrası: bir müşteri e-postası
  4. API üzerinden gönderin
  5. Fazladan kelimelerin maliyeti
  6. Kendinizi kontrol edin

Modeliniz Pazartesi günü bir müşteri e-postasını üç paragrafta, Salı günü ise iki madde işaretinde özetliyor. Aynı istem, aynı model. Tek satırlık bir isteğin yaptığı tam olarak budur: her kararı modele bırakır ve model her seferinde farklı karar verir.

İyi bir istem beş soruyu yanıtlar: ne yapmalı (görev), neyle çalışmalı (bağlam), yanıt nasıl görünmeli (biçim), iyi bir yanıt nasıl görünür (örnek) ve nelerden kaçınmalı (kısıtlamalar). Aşağıda, belirsiz bir istek yapılandırılmış bir isteğe dönüşüyor, OpenAI uyumlu CheapTokens API'sinden geçiyor ve daha uzun istemin faturaya ne eklediğini görüyorsunuz.

"Bu e-postayı özetle" neden bir kumar#

"Bu e-postayı özetle" yazdığınızda, aklınızda zaten bir yanıt vardır: tek cümle, ne kadar acil olduğu, sonraki adımın ne olduğu. Model bu resmi göremez. Bu yüzden tahmin eder ve her tahmin makuldür. Birlikte, her çalıştırmada size farklı bir yanıt verirler ve yanıtı okuyan bir betiğin ayrıştıracağı istikrarlı bir şey yoktur.

OpenAI'nin istem mühendisliği kılavuzu (27 Ekim 2026'da okundu) fikri açıkça ortaya koyar: istem mühendisliği etkili talimatlar yazmaktır ve GPT modelleri bir görevi nasıl başaracaklarını açıkça söylediğinizde daha iyi performans gösterir. Alışkanlık metinle sınırlı değildir. 26 Ekim 2026'da bir Telegram kanalı bloklara ayrılmış 30 saniyelik bir üretilmiş video için bir istem paylaştı: sahne, görsel stil, diyalog, ses ve hariç tutulanlar, teknik özellikler. Farklı görev, aynı hamle. Yazar, her kararı modele bırakmak yerine baştan adlandırdı.

Kendin deneDeneyin: bir model "Bu e-postayı özetle" ifadesinden neyi tahmin etmek zorunda kalır?Cevabı göster

Uzunluk (tek satır veya bir sayfa), hedef kitle (siz veya müşteri), yanıtın şekli (düz metin, maddeler, JSON), neyin önemli sayıldığı ve e-posta söylemediğinde ne yapılacağı. Bunların her biri bir istemin çözebileceği bir şeydir.

Beş bölüm, sade bir dille#

Yeni bir iş arkadaşına ilk gününde brifing verdiğinizi düşünün. "Şununla ilgilen" size bir tahmin kazandırır. İşi, malzemeyi, istediğiniz biçimi, bir örneği ve bir "yapma"yı içeren bir yapışkan not ise kastettiğinizi kazandırır.

Görev bir fiil ve bir nesnedir: "E-postayı özetle ve aciliyetini derecelendir." Gerçek anlamda olun. "Bu e-postayla yardım et" bir görev değildir.

Bağlam modelin üzerinde çalıştığı malzemedir: e-posta, bir ürün açıklaması, bir politika. Model yalnızca eğitimde öğrendiklerini ve sizin yapıştırdıklarınızı bilir. Yapıştırılan metni <email>…</email> gibi XML tarzı etiketler veya markdown başlıkları gibi sınırlayıcılarla sarın, böylece talimatlarınız metinle karıştırılamaz. OpenAI'nin kılavuzu her ikisini de önerir.

Biçim yanıtın nasıl göründüğüdür: "summary, urgency, next_step anahtarlarına sahip JSON" veya "her biri en fazla 12 kelimeden oluşan üç madde". En çok kod yanıtı okuduğunda önemlidir.

Örnek istediğiniz çıktıyla birlikte bir girdidir. Kılavuz, istenen çıktılarla çeşitli girdi aralıklarını kapsayan az sayıda örnek önerir. Bir örnek iyi bir başlangıçtır; girdileriniz çok farklıysa ikinci bir örnek ekleyin.

Kısıtlamalar "yapma"lardır: yalnızca e-postadaki gerçekleri kullan, bir şey eksikse "bilinmiyor" yaz, iade veya indirim yok.

Genellikle gittikleri sırayla bir istemin beş bölümü
Yapılandırılmış bir istemin beş bölümü: görev, bağlam, biçim, örnek, kısıtlamalar

Sıra da biraz önemlidir. Aynı kılavuz, bir geliştirici veya sistem mesajının genellikle kimlik, talimatlar, örnekler, bağlam şeklinde gittiğini ve bağlamın istekler arasında değiştiği için sona yakın olması gerektiğini söyler. Kurallar sistem mesajına gider; girdi kullanıcı mesajına gider.

Eşleştir

Bir istemin her bölümünü yanıtladığı soruyla eşleştirin

  • GörevModel ne yapmalı?
  • BağlamHangi malzeme üzerinde çalışır?
  • BiçimYanıt nasıl görünmeli?
  • Örnekİyi bir yanıt nasıl görünür?
  • KısıtlamalarNeleri yapmamalı?

Öncesi ve sonrası: bir müşteri e-postası#

İşte tek satırlık istem, beş bölümün tamamıyla aynı isteğin yanında. E-postanın kendisi bağlamdır ve kullanıcı mesajına gider, <email> etiketleriyle sarılır.

Karşılaştır

Bir istek, iki istem

Öncesi

text
Summarize this email.

Sonrası

text
You summarize customer emails for a support team.

Task: Summarize the email in the <email> tags and rate how urgent it is.

Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).

Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}

Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.

"Sonrası"nı baştan sona okuyun ve her bölümü işaret edebilirsiniz: açılış satırı ve görev, biçim satırı, örnek, kurallar. E-posta metinde kasıtlı olarak yoktur. Her istekle değişir, bu yüzden ayrı seyahat eder.

Yapılandırılmış istemin iskeleti: beş etiketli bölüm
Bir istemin beş bölümü, her biri bir satır (e-posta kullanıcı mesajına gider)

API üzerinden gönderin#

Talimatlar asla değişmez, bu yüzden bir sabitte yaşarlar ve ilk giderler. E-posta değişir, bu yüzden son gider. Bu, CheapTokens'e yönlendirilmiş OpenAI Python SDK'sını kullanan tüm betiktir. Model DeepSeek-V4-Flash'tir: 380K bağlam, yanıt başına 32.768'e kadar çıktı token'ı, her saatte tek fiyat. Temel URL'yi ve model kimliğini CheapTokens belgelerinden alın; henüz bir anahtarınız yoksa, ilk API isteğiniz size yol gösterir.

python
import json
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

SYSTEM_PROMPT = """You summarize customer emails for a support team.

Task: Summarize the email in the <email> tags and rate how urgent it is.

Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).

Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}

Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.
"""

email = "Hello, I was charged twice for my subscription this month. Please fix it before Friday, my card is almost at its limit."

response = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": f"<email>\n{email}\n</email>"},
    ],
)

reply = response.choices[0].message.content
print(json.loads(reply))
print(response.usage.prompt_tokens, response.usage.completion_tokens)

Biçim satırı işini yaptıysa, yanıt summary, urgency ve next_step içeren tek bir JSON nesnesidir ve json.loads onu bir sözlüğe dönüştürür. Bir hata verirse, model JSON'u fazladan metne sarmıştır: son kuralı sıkılaştırın veya ikinci bir örnek ekleyin. Son satır, kaç token'ın girip çıktığını yazdırır; bu, bir sonraki bölümün konusudur.

Fazladan kelimelerin maliyeti#

Token, bir kelimenin parçasıdır. Gönderdiğiniz (girdi) ve modelin yazdığı (çıktı) için token başına ödeme yaparsınız ve çıktı daha pahalı taraftır. Daha fazlası girdi ve çıktı token'ları bölümünde.

Diyelim ki günde 1.000 e-posta ile bir destek botu çalıştırıyorsunuz ve e-posta yaklaşık 300 token. Tek satırlık istem yaklaşık 10 token talimat ekler, yani yaklaşık 310 girer; yaklaşık 250 token'lık serbest biçimli bir özet aldığını varsayıyoruz. Yukarıdaki sistem istemi yaklaşık 200 token, artı <email> etiketleri için yaklaşık 10, yani yaklaşık 500 girer; biçim satırının yanıtı yaklaşık 80 token'lık bir JSON'da tuttuğunu varsayıyoruz. DeepSeek-V4-Flash'ta bu, tek satırlık istem için e-posta başına $0.00003 ve yapılandırılmış istem için $0.000016. İstem uzadı, ancak istek ucuzladı, çünkü uzun kısım girdi ve kısalttığınız kısım çıktı. Betiği çalıştırın ve bu varsayımları kendi prompt_tokens ve completion_tokens değerlerinizle değiştirin.

İşte modeller genelinde günde 1.000 e-postada yapılandırılmış istem. Toplamda, girdi ve çıktı birlikte sayıldığında, CheapTokens bu iş yükünde OpenRouter'ın referans fiyatından daha ucuz çıkar; güncel fiyatlar fiyatlandırma sayfasındadır.

Model İstek başına 1.000 istek OpenRouter, 1.000 istek
GLM-5.3-Flash $0.000013 $0.0132 $0.0234
DeepSeek-V4-Flash $0.000016 $0.0155 $0.0462
MiniMax-M2.7 $0.000037 $0.037 $0.444

İstek başına 500 giriş ve 80 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.

Kendinizi kontrol edin#

Bir betik bir istemi yeniden kullandığında en çok karşılığını veren alışkanlıkla ilgili bir soru. Yapı işledikten sonra, sonraki düğmeler sistem mesajı ve sıcaklıktır; Sistem istemi ve sıcaklık bölümünde ele alınmıştır.

Hızlı kontrol

Betiğiniz her seferinde yeni bir e-postayla aynı talimatları gönderir. E-posta nereye gitmeli?

Cevabı göster

Cevap: Sonda, talimatlardan ve örnekten sonra

Talimatlar istekler arasında aynı kalır ve e-posta değişir. OpenAI'nin kılavuzu, değişen bağlamın istemin sonuna yakın konulmasını önerir.