Bob Shell için Etkili Prompt'lar Yazmak

Rol, bağlam ve örnekler ekleyerek Bob Shell için etkili prompt'lar yaz, ardından belirsiz bir isteği hata yönetimi içeren belgelenmiş Python koduna dönüştür.

IBM Bob Shell, prompt'ın görevi, bir rol, bağlam ve örnek belirtmesi durumunda daha doğru kod üretir. Bu eğitimde belirsiz bir isteği yapılandırılmış bir prompt'a yeniden yaz ve sonuçları karşılaştır.

Ön koşullar

Bob Shell'in kurulu olduğunu doğrulamak için bir terminal aç ve sürümü kontrol et:

bob --version

Prompt nedir?

Prompt, istediğin çıktıyı elde etmek için Bob'a verdiğin soru, istek veya komuttur. Belirsiz prompt'lar belirsiz yanıtlar üretir. İyi bir prompt açık, spesifik ve Bob'un ne istediğini anlayabilmesi için yeterli bağlam içerir.

Prompt bileşenleri

Etkili bir prompt aşağıdaki bileşenleri bir araya getirir:

BileşenAmacıÖrnek
TalimatBob'a hangi görevi gerçekleştireceğini söyler. Güçlü talimatlar belirsizliği azaltır."Bu API için yazılım malzeme listesi (SBOM) oluştur."
RolBob'un yanıtı o bakış açısına göre uyarlaması için bir persona atar."Python konusunda uzman kıdemli bir yazılım mühendisisin."
BağlamDurum, hedef kitle, ton veya kısıtlamalar gibi arka plan bilgileri ekler."Fonksiyon bir üretim servisi için çalışır ve hata yönetimi içermelidir."
ÖrnekBob'un izlemesini istediğin deseni, formatı veya stili gösterir."@src/api/users.py dosyasının yapısını takip et."
İpucuGenellikle prompt'ın sonuna yerleştirilen ve istediğin yanıta yönlendiren bir ifade."Yalnızca fonksiyonu döndür, def ile başla."

Prompt'larını yeniden kullanmak ve ekibinle paylaşmak için özel slash komutları olarak kaydedebilirsin.

Etkili bir prompt'ı ne yapar?

Aşağıdaki en iyi uygulamalar, Bob için etkili prompt'lar yazmanıza yardımcı olabilir.

  • Spesifik ol: Prompt'ın ne kadar spesifik olursa, Bob istediğini o kadar iyi anlayabilir. "Python fonksiyonunu nasıl yazarım?" yerine "Sayı listesi alıp ortalamasını döndüren bir Python fonksiyonunu nasıl yazarım?" diye sor.
  • Bağlam sağla: Prompt'ın belirli bir proje veya kod tabanıyla ilgiliyse, bu konuda biraz bağlam sağla. Bu, Bob'un durumuna uygun bir yanıt oluşturmasına yardımcı olur. Bob'u belirli dosyalara yönlendirmek için @src/main.py gibi @ referanslarını kullan.
  • Görevleri böl: Backlog'daki bir görevi iyileştirirken yaptığın gibi, karmaşık görevleri daha küçük ve yönetilebilir adımlara böl. Bu, Bob'un daha doğru ve odaklı yanıtlar oluşturmasına yardımcı olabilir.
  • Örnekler ekle: Yeni bir API ekliyorsan, Bob'a kod tabanındaki iyi yazılmış API'leri örnek olarak incelemesini yönlendir. İstediğin format veya stili göstermek için prompt'ına da örnek ekleyebilirsin.

Belirsiz bir prompt'ı iyileştirme

Bu bölümde, Bob için belirsiz bir prompt yazacak ve çıktıyı inceleyeceksin. Daha sonra yanıtın kalitesini artırmak için en iyi uygulamalara dayanarak prompt'ını iyileştireceksin.

Amaç, Bob'un UTC formatında mevcut tarih ve saati yazdıran bir Python fonksiyonu oluşturmasını sağlamaktır. Fonksiyon iyi belgelenmiş ve hata yönetimi içermelidir.

Bir terminal açın ve Agent modunda etkileşimli bir oturum başlat:

bob chat --mode agent

Aşağıdaki prompt'ı gir:

Write a Python function that prints the date and time.

Bob bir yanıt oluşturur, ancak tüm gereksinimlerini karşılamayabilir.

from datetime import datetime

def print_datetime():
    now = datetime.now()
    print(now.strftime("%Y-%m-%d %H:%M:%S"))

Fonksiyonun hata yönetimi yoktur ve UTC değil, yerel saati yazdırır.

Bir sonrakini etkilememesi için /clear komutunu girerek konuşma geçmişini sıfırla:

/clear

Prompt bileşenlerini kullanarak prompt'ını iyileştir:

  • Rol: "Python 3 konusunda uzman kıdemli bir yazılım mühendisisin."
  • Talimat: "UTC formatında mevcut tarih ve saati yazdıran bir Python 3 fonksiyonu yaz."
  • Bağlam: "Fonksiyon iyi belgelenmiş ve hata yönetimi içermelidir."
  • Örnek: Bob'u Real Python istisna yönetimi en iyi uygulamaları gibi yetkili bir kaynağa yönlendir.

İyileştirilmiş prompt'ı gir:

You are a senior software engineer with expertise in Python 3. 
Write a Python 3 function that prints the current date and time in UTC format. 
The function should be well documented and include error handling, 
modeled after https://realpython.com/ref/best-practices/exception-handling/.
"""
utc_datetime.py — Utility for printing the current UTC date and time.
"""

from datetime import datetime, timezone

def print_utc_datetime() -> None:
    """Print the current date and time in UTC (ISO 8601 format).

    Retrieves the current moment from the system clock, attaches UTC timezone
    info, formats it as an ISO 8601 string, and writes it to stdout.

    Returns:
        None

    Raises:
        OSError: If the system clock cannot be read (e.g., hardware failure or
            OS-level permission restrictions).
        ValueError: If datetime formatting unexpectedly fails (e.g., year out
            of the supported range).

    Example:
        >>> print_utc_datetime()
        Current UTC date and time: 2025-07-15T13:42:00.123456+00:00
    """
    try:
        now_utc: datetime = datetime.now(tz=timezone.utc)
    except OSError as exc:
        # System clock is unavailable or inaccessible.
        raise OSError("Failed to read the system clock.") from exc

    try:
        formatted: str = now_utc.isoformat()
    except ValueError as exc:
        # Extremely unlikely, but guard against out-of-range datetime values.
        raise ValueError(
            f"Failed to format the datetime object: {now_utc!r}"
        ) from exc

    print(f"Current UTC date and time: {formatted}")


if __name__ == "__main__":
    print_utc_datetime()

İyileştirilmiş prompt, UTC kullanan, docstring ve istisna yönetimi içeren bir fonksiyon üretir.

IBM SkillsBuild

IBM SkillsBuild, Bob gibi yapay zeka asistanları için etkili prompt'lar yazma konusunda kurslar sunan ücretsiz bir çevrimiçi öğrenme platformudur.

İyi prompt yazma hakkında daha fazla bilgi edinmek için Craft Precise Prompts for AI Models kursunu al.

Sonraki adımlar

Bu eğitimde, etkili bir prompt'ın bileşenlerini öğrendin ve belirsiz bir prompt'ı istediğin çıktıyı güvenilir biçimde üreten bir hale getirdin.

Bob'un otomatik olarak uygulayabileceği yeniden kullanılabilir, tekrarlanabilir bir iş akışına dönüştürmek için Skill oluşturma ve kullanma bölümüne geç.

Bu konu nasıl?