{"slug": "dspy", "name": "DSPy", "category": "ai", "category_name": "AI models and assistants", "description": "", "recommenders": 5, "commenters": 20, "warners": 3, "score": 4.629, "rising": -0.31, "first": "2025-12-18", "latest": "2026-09-28", "why": "Model testing and swapping is one of the surprises people really appreciate DSPy for.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 5, "neutral": 9, "compare": 3, "warn": 3}, "spark": [0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Model testing and swapping is one of the surprises people really appreciate DSPy for.", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/stanfordnlp/dspy", "official_url": "https://dspy.ai", "pricing": "", "aliases": ["DSPy"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 798104816, "item_id": 49881551, "url": "https://news.ycombinator.com/item?id=49881551", "by": "genxy", "date": "2026-09-28", "stance": "recommend", "quote": "your agentic workflows are already using them", "excerpt": "You really need to work on your rhetorical combat, hn is not for amateurs. I said \"techniques in DSPy\", your agentic workflows are already using them. Read the GEPA paper. I'll put the link here and you can scroll down and read it. https://github.com/stanfordnlp/dspy Your agentic loops are already doing these things.", "context": "", "use_case": "LLM program optimization", "switched_from": "", "story": "Imp is a full port of DSPy to the BEAM"}, {"id": 760166304, "item_id": 47510394, "url": "https://news.ycombinator.com/item?id=47510394", "by": "mathis-l", "date": "2026-03-24", "stance": "recommend", "quote": "Dspy handling it openly", "excerpt": "Dspy handling it openly https://github.com/stanfordnlp/dspy/issues/9500", "context": "", "use_case": "", "switched_from": "", "story": "Tell HN: Litellm 1.82.7 and 1.82.8 on PyPI are compromised"}, {"id": 759945136, "item_id": 47496571, "url": "https://news.ycombinator.com/item?id=47496571", "by": "ggamecrazy", "date": "2026-03-23", "stance": "recommend", "quote": "I love DSPy!", "excerpt": "I love DSPy! But yes, its curse is that it\u2019s native to LLMs and makes the python side awkward and weird. I\u2019m willing to make this prediction: It\u2019s clearly built from first principles and the ideas from it will outlast the framework itself.", "context": "", "use_case": "LLM programming", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759869936, "item_id": 47491871, "url": "https://news.ycombinator.com/item?id=47491871", "by": "dbreunig", "date": "2026-03-23", "stance": "recommend", "quote": "Model testing and swapping is one of the surprises people really appreciate DSPy for.", "excerpt": "Model testing and swapping is one of the surprises people really appreciate DSPy for. You're right: prompts are overfit to models. You can't just change the provider or target and know that you're giving it a fair shake. But if you have eval data and have been using a prompt optimizer with DSPy, you can try models with the one-line change followed by rerunning the prompt optimizer. Dropbox just published a case study", "context": "", "use_case": "Prompt optimization with evals", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 741299873, "item_id": 46331242, "url": "https://news.ycombinator.com/item?id=46331242", "by": "vicentereig", "date": "2025-12-19", "stance": "recommend", "quote": "I like to look at it like the MVC for the Web.", "excerpt": "Both model prompts as functions. BAML is a DSL - write .baml files, generate code, get validated structured outputs. DSPy is a programming paradigm. I like to look at it like the MVC for the Web. You define Signatures[0]: typed contracts governing the relationship between your models and your app. Signatures model prompts as functions too, without leaving Ruby. Then compose them into modules (Predict, ChainOfThought,", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Stepped Actions \u2013 distributed workflow orchestration for Rails"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 759865456, "item_id": 47491591, "url": "https://news.ycombinator.com/item?id=47491591", "by": "giorgioz", "date": "2026-03-23", "stance": "warn", "quote": "I think a problem to DSPy is that they don't know the concept of THE WHOLE PRODUCT", "excerpt": "Loved the article because I exactly hit the stages all up till the 5th! Thank you for making me see the whole picture and journey! I think a problem to DSPy is that they don't know the concept of THE WHOLE PRODUCT: https://en.wikipedia.org/wiki/Whole_product Look at https://mastra.ai/ and https://www.copilotkit.ai/ to see how more inviting their pages look. A company is not selling only the product itself but all the", "context": "", "use_case": "", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759861664, "item_id": 47491354, "url": "https://news.ycombinator.com/item?id=47491354", "by": "CraftingLinks", "date": "2026-03-23", "stance": "warn", "quote": "I used dspy in production, then reverted the bloat as it literally gave me nothing of added value in practice but a lot of friction", "excerpt": "I used dspy in production, then reverted the bloat as it literally gave me nothing of added value in practice but a lot of friction when i needed precise control over the context. Avoid!", "context": "used it in production", "use_case": "LLM programming in production", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759849760, "item_id": 47490610, "url": "https://news.ycombinator.com/item?id=47490610", "by": "sbpayne", "date": "2026-03-23", "stance": "warn", "quote": "I think it takes the \"prompt is a parameter\" concept a bit too far.", "excerpt": "I don't know that you misunderstood. This is one of my biggest gripes with Dspy as well. I think it takes the \"prompt is a parameter\" concept a bit too far. I highly recommend checking out this community plugin from Maxime, it helps \"bridge the gap\": https://github.com/dspy-community/dspy-template-adapter", "context": "", "use_case": "prompt optimization", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}]}], "who": [{"by": "tcdent", "context": "develops agents extensively", "url": "https://news.ycombinator.com/item?id=47492839", "date": "2026-03-23"}], "tags": [], "use_cases": ["prompt optimization", "llm program optimization", "llm programming", "prompt optimization for agents", "prompt optimization with evals", "llm programming in production"], "compared": [{"slug": "litellm", "name": "LiteLLM", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "baml", "name": "BAML", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "gepa", "name": "GEPA", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 795508560, "item_id": 49719285, "url": "https://news.ycombinator.com/item?id=49719285", "by": "zenlikethat", "date": "2026-09-15", "stance": "neutral", "quote": "I made a dspy fork where you can add a decorator", "excerpt": "It's a bit hastily put together, but I made a dspy fork where you can add a decorator to automatically use TypeSafe where possible on Signatures. It shows a fair bit of what actual, hands on usage looks like. https://github.com/typesafeainate/dspy-typesafeify", "context": "", "use_case": "LLM program framework", "switched_from": "", "story": "Introducing System One Models and Jev"}], "threads": [{"url": "https://news.ycombinator.com/item?id=47490365", "title": "If Dspy is so great, why isn't anyone using it?", "mentions": 7}, {"url": "https://news.ycombinator.com/item?id=46937696", "title": "Ask HN: What Are You Working On? (February 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49869995", "title": "Imp is a full port of DSPy to the BEAM", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49717558", "title": "Introducing System One Models and Jev", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48477400", "title": "Apache Burr: Build reliable AI agents and applications", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47938417", "title": "A good AGENTS.md is a model upgrade. A bad one is worse than no docs at all", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"neutral": 1, "recommend": 1}, "2026-01": {"neutral": 1, "compare": 1}, "2026-02": {"neutral": 3}, "2026-03": {"warn": 3, "recommend": 3, "neutral": 3, "compare": 1}, "2026-04": {"neutral": 1}, "2026-05": {}, "2026-06": {"compare": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {}}, "quotes": [{"id": 798104816, "item_id": 49881551, "url": "https://news.ycombinator.com/item?id=49881551", "by": "genxy", "date": "2026-09-28", "stance": "recommend", "quote": "your agentic workflows are already using them", "excerpt": "You really need to work on your rhetorical combat, hn is not for amateurs. I said \"techniques in DSPy\", your agentic workflows are already using them. Read the GEPA paper. I'll put the link here and you can scroll down and read it. https://github.com/stanfordnlp/dspy Your agentic loops are already doing these things.", "context": "", "use_case": "LLM program optimization", "switched_from": "", "story": "Imp is a full port of DSPy to the BEAM"}, {"id": 775669376, "item_id": 48479336, "url": "https://news.ycombinator.com/item?id=48479336", "by": "hbarka", "date": "2026-06-10", "stance": "compare", "quote": "Is this comparable to https://dspy.ai/ ?", "excerpt": "Is this comparable to https://dspy.ai/ ?", "context": "", "use_case": "", "switched_from": "", "story": "Apache Burr: Build reliable AI agents and applications"}, {"id": 767043456, "item_id": 47940216, "url": "https://news.ycombinator.com/item?id=47940216", "by": "weiliddat", "date": "2026-04-28", "stance": "neutral", "quote": "I know you can somewhat hillclimb via DSPy but that's hard to generalize.", "excerpt": "I suspect the harness (of which AGENTS and skills and similar things) should be abstracted for better overall performance. This article doesn't really go into detail about model preferences, but some other benchmarks show that different models have differnt preferences of how to use certain tools (probably related to their post training material), and it should really be managed invisibly to me as the end user. Also ", "context": "", "use_case": "prompt optimization", "switched_from": "", "story": "A good AGENTS.md is a model upgrade. A bad one is worse than no docs at all"}, {"id": 760633840, "item_id": 47539615, "url": "https://news.ycombinator.com/item?id=47539615", "by": "padolsey", "date": "2026-03-26", "stance": "compare", "quote": "this is essentially what Dspy does", "excerpt": "If true, this is essentially what Dspy does https://github.com/stanfordnlp/dspy (it was made back in 2023)", "context": "", "use_case": "", "switched_from": "", "story": "HyperAgents"}, {"id": 760166304, "item_id": 47510394, "url": "https://news.ycombinator.com/item?id=47510394", "by": "mathis-l", "date": "2026-03-24", "stance": "recommend", "quote": "Dspy handling it openly", "excerpt": "Dspy handling it openly https://github.com/stanfordnlp/dspy/issues/9500", "context": "", "use_case": "", "switched_from": "", "story": "Tell HN: Litellm 1.82.7 and 1.82.8 on PyPI are compromised"}, {"id": 760049010, "item_id": 47503063, "url": "https://news.ycombinator.com/item?id=47503063", "by": "benatkin", "date": "2026-03-24", "stance": "neutral", "quote": "", "excerpt": "I'm surprised to see nanobot uses LiteLLM: https://github.com/HKUDS/nanobot LiteLLM wouldn't be my top choice, because it installs a lot of extra stuff. https://news.ycombinator.com/item?id=43646438 But it's quite popular.", "context": "", "use_case": "", "switched_from": "", "story": "LiteLLM Python package compromised by supply-chain attack"}, {"id": 759945136, "item_id": 47496571, "url": "https://news.ycombinator.com/item?id=47496571", "by": "ggamecrazy", "date": "2026-03-23", "stance": "recommend", "quote": "I love DSPy!", "excerpt": "I love DSPy! But yes, its curse is that it\u2019s native to LLMs and makes the python side awkward and weird. I\u2019m willing to make this prediction: It\u2019s clearly built from first principles and the ideas from it will outlast the framework itself.", "context": "", "use_case": "LLM programming", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759912656, "item_id": 47494541, "url": "https://news.ycombinator.com/item?id=47494541", "by": "kristianp", "date": "2026-03-23", "stance": "neutral", "quote": "The name probably doesnt help", "excerpt": "The name probably doesnt help, DSPy sounds like something to do with Digital Signal Processing. Til about GEPA: https://github.com/gepa-ai/gepa", "context": "", "use_case": "", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759885424, "item_id": 47492839, "url": "https://news.ycombinator.com/item?id=47492839", "by": "tcdent", "date": "2026-03-23", "stance": "neutral", "quote": "DSPy is cool from an integrated perspective but as someone who extensively develops agents, there have been two phases to the workflow that prevented me from adopting it", "excerpt": "DSPy is cool from an integrated perspective but as someone who extensively develops agents, there have been two phases to the workflow that prevented me from adopting it: 1. Up until about six months ago, modifying prompts by hand and incorporating terminology with very specific intent and observing edge cases and essentially directing the LLM in a direction to the intended outcome was somewhat meticulous and also so", "context": "develops agents extensively", "use_case": "prompt optimization for agents", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759869936, "item_id": 47491871, "url": "https://news.ycombinator.com/item?id=47491871", "by": "dbreunig", "date": "2026-03-23", "stance": "recommend", "quote": "Model testing and swapping is one of the surprises people really appreciate DSPy for.", "excerpt": "Model testing and swapping is one of the surprises people really appreciate DSPy for. You're right: prompts are overfit to models. You can't just change the provider or target and know that you're giving it a fair shake. But if you have eval data and have been using a prompt optimizer with DSPy, you can try models with the one-line change followed by rerunning the prompt optimizer. Dropbox just published a case study", "context": "", "use_case": "Prompt optimization with evals", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759865456, "item_id": 47491591, "url": "https://news.ycombinator.com/item?id=47491591", "by": "giorgioz", "date": "2026-03-23", "stance": "warn", "quote": "I think a problem to DSPy is that they don't know the concept of THE WHOLE PRODUCT", "excerpt": "Loved the article because I exactly hit the stages all up till the 5th! Thank you for making me see the whole picture and journey! I think a problem to DSPy is that they don't know the concept of THE WHOLE PRODUCT: https://en.wikipedia.org/wiki/Whole_product Look at https://mastra.ai/ and https://www.copilotkit.ai/ to see how more inviting their pages look. A company is not selling only the product itself but all the", "context": "", "use_case": "", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759861664, "item_id": 47491354, "url": "https://news.ycombinator.com/item?id=47491354", "by": "CraftingLinks", "date": "2026-03-23", "stance": "warn", "quote": "I used dspy in production, then reverted the bloat as it literally gave me nothing of added value in practice but a lot of friction", "excerpt": "I used dspy in production, then reverted the bloat as it literally gave me nothing of added value in practice but a lot of friction when i needed precise control over the context. Avoid!", "context": "used it in production", "use_case": "LLM programming in production", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 759849760, "item_id": 47490610, "url": "https://news.ycombinator.com/item?id=47490610", "by": "sbpayne", "date": "2026-03-23", "stance": "warn", "quote": "I think it takes the \"prompt is a parameter\" concept a bit too far.", "excerpt": "I don't know that you misunderstood. This is one of my biggest gripes with Dspy as well. I think it takes the \"prompt is a parameter\" concept a bit too far. I highly recommend checking out this community plugin from Maxime, it helps \"bridge the gap\": https://github.com/dspy-community/dspy-template-adapter", "context": "", "use_case": "prompt optimization", "switched_from": "", "story": "If Dspy is so great, why isn't anyone using it?"}, {"id": 751873316, "item_id": 46992082, "url": "https://news.ycombinator.com/item?id=46992082", "by": "bleuradience", "date": "2026-02-12", "stance": "neutral", "quote": "DSPy-style optimization", "excerpt": "BleuNova AI Agent \u2013 a personal, self-hosted agent built from scratch with a focus on ethics and security. Core constraints I set for myself: No cloud dependency by default (Ollama/local models first) Immutable ethical rules enforced at runtime (truthfulness, harm prevention, consent, audit logging) Zero-trust execution (Docker sandboxing, network isolation, timeouts) Continual learning without catastrophic forgetting", "context": "", "use_case": "", "switched_from": "", "story": "BleuNova \u2013 Ethical self-hosted AI agent (privacy-first)"}, {"id": 751268402, "item_id": 46954275, "url": "https://news.ycombinator.com/item?id=46954275", "by": "pldpld", "date": "2026-02-09", "stance": "neutral", "quote": "use litellm, DSPY to config models", "excerpt": "https://voicetest.dev/ https://github.com/voicetestdev/voicetest - test harness for voice agents. - multi platform formats (Retell, VAPI, Bland, LiveKit) compile down to a unified AgentGraph IR - import from one platform, test locally, export to another - use litellm, DSPY to config models, if on a subscription use claudecode as a runner to avoid API call charges - metric judges produce continuous 0-1 scores instead ", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (February 2026)"}, {"id": 751115841, "item_id": 46944740, "url": "https://news.ycombinator.com/item?id=46944740", "by": "schmuhblaster", "date": "2026-02-09", "stance": "neutral", "quote": "CodeAct+DSPy+Prolog", "excerpt": "https://www.github.com/deepclause/deepclause-sdk \"Compile\" Markdown specs for SDD or Subagents into executable logic, e.g. CodeAct+DSPy+Prolog. Not sure how and if I will continue, but it's been lots of fun.", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (February 2026)"}, {"id": 747771600, "item_id": 46735725, "url": "https://news.ycombinator.com/item?id=46735725", "by": "stephen_cagle", "date": "2026-01-23", "stance": "compare", "quote": "Has anyone contrasted gas town to Stanford's DSPY", "excerpt": "Has anyone contrasted gas town to Stanford's DSPY (https://dspy.ai/)? They seem related, but I have trouble understanding exactly what Gas Town is and so can't myself do a comparison?", "context": "", "use_case": "", "switched_from": "", "story": "Gas Town's Agent Patterns, Design Bottlenecks, and Vibecoding at Scale"}, {"id": 745751904, "item_id": 46609494, "url": "https://news.ycombinator.com/item?id=46609494", "by": "BenGosub", "date": "2026-01-13", "stance": "neutral", "quote": "Basically he's describing DSPy", "excerpt": "Basically he's describing DSPy[1] 1. https://dspy.ai/", "context": "", "use_case": "", "switched_from": "", "story": "Provenance Is the New Version Control"}, {"id": 741299873, "item_id": 46331242, "url": "https://news.ycombinator.com/item?id=46331242", "by": "vicentereig", "date": "2025-12-19", "stance": "recommend", "quote": "I like to look at it like the MVC for the Web.", "excerpt": "Both model prompts as functions. BAML is a DSL - write .baml files, generate code, get validated structured outputs. DSPy is a programming paradigm. I like to look at it like the MVC for the Web. You define Signatures[0]: typed contracts governing the relationship between your models and your app. Signatures model prompts as functions too, without leaving Ruby. Then compose them into modules (Predict, ChainOfThought,", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Stepped Actions \u2013 distributed workflow orchestration for Rails"}, {"id": 741162785, "item_id": 46322674, "url": "https://news.ycombinator.com/item?id=46322674", "by": "itissid", "date": "2025-12-18", "stance": "neutral", "quote": "using DSPy and an optimization algo GEPA", "excerpt": "Isn't atleast part of that GH issue something that this https://docs.boundaryml.com/guide/introduction/what-is-baml is also trying to solve? LLM inputs and outputs must be functions with defined functions. That was their starting point. IIUC their most recent arc focuses on prompt optimization[0] where you can optimize \u2014 using DSPy and an optimization algo GEPA [1] \u2014 using relative weights on different things like er", "context": "", "use_case": "", "switched_from": "", "story": "Skills for organizations, partners, the ecosystem"}]}