0Pricing
AI Prompt Engineering · Ders

İmzaları ve Modülleri Tanımlama

İmza söz dizimi, ChainOfThought, ReAct ve özel DSPy modülleri.

İmzaları ve Modülleri Tanımlama, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

signature'lar Tür Belirtilmiş Sözleşmelerdir

DSPy signature'ı, bir akıl yürütme adımının girdilerini ve çıktılarını bildiren bir Python sınıfıdır. Bunu LLM çağrınız için tür belirtilmiş bir işlev sözleşmesi olarak düşünebilirsiniz.

Belge dizesi görev açıklamasına dönüşür. Alan ek açıklamaları DSPy'ye ne üretmesi gerektiğini bildirir. Gerçek istem metnini hiçbir zaman yazmazsınız; DSPy bunu bu bildirimden türetir.

Temel Bir signature Tanımlama

Minimal bir signature, dspy.Signature sınıfının alt sınıfı olur ve alanları InputField veya OutputField olarak belirtir. Sınıfın belge dizesi görev yönergesini sağlar.

import dspy

class QASignature(dspy.Signature):
    """Answer the question based on the given context."""
    context: str = dspy.InputField(desc='Relevant background text')
    question: str = dspy.InputField(desc='The question to answer')
    answer: str = dspy.OutputField(desc='A concise answer')

# Inspect what DSPy sees
print(QASignature.instructions)  # The docstring
print(list(QASignature.input_fields.keys()))   # ['context', 'question']
print(list(QASignature.output_fields.keys()))  # ['answer']

Birden Çok Çıktı Alanı

signature'lar birden çok çıktı alanına sahip olabilir. DSPy, modele bunların tümünü tek bir çağrıda üretmesini söyler. Bu, yapılandırılmış bilgileri çıkarmak için kullanışlıdır.

import dspy

class EntityExtraction(dspy.Signature):
    """Extract named entities from the text."""
    text: str = dspy.InputField()
    people: list[str] = dspy.OutputField(desc='List of person names mentioned')
    organizations: list[str] = dspy.OutputField(desc='List of organization names')
    locations: list[str] = dspy.OutputField(desc='List of place names')

extractor = dspy.Predict(EntityExtraction)
result = extractor(text='Elon Musk founded SpaceX in Hawthorne, California.')
print(result.people, result.organizations, result.locations)

Predict Modülü

dspy.Predict en basit modüldür. Bir signature alır ve LM'den çıktıyı doğrudan üretmesini ister. Herhangi bir akıl yürütme iskeleti eklenmez; yalnızca signature ile eşleşen yapılandırılmış bir istem kullanılır.

Görev basit olduğunda ve açık akıl yürütme adımları gerektirmediğinde Predict kullanın.

import dspy

class Classify(dspy.Signature):
    """Classify the sentiment of the review."""
    review: str = dspy.InputField()
    sentiment: str = dspy.OutputField(desc='positive, negative, or neutral')

# Predict wraps the signature with a direct prompt
classifier = dspy.Predict(Classify)
result = classifier(review='The food was amazing and the service was excellent!')
print(result.sentiment)  # positive

ChainOfThought Modülü

dspy.ChainOfThought, signature'a bir ara reasoning alanı ekler. Model önce akıl yürütmesini yazar, ardından son yanıtı üretir.

Bu yaklaşım, herhangi bir akıl yürütme zinciri istem yönergesini sizin yazmanıza gerek kalmadan çok adımlı problemlerde doğruluğu sürekli olarak artırır.

import dspy

class MathSolver(dspy.Signature):
    """Solve the math problem."""
    problem: str = dspy.InputField()
    answer: str = dspy.OutputField(desc='The numerical answer')

# ChainOfThought adds a 'reasoning' step automatically
solver = dspy.ChainOfThought(MathSolver)
result = solver(problem='If a train travels 60 mph for 2.5 hours, how far does it go?')
print(result.reasoning)  # Step-by-step reasoning
print(result.answer)     # 150 miles

ReAct Modülü

dspy.ReAct, Akıl Yürüt + Eyleme Geç döngüsünü uygular. Model, akıl yürütme adımları ile araç çağrıları arasında dönüşümlü ilerler; bu da onu arama yapması, calculate kullanması veya veri getirmesi gereken aracı sistemler için ideal kılar.

Bir araç listesi (belge dizeleri içeren Python işlevleri) sağlarsınız; DSPy, bunların sıralı şekilde kullanılmasını otomatik olarak yönetir.

import dspy

def search_web(query: str) -> str:
    """Search the web and return relevant results."""
    # In production, call a real search API
    return f'Search results for: {query}'

def calculate(expression: str) -> str:
    """Evaluate a mathematical expression."""
    return str(eval(expression))

