Skip to content
Skillv1.0.0

dspy

You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatica

by terminalskills(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from terminalskills/skills (skills/dspy/SKILL.md). Install upstream with npx skills add terminalskills/skills --skill dspy. Copyright stays with the author (Apache-2.0).

DSPy — Programming (Not Prompting) LLMs

You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task.

Core Capabilities

Signatures and Modules

import dspy

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

# Define task as a signature (not a prompt)
class SentimentAnalysis(dspy.Signature):
    """Classify the sentiment of a review."""
    review: str = dspy.InputField()
    sentiment: str = dspy.OutputField(desc="positive, negative, or neutral")
    confidence: float = dspy.OutputField(desc="0.0 to 1.0")

# Use it
classify = dspy.Predict(SentimentAnalysis)
result = classify(review="Great product, fast shipping!")
print(result.sentiment)     # "positive"
print(result.confidence)    # 0.95

# Chain of Thought (automatic reasoning)
classify_cot = dspy.ChainOfThought(SentimentAnalysis)
result = classify_cot(review="It works but the manual is confusing")
print(result.reasoning)     # Shows step-by-step reasoning
print(result.sentiment)     # "neutral"

Composable Modules

class RAGModule(dspy.Module):
    def __init__(self, num_passages=3):
        self.retrieve = dspy.Retrieve(k=num_passages)
        self.generate = dspy.ChainOfThought("context, question -> answer")

    def forward(self, question):
        context = self.retrieve(question).passages
        return self.generate(context=context, question=question)

rag = RAGModule()
answer = rag(question="What is DSPy?")

# Multi-hop reasoning
class MultiHop(dspy.Module):
    def __init__(self):
        self.generate_query = dspy.ChainOfThought("context, question -> search_query")
        self.retrieve = dspy.Retrieve(k=3)
        self.generate_answer = dspy.ChainOfThought("context, question -> answer")

    def forward(self, question):
        context = []
        for _ in range(2):  # 2 hops
            query = self.generate_query(context=context, question=question).search_query
            passages = self.retrieve(query).passages
            context = deduplicate(context + passages)
        return self.generate_answer(context=context, question=question)

Automatic Optimization

from dspy.teleprompt import BootstrapFewShot

# Training data
trainset = [
    dspy.Example(question="What is Python?", answer="A programming language").with_inputs("question"),
    dspy.Example(question="Who created Linux?", answer="Linus Torvalds").with_inputs("question"),
]

# Metric
def accuracy(example, prediction, trace=None):
    return example.answer.lower() in prediction.answer.lower()

# Optimize — finds best few-shot examples and instructions
teleprompter = BootstrapFewShot(metric=accuracy, max_bootstrapped_demos=4)
optimized_rag = teleprompter.compile(RAGModule(), trainset=trainset)

# optimized_rag now has automatically selected few-shot examples
# that maximize accuracy — no manual prompt engineering

Installation

pip install dspy

Best Practices

  1. Signatures over prompts — Define typed inputs/outputs; DSPy generates and optimizes prompts automatically
  2. ChainOfThought — Use for complex tasks; adds reasoning step that improves accuracy significantly
  3. Modules — Compose LLM calls like neural network layers; chain retrieval + reasoning + generation
  4. Teleprompters — Use BootstrapFewShot to automatically find optimal few-shot examples from training data
  5. Typed outputs — OutputField descriptions constrain generation; more reliable than free-form prompts
  6. Evaluation-driven — Define metrics first, then optimize; DSPy finds prompts that maximize your metric
  7. Model-agnostic — Same code works with GPT-4, Claude, Llama, Gemini; optimization adapts per model
  8. Assertions — Use dspy.Assert and dspy.Suggest for runtime output validation and self-correction

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/terminalskills-skills-dspy/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

terminalskills-skills-dspy.ocm.jsonjson
{
  "ocm": "1",
  "id": "terminalskills-skills-dspy",
  "kind": "skill",
  "name": "dspy",
  "description": "You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task.",
  "publisher": "terminalskills",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "llm",
      "programming",
      "prompts",
      "optimization",
      "stanford",
      "python",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "You are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/terminalskills/skills",
      "path": "skills/dspy/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/terminalskills/skills/blob/HEAD/skills/dspy/SKILL.md",
      "key": "terminalskills/skills/skills/dspy/SKILL.md"
    },
    "license": "Apache-2.0"
  },
  "instructions": "# DSPy — Programming (Not Prompting) LLMs\n\nYou are an expert in DSPy, the Stanford framework that replaces prompt engineering with programming. You help developers define LLM tasks as typed signatures, compose them into modules, and automatically optimize prompts/few-shot examples using teleprompters — so instead of manually crafting prompts, you write Python code and DSPy finds the best prompts for your task.\n\n## Core Capabilities\n\n### Signatures and Modules\n\n```python\nimport dspy\n\nlm = dspy.LM(\"openai/gpt-4o-mini\")\ndspy.configure(lm=lm)\n\n# Define task as a signature (not a prompt)\nclass Sent",
  "cost": {
    "context_tokens": 1023
  }
}

Fetch it by URL: GET /api/v1/registry/terminalskills-skills-dspy/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.