{"adoption": {"forks": 293, "observed_at": "2026-08-28T04:08:15.088818+00:00", "stars": 3706}, "canonical_url": "https://ross.abutalabs.com/products/textgrad", "card": {"archived": false, "artifact_type": "library", "description": "TextGrad: Automatic ''Differentiation'' via Text -- using large language models to backpropagate textual gradients. Published in Nature.", "domain": ["large-language-models", "artificial-intelligence"], "enriched": true, "function": ["llm-inference", "prompt-engineering", "agent-framework", "machine-learning"], "health_score": 50, "homepage": "http://textgrad.com/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["zou-group/textgrad"], "name": "zou-group/textgrad", "platform": ["python", "cross-platform"], "pushed_at": "2025-07-25T14:30:39+00:00", "repo": "zou-group/textgrad", "stars": 3706, "tags": ["textual-gradients", "autograd", "prompt-optimization", "llm-feedback", "compound-ai-systems", "pytorch-like-api", "litellm", "ai-agents", "natural-language-processing"], "topics": ["large-language-models", "prompt-optimization", "compound-systems", "textual-gradients", "ai-optimization"], "urls": [], "use_cases": ["optimize llm prompts automatically", "improve gpt-4o solutions to hard coding problems", "refine answers to scientific questions at test time", "design new molecules with desired properties", "optimize multi-agent llm pipelines with text feedback", "boost reasoning benchmark scores via llm critique"], "what_it_is": "TextGrad is a Python framework that implements automatic 'differentiation' via text, using LLM-generated natural language feedback as gradients to optimize prompts, solutions, and compound AI systems. Its API mirrors PyTorch, letting users define losses and backpropagate textual feedback through arbitrary pipelines of agents and tools.", "when_to_avoid": ["you need traditional numerical gradient-based training of neural network weights", "you cannot afford the LLM API costs of iterative critique-and-revise loops", "you need a fully stable API - the litellm-based engines are still experimental and old engines are being deprecated", "your optimization target is fully differentiable and standard autograd frameworks suffice"], "when_to_choose": ["you want to optimize prompts or LLM outputs using natural-language feedback instead of numeric gradients", "you already know PyTorch and want a familiar API for text-based optimization", "your system contains black-box components like LLMs or tools that standard gradient descent cannot tune", "you want model-provider flexibility via litellm (OpenAI, Bedrock, Gemini, Together, etc.)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/textgrad", "repo": "zou-group/textgrad", "role": "main", "score": 29}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.088818+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.772710+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94ec86c0c78e902a9f123ca53a9c663f6175ab5395139816eba6d84d6f578641", "fetched_at": "2026-08-28T04:08:15.088818+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zou-group/textgrad"}, {"content_hash": "79593089abff320e358aaa4de28cea4f13e7994d8696c53d93511396eff24117", "fetched_at": "2026-08-29T09:24:31.784996+00:00", "kind": "homepage", "missing": false, "url": "http://textgrad.com/"}, {"content_hash": "34410de6fb65a7f3f9f8acd7311044cb0fb1cd8c0977fbbe505080fb448b58c1", "fetched_at": "2026-08-29T09:24:31.794181+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/textgrad/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 33, "longevity": 58, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 814, "days_push": 404, "days_rel": 626, "gap_med": null, "n_releases_24m": 1}, "score": 29, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}