class ResearchQA(dspy.Signature):
    """Answer the question using web search and calculation as needed."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

agent = dspy.ReAct(ResearchQA, tools=[search_web, calculate])
result = agent(question='What is 15% of 847?')
print(result.answer)

Modülleri Programlara Birleştirme

Asıl güç, modülleri çok adımlı programlar oluşturacak şekilde birleştirmekten gelir. dspy.Module sınıfının alt sınıfını oluşturun, alt modülleri __init__ içinde tanımlayın ve bunları birbirine bağlamak için forward() işlevini uygulayın.

import dspy

class RetrieveAndAnswer(dspy.Module):
    def __init__(self):
        super().__init__()
        self.retrieve = dspy.Retrieve(k=3)  # Retrieves top-3 passages
        self.generate = dspy.ChainOfThought('context, question -> answer')

    def forward(self, question):
        passages = self.retrieve(question).passages
        context = '\n'.join(passages)
        return self.generate(context=context, question=question)

# This is a complete RAG pipeline in ~10 lines
rag = RetrieveAndAnswer()
result = rag(question='What are the main causes of climate change?')
print(result.answer)

Satır İçi signature Kısaltması

Basit durumlarda DSPy, satır içi bir dize signature'ını kabul eder: 'input1, input2 -> output1, output2'. Bu, tam bir sınıf tanımlamadan hızlı prototip oluşturmak için kullanışlıdır.

import dspy

# Full class signature
class Translate(dspy.Signature):
    """Translate text to French."""
    text: str = dspy.InputField()
    translation: str = dspy.OutputField()

# Equivalent inline shorthand
translator_v1 = dspy.Predict(Translate)
translator_v2 = dspy.Predict('text -> translation')  # Less metadata

# Both work the same way
result = translator_v1(text='Hello world')
print(result.translation)

Alan Açıklamaları Önemlidir

InputField ve OutputField içindeki desc parametresi oluşturulan isteme eklenir. İyi açıklamalar modele kesin bir yol gösterir.

desc parametresini, alan adıyla birlikte istemde görünen alan düzeyindeki belgelendirme olarak düşünebilirsiniz.

import dspy

class Summarize(dspy.Signature):
    """Summarize the article for a busy executive."""
    article: str = dspy.InputField(
        desc='The full article text to summarize'
    )
    summary: str = dspy.OutputField(
        desc='3-5 bullet points highlighting key decisions and numbers'
    )
    confidence: float = dspy.OutputField(
        desc='Your confidence in the summary accuracy from 0.0 to 1.0'
    )

summarizer = dspy.Predict(Summarize)
# DSPy constructs a prompt using all the desc values automatically

Programları Kaydetme ve Yükleme

İyileştirmeden sonra derlenmiş programı kaydedersiniz; böylece her seferinde iyileştirmeyi yeniden çalıştırmanız gerekmez. DSPy, iyileştirilmiş durumu bir JSON dosyasına serileştirir.

import dspy

class QA(dspy.Signature):
    """Answer questions accurately."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

program = dspy.ChainOfThought(QA)

# After optimization, save the compiled state
program.save('optimized_qa.json')

# Load it later without re-running optimization
loaded_program = dspy.ChainOfThought(QA)
loaded_program.load('optimized_qa.json')

result = loaded_program(question='What is the speed of light?')
print(result.answer)

Çıktı Kısıtlamaları için Bildirimler

DSPy kısıtlamaları, çıktılar üzerindeki kısıtları bildirmenizi sağlar. Model kısıtı ihlal ederse DSPy, düzeltici geri bildirimle otomatik olarak yeniden dener; elle yeniden deneme mantığı yazmanız gerekmez.

import dspy

class ShortAnswer(dspy.Signature):
    """Answer in at most 10 words."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

class ConstrainedQA(dspy.Module):
    def __init__(self):
        super().__init__()
        self.predict = dspy.Predict(ShortAnswer)

    def forward(self, question):
        result = self.predict(question=question)
        # Assert: answer must be at most 10 words
        dspy.Assert(
            len(result.answer.split()) <= 10,
            'The answer must be 10 words or fewer.'
        )
        return result

Bilgi Kontrolü: ChainOfThought

Aynı signature kullanıldığında dspy.ChainOfThought, dspy.Predict'e kıyasla ne ekler?

Özet: signature'lar ve Modüller

DSPy signature'ları, bir LLM adımının ne yapması gerektiğini (girdileri, çıktıları ve belge dizesindeki yönergeyi) açıklayan tür belirtilmiş sınıf bildirimleridir. Predict, ChainOfThought ve ReAct gibi modüller, bir signature çevresinde farklı akıl yürütme stratejileri uygular. Çok adımlı işlem hatları oluşturmak için birden çok modülü dspy.Module alt sınıfı içinde birleştirirsiniz. Alanların desc değerleri otomatik oluşturulan istem içinde modele yol gösterir; kısıtlamalar da otomatik yeniden denemelerle çıktı kısıtlarını uygular.

Sıkça Sorulan Sorular

“İmzaları ve Modülleri Tanımlama” dersi ücretsiz mi?

Evet — “İmzaları ve Modülleri Tanımlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

“İmzaları ve Modülleri Tanımlama” dersinde ne öğreneceğim?

İmza söz dizimi, ChainOfThought, ReAct ve özel DSPy modülleri. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“İmzaları ve Modülleri Tanımlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DSPy Çerçevesine Giriş
  2. İmzaları ve Modülleri Tanımlama
  3. İstemleri Derleme ve İyileştirme
  4. DSPy İş Akışlarını Değerlendirme
← AI Prompt Engineering Sayfasına Dön