DSPy: Framework untuk Optimasi LLM Secara Programatik

# DSPy: Framework untuk Optimasi LLM Secara Programatik Prompt engineering secara manual adalah proses yang melelahkan dan sulit di-maintain. Setiap kali model berubah atau data berubah, prompt harus...

By Ruby Abdullah · · tutorial
DSPyLLMPrompt OptimizationMachine LearningPython

DSPy: Framework untuk Optimasi LLM Secara Programatik

Prompt engineering secara manual adalah proses yang melelahkan dan sulit di-maintain. Setiap kali model berubah atau data berubah, prompt harus ditulis ulang. DSPy (Declarative Self-improving Python) hadir sebagai solusi revolusioner: framework yang memungkinkan Anda mengoptimasi prompt LLM secara programatik, layaknya melatih model machine learning.

Dalam tutorial ini, kita akan mempelajari cara menggunakan DSPy untuk membangun pipeline LLM yang dapat dioptimasi secara otomatis, mulai dari konsep dasar hingga implementasi RAG (Retrieval-Augmented Generation) yang lengkap.

Apa Itu DSPy?

DSPy adalah framework Python yang mengubah cara kita bekerja dengan LLM. Alih-alih menulis prompt secara manual, DSPy memungkinkan Anda mendefinisikan apa yang ingin dicapai (melalui signatures dan modules), lalu secara otomatis mengoptimasi bagaimana mencapainya (melalui optimizers/teleprompters).

Analogi sederhananya: jika prompt engineering manual seperti menulis kode assembly, DSPy seperti menggunakan compiler yang mengoptimasi kode Anda secara otomatis.

Konsep utama DSPy:

  • Signatures: Mendefinisikan input dan output dari sebuah task
  • Modules: Building blocks yang mengimplementasikan strategi prompting
  • Optimizers (Teleprompters): Algoritma yang mengoptimasi prompt secara otomatis
  • Metrics: Fungsi evaluasi untuk mengukur kualitas output
  • Compilation: Proses menggabungkan semua komponen dan mengoptimasi

Instalasi

Install DSPy dan dependensi yang diperlukan:

pip install dspy-ai openai

Untuk fitur tambahan:

# Untuk retrieval dengan ChromaDB

pip install dspy-ai chromadb

Untuk menggunakan model lokal

pip install dspy-ai transformers torch

Konfigurasi API key:

export OPENAIAPIKEY="sk-your-api-key-here"

Setup dan Konfigurasi Dasar

Langkah pertama adalah mengkonfigurasi LLM yang akan digunakan.

import dspy

Konfigurasi dengan OpenAI

lm = dspy.LM("openai/gpt-4o-mini")

dspy.configure(lm=lm)

Atau dengan model lain

lm = dspy.LM("anthropic/claude-sonnet-4-20250514")

lm = dspy.LM("openai/gpt-4o")

Signatures: Mendefinisikan Task

Signatures adalah cara DSPy mendefinisikan input dan output dari sebuah task. Ini adalah abstraksi paling dasar di DSPy.

Inline Signatures (sederhana)
# Format: "input -> output"

Classify sentiment

classify = dspy.Predict("text -> sentiment")

result = classify(text="Produk ini sangat bagus dan berkualitas!")

print(result.sentiment) # positive

Question answering

qa = dspy.Predict("question -> answer")

result = qa(question="Apa ibukota Indonesia?")

print(result.answer) # Jakarta

Summarization

summarize = dspy.Predict("document -> summary")

result = summarize(

document="Artikel panjang tentang AI dan dampaknya..."

)

print(result.summary)

Class-based Signatures (lebih ekspresif)
class SentimentAnalysis(dspy.Signature):

"""Analisis sentimen dari teks review produk dalam bahasa Indonesia."""

text: str = dspy.InputField(desc="Teks review produk")

sentiment: str = dspy.OutputField(

desc="Sentimen: positif, negatif, atau netral"

)

confidence: float = dspy.OutputField(

desc="Tingkat keyakinan antara 0.0 dan 1.0"

)

reasoning: str = dspy.OutputField(

desc="Alasan di balik klasifikasi sentimen"

)

Gunakan signature

predictor = dspy.Predict(SentimentAnalysis)

result = predictor(

text="Barang sampai tepat waktu, kualitas sesuai deskripsi. "

"Tapi packaging kurang rapi."

)

print(f"Sentimen: {result.sentiment}")

print(f"Confidence: {result.confidence}")

print(f"Reasoning: {result.reasoning}")

Modules: Building Blocks

DSPy menyediakan beberapa module bawaan yang mengimplementasikan strategi prompting berbeda.

dspy.Predict

Module paling dasar yang melakukan single LLM call.

predictor = dspy.Predict("question -> answer")

result = predictor(question="Jelaskan konsep machine learning")

print(result.answer)

Artikel Terkait

Tutorial Lengkap vLLM: High-Performance LLM Serving

Tutorial Lengkap vLLM: High-Performance LLM Serving vLLM adalah library Python untuk inference dan serving LLM dengan pe...

Tutorial Lengkap Ollama: Deploy LLMs Secara Lokal

Tutorial Lengkap Ollama: Deploy LLM Secara Lokal Ollama adalah tool open-source yang memudahkan Anda menjalankan Large L...

Tutorial TRL: Post-Training LLM dengan SFT, DPO, dan Reward Modeling

Post-Training LLM dengan TRL: SFT, Reward Modeling, dan DPO Setelah sebuah base language model selesai dipretraining, mo...

Tutorial Axolotl: Fine-Tuning LLM Berbasis Konfigurasi YAML

Fine-Tuning LLM Berbasis Konfigurasi dengan Axolotl Kebanyakan proyek fine-tuning dimulai dengan cara yang sama: seseora...