[{"data":1,"prerenderedAt":621},["ShallowReactive",2],{"blog-ragas-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":25,"cover":43,"og":44,"expertise":45,"locales":46,"lang":47,"title":50,"description":51,"coverAlt":52,"metaTitle":53,"takeaways":54,"faq":60,"toc":73,"blocks":98,"others":380},"ragas","2026-05-20",10,"llmops",[9,10,11,12,13],"RAG evaluation","LLM-as-judge","Test sets","CI quality","Ragas",[4,15,16,17,18,19,20,21],"ragas tutorial","ragas vs deepeval","llm evaluation metrics","faithfulness context precision","rag evaluation framework","llm as a judge","ragas pricing",[23],{"name":13,"url":24},"https:\u002F\u002Fwww.ragas.io\u002F",[26,29,32,35,38,41],{"title":27,"url":28},"Ragas documentation: introduction","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002F",{"title":30,"url":31},"Ragas documentation: quick start","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fgetstarted\u002Fquickstart\u002F",{"title":33,"url":34},"Ragas documentation: list of available metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002F",{"title":36,"url":37},"Ragas on GitHub","https:\u002F\u002Fgithub.com\u002Fvibrantlabsai\u002Fragas",{"title":39,"url":40},"Ragas on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fragas\u002F",{"title":42,"url":24},"Ragas website","\u002Fimages\u002Fblog\u002Fragas\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fragas\u002Fog.jpg","ai-engineer",[47,48,49],"en","de","hu","Ragas review: the default RAG evaluation framework","Ragas scores RAG and agent pipelines with faithfulness, context precision and context recall, generates test data and records experiments. Apache-2.0, free library, judge model billed separately.","Three bars of different heights with arc gauges above, and a box emitting small squares.","Ragas review: metrics, experiments, judge cost · Balázs Csorba",[55,56,57,58,59],"Ragas is an Apache-2.0 Python library at version 0.4.3 whose metrics, faithfulness, context precision and context recall, have become the standard vocabulary of RAG evaluation.","Most metrics call a judge model, so a run costs money and inherits the judge's blind spots; pin the model version before comparing two runs.","The library stores no traces and draws no dashboards, so teams that need production observability pair it with a tool such as Langfuse or build the store themselves.","The hosted platform has no published price list, which makes the judge model, not the licence, the number to budget for.","Reference-free metrics measure whether an answer is supported, not whether it is correct; keep a small labelled set for correctness.",[61,64,67,70],{"q":62,"a":63},"Is Ragas free to use?","The Python library is Apache-2.0 and free, including metrics, synthetic test-set generation and the experiments workflow. The hosted platform and enterprise support are sold directly by VibrantLabs, and no prices are published for them.",{"q":65,"a":66},"Which Ragas metrics need a golden set?","Context recall and factual correctness compare against a reference answer, while faithfulness, response relevancy and the aspect critic work from the question, the context and the response alone. Most teams start reference-free and add labels only for the rows they keep getting wrong.",{"q":68,"a":69},"Does Ragas replace an observability tool?","No. It scores a dataset you provide and writes results to CSV; it does not collect traces, sample production traffic or render dashboards. Use it as the metric layer under something that stores runs.",{"q":71,"a":72},"How much does a Ragas evaluation cost to run?","Whatever the judge model charges. Faithfulness issues several LLM calls per row because it checks claim by claim, so a 500-row set across four metrics runs to thousands of calls; caching and a smaller judge model are the levers.",[74,77,80,83,86,89,92,95],{"id":75,"title":76},"what-it-is","What it is",{"id":78,"title":79},"how-it-works","How it works",{"id":81,"title":82},"getting-started","Getting started",{"id":84,"title":85},"performance","Performance and cost",{"id":87,"title":88},"pricing","Pricing",{"id":90,"title":91},"where-it-shingles","Where it shingles",{"id":93,"title":94},"verdict","Verdict",{"id":96,"title":97},"sources","Sources",[99,108,111,114,122,144,145,148,154,157,158,161,163,186,193,194,197,244,247,255,258,259,262,272,273,280,325,328,338,339,342,354,358,359],{"type":100,"content":101},"paragraph",[102,103,107],"Ragas is an Apache-2.0 Python library for scoring LLM applications, and it has quietly become the vocabulary RAG evaluation is argued in: faithfulness, context precision and context recall all come out of its metric set. Its worth as a ",{"tag":104,"children":105},"strong",[106],"first evaluation tool for a retrieval pipeline is high; its worth as a production monitoring system is close to zero",", because it computes numbers over a dataset you hand it and leaves storage, dashboards, sampling and alerting to somebody else.",{"type":100,"content":109},[110],"It sits between the retrieval stack and the build: after LlamaIndex, LangChain or a hand-written retriever produces answers, Ragas scores them and the numbers end up next to the commit. It competes with DeepEval, TruLens and Phoenix, and with the evaluation features inside Langfuse, LangSmith and Braintrust; the difference is that Ragas stays a library, with no service to host and no vendor holding your test data.",{"type":112,"level":113,"id":75,"text":76},"heading",2,{"type":100,"content":115},[116,117,121],"The package installs from PyPI as ",{"tag":118,"children":119},"code",[120],"pip install ragas"," and runs inside the process; version 0.4.3 was published on 13 January 2026 and requires Python 3.9 or newer. Metrics come in two kinds: LLM-based, where a judge model reads a row and returns a value with a written reason, and traditional, where strings are compared directly, such as BLEU, ROUGE, exact match and semantic similarity. Around that sits an experiments workflow, dataset, run, record, compare, which is what turns a pile of metric functions into a repeatable evaluation.",{"type":123,"ordered":124,"items":125},"list",false,[126,128,130,132,134,136,142],[127],"Licence and ownership: Apache-2.0, maintained by VibrantLabs; the repository shows about 16,000 stars and 1,700 forks.",[129],"RAG metrics: context precision, context recall, context entities recall, noise sensitivity, response relevancy and faithfulness, plus multimodal variants of faithfulness and relevance.",[131],"Agent metrics: tool call accuracy, tool call F1, agent goal accuracy and topic adherence.",[133],"Grounding and comparison: factual correctness, semantic similarity, BLEU, CHRF, ROUGE, string presence and exact match.",[135],"SQL and summarisation: execution-based DataCompy scoring, SQL query equivalence and a summarisation score.",[137,138,141],"Test data and scaffolding: synthetic test-set generation from your own documents, and a ",{"tag":118,"children":139},[140],"ragas quickstart rag_eval"," template that writes a runnable project.",[143],"Output: experiment results as CSV files in your repository, diffable like any other build artefact.",{"type":112,"level":113,"id":78,"text":79},{"type":100,"content":146},[147],"A run walks the rows one at a time. Each row carries the user input, the response the application produced and whatever context the retriever supplied. A metric takes that row, makes one or more LLM calls with a prompt that spells out the criterion, and returns a value together with the judge's reason; traditional metrics skip the call and compare strings. Rows are scored independently, so the set parallelises cleanly and any single row can be repeated when the average looks wrong.",{"type":149,"src":150,"alt":151,"wide":152,"caption":153},"image","\u002Fimages\u002Fblog\u002Fragas\u002Fdiagram-7.webp","How a Ragas experiment runs A five-stage loop. A frozen test set feeds a run of the application, metrics call a judge model over each row, the scores arrive with written reasons, and the experiment is compared with the baseline before the next build runs the same rows again.",true,"The loop only means anything if the rows and the judge stay fixed: change either, and two experiments are not comparable.",{"type":100,"content":155},[156],"The reason this style of evaluation spread is that the output is readable. A low faithfulness score arrives with the sentence the judge wrote about which claim was unsupported, which is a diff a human can act on rather than a number to argue about.",{"type":112,"level":113,"id":81,"text":82},{"type":100,"content":159},[160],"The smallest useful test is one metric on one row, which is also how the README introduces the library.",{"type":118,"code":162},"import asyncio\nfrom ragas.metrics.collections import AspectCritic\nfrom ragas.llms import llm_factory\n\n# The judge: llm_factory() takes OpenAI by default, Anthropic and others as options\nllm = llm_factory(\"gpt-4o\")\n\nmetric = AspectCritic(\n    name=\"summary_accuracy\",\n    definition=\"Verify if the summary is accurate and captures key information.\",\n    llm=llm,\n)\n\nrow = {\n    \"user_input\": \"summarise given text: the company reported an 8% rise in Q3 2024.\",\n    \"response\": \"The company saw an 8% increase in Q3 2024.\",\n}\n\nasync def main():\n    score = await metric.ascore(user_input=row[\"user_input\"], response=row[\"response\"])\n    print(score.value, score.reason)\n\nasyncio.run(main())",{"type":100,"content":164},[165,166,169,170,173,174,177,178,181,182,185],"For a whole project the scaffolding is faster: ",{"tag":118,"children":167},[168],"uvx ragas quickstart rag_eval"," writes a package with ",{"tag":118,"children":171},[172],"rag.py",", ",{"tag":118,"children":175},[176],"evals.py",", a datasets folder and an experiments folder, ",{"tag":118,"children":179},[180],"uv sync"," installs it, and ",{"tag":118,"children":183},[184],"uv run python evals.py"," loads the dataset, queries the application, scores every row and appends the result to CSV. The docs default the template to OpenAI and show the same three lines switched to Anthropic, Google Gemini, Ollama or any OpenAI-compatible endpoint.",{"type":187,"variant":188,"title":189,"body":190},"callout","tip","Pin the judge before you compare",[191],[192],"Two runs are only comparable when the metric implementation, the judge model and the rows are all identical. Pin the model version, keep the dataset in the repository, and treat a metric upgrade as a re-baseline rather than a regression.",{"type":112,"level":113,"id":84,"text":85},{"type":100,"content":195},[196],"Ragas adds no latency to the product; it adds cost and wall time to the build. The bill is rows times metrics times judge calls per row, and the expensive metrics are the ones that decompose an answer into claims and check each one separately.",{"type":198,"head":199,"rows":208},"table",[200,202,204,206],[201],"Metric",[203],"Judge work per row",[205],"Needs a reference answer",[207],"What a low score means",[209,218,227,236],[210,212,214,216],[211],"Faithfulness",[213],"Splits the answer into claims and checks each against the context",[215],"No",[217],"The answer says more than the retrieved text supports",[219,221,223,225],[220],"Context precision",[222],"Ranks the retrieved chunks against the question",[224],"Optional",[226],"Irrelevant chunks are being pushed into the prompt",[228,230,232,234],[229],"Context recall",[231],"Compares retrieved context with the reference answer",[233],"Yes",[235],"The retriever never saw part of what the answer needs",[237,239,241,242],[238],"Tool call accuracy",[240],"Compares the agent's tool call and arguments with the expected one",[233],[243],"The agent picks the wrong tool or passes broken arguments",{"type":100,"content":245},[246],"A 500-row set scored with four LLM metrics means thousands of judge calls per run. Teams keep it affordable by caching where the library allows it, by using a small judge model for the cheap metrics, and by running the full set only when a change is about to merge.",{"type":123,"ordered":124,"items":248},[249,251,253],[250],"Score the cheap metrics on every push; run faithfulness and the agent metrics on merge or on a schedule.",[252],"Keep the dataset small and adversarial rather than large and random: 200 rows that broke before beat 5,000 rows that never fail.",[254],"Generate synthetic rows for coverage, then freeze them; regenerating the test set every cycle makes every score look like noise.",{"type":100,"content":256},[257],"None of this is Ragas-specific: any LLM-as-judge setup bills by call and inherits the judge's blind spots. What Ragas decides is how much of that machinery you get for free, and how much you are left to build around it.",{"type":112,"level":113,"id":87,"text":88},{"type":100,"content":260},[261],"The library is free and Apache-2.0, with no seat count and no usage cap. The commercial side, the hosted platform and direct support, is sold by the maintainers through contact and office hours, and no price list is published for it. The cost that therefore matters is the judge model: every LLM metric is metered by whichever provider you point it at, and synthetic test-set generation runs on the same meter.",{"type":123,"ordered":124,"items":263},[264,266,268,270],[265],"Library: free, Apache-2.0, installed from PyPI, no account required.",[267],"Judge model: billed per call by your provider, typically the dominant line item of an evaluation budget.",[269],"Synthetic test data: also LLM work, billed the same way as scoring.",[271],"Hosted platform and support: sold direct, no public price; ask what is included before committing.",{"type":112,"level":113,"id":90,"text":91},{"type":100,"content":274},[275,276,279],"Ragas scores rows, not systems. It will not sample production traffic, keep traces or tell you that p95 latency moved, and it cannot tell you whether the test questions are representative, which is the failure that makes a green pipeline useless. The release cadence is fast, 0.3.0 in July 2025, 0.4.0 in December 2025, 0.4.3 in January 2026, so versions have to be pinned. The repository carried 381 open issues at the time of writing, which is the usual price of being the default, and the docs for ",{"tag":118,"children":277},[278],"stable"," have trailed the released API.",{"type":198,"head":281,"rows":289},[282,284,285,287],[283],"Tool",[76],[286],"Where it wins",[288],"What you give up",[290,298,307,316],[291,292,294,296],[13],[293],"Metric library with synthetic test data",[295],"The metric vocabulary and a runnable project from one command",[297],"No trace store, no dashboard, no production sampling",[299,301,303,305],[300],"DeepEval",[302],"Pytest-style metrics with a hosted platform behind it",[304],"Unit-test ergonomics and a long metric list",[306],"The platform part is a separate commercial product",[308,310,312,314],[309],"Langfuse",[311],"Open-source tracing with datasets and evaluations",[313],"Traces, prompts and scores in one place",[315],"Ragas-style metric maths is one feature among many",[317,319,321,323],[318],"Arize Phoenix",[320],"Open-source tracing and evaluation for LLM applications",[322],"Span-level debugging next to the scores",[324],"A narrower reference-free RAG metric set",{"type":100,"content":326},[327],"The real choice is where the numbers live. Ragas is the right engine if something else stores the runs, a CSV in the repository, a table in your warehouse, an observability tool that accepts imported scores. It is the wrong purchase for a team that wants to open a URL and see whether quality regressed.",{"type":187,"variant":329,"title":330,"body":331},"warn","Every row leaves your network",[332],[333,334,337],"An LLM metric sends the question, the retrieved chunks and the answer to whichever endpoint the judge uses. Where the corpus is confidential, that means a judge inside your own perimeter, the docs show Ollama and any OpenAI-compatible endpoint, or an accepted transfer to a third party. The library also reports anonymous usage data by default; ",{"tag":118,"children":335},[336],"RAGAS_DO_NOT_TRACK=true"," disables it and the collection code sits in the repository.",{"type":112,"level":113,"id":93,"text":94},{"type":100,"content":340},[341],"Ragas earns its default status for retrieval work: the metrics are well defined, the output carries reasons, and a project is one command away. It should be taken as a scoring engine inside a workflow you already own, not as an evaluation platform.",{"type":123,"ordered":152,"items":343},[344,346,348,350,352],[345],"Use it if you have a retrieval pipeline and no golden set yet: synthetic test-set generation plus reference-free metrics gives a first measurement in a day.",[347],"Use it if evaluation has to run in CI, where a CSV diff per pull request is exactly the right amount of signal.",[349],"Do not pick it as the only evaluation tool for an agent product: agent metrics exist, but trajectories, tool side effects and cost per task need a harness that stores runs.",[351],"Do not pick it when an answer has to be justified to a regulator or a customer from stored evidence; nothing is persisted unless you persist it.",[353],"Budget the judge model before the licence: a pinned small model for the cheap metrics and a capable one for faithfulness is the usual split.",{"type":355,"content":356},"quote",[357],"Ragas is the cheapest way to stop arguing about whether a change helped: pin the judge, freeze the rows, read the diff. Everything it does not do is work you still have to pay for.",{"type":112,"level":113,"id":96,"text":97},{"type":123,"ordered":152,"items":360},[361,365,368,371,374,377],[362],{"tag":363,"href":28,"children":364},"a",[27],[366],{"tag":363,"href":31,"children":367},[30],[369],{"tag":363,"href":34,"children":370},[33],[372],{"tag":363,"href":37,"children":373},[36],[375],{"tag":363,"href":40,"children":376},[39],[378],{"tag":363,"href":24,"children":379},[42],[381,438,505,565],{"slug":382,"published":383,"minutes":384,"category":7,"tags":385,"keywords":391,"about":405,"sources":413,"cover":432,"og":433,"expertise":45,"locales":434,"lang":47,"title":435,"description":436,"coverAlt":437},"deepseek-v4-1-flash-1017","2026-10-17",15,[386,387,388,389,390],"DeepSeek","Open-weight models","KV cache","Mixture of experts","LLM cost",[392,393,394,395,396,397,398,399,400,401,402,403,404],"DeepSeek V4.1 Flash 1017","DeepSeek V4.1 Flash","Causal Encoder-Decoder","Compressed Sparse Attention 2","CSA2","FP4 KV cache","KV cache compression","SWA Bounded Replay","Engram conditional memory","DSpark speculative decoding","DeepSeek pricing","DeepSWE benchmark","open-weight coding model",[406,408,410],{"name":386,"url":407},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDeepSeek",{"name":389,"url":409},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMixture_of_experts",{"name":411,"url":412},"Transformer (deep learning architecture)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransformer_(deep_learning_architecture)",[414,417,420,423,426,429],{"title":415,"url":416},"DeepSeek-AI: DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression (arXiv:2609.19969)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2609.19969",{"title":418,"url":419},"Hugging Face: deepseek-ai\u002FDeepSeek-V4.1-Flash-1017 model card","https:\u002F\u002Fhuggingface.co\u002Fdeepseek-ai\u002FDeepSeek-V4.1-Flash-1017",{"title":421,"url":422},"OpenRouter: DeepSeek V4.1 Flash 1017, pricing and providers","https:\u002F\u002Fopenrouter.ai\u002Fdeepseek\u002Fdeepseek-v4.1-flash-1017",{"title":424,"url":425},"The Decoder: Deepseek V4.1 Flash 1017 beats larger rivals in agentic tasks while once again massively cutting per-task costs","https:\u002F\u002Fthe-decoder.com\u002Fdeepseek-v4-1-flash-1017-beats-larger-rivals-in-agentic-tasks-while-once-again-massively-cutting-per-task-costs\u002F",{"title":427,"url":428},"AI Weekly: DeepSeek opens V4.1-Flash-1017 weights and $0.75 Search API","https:\u002F\u002Faiweekly.co\u002Falerts\u002Fdeepseek-opens-v41-flash-1017-weights-and-075-search-api",{"title":430,"url":431},"DeepSeek on X: DeepSeek-V4.1-Flash-1017 announcement","https:\u002F\u002Fx.com\u002Fdeepseek_ai\u002Fstatus\u002F2111375640717033777","\u002Fimages\u002Fblog\u002Fdeepseek-v4-1-flash-1017\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fdeepseek-v4-1-flash-1017\u002Fog.jpg",[47,48,49],"DeepSeek V4.1 Flash 1017: 890 bytes of KV cache per token, and what that buys an agent","A technical deep dive into DeepSeek V4.1 Flash 1017: the encoder-decoder split, CSA2 cache sharing, FP4 KV cache, the benchmarks and the real cost per agent task.","A tall stack of thin cards on the left, an arrow, and the same cards pressed into a stack a quarter of the height on the right.",{"slug":439,"published":383,"minutes":6,"category":7,"tags":440,"keywords":446,"about":458,"sources":468,"cover":499,"og":500,"expertise":45,"locales":501,"lang":47,"title":502,"description":503,"coverAlt":504},"llm-rate-limits-retries-provider-fallback",[441,442,443,444,445],"Rate limits","Retries","Fallback","Reliability","LLM gateway",[447,448,449,450,451,452,453,454,455,456,457],"llm rate limit handling","429 too many requests llm api","exponential backoff with jitter","anthropic 529 overloaded error","openai rate limit retry","llm provider fallback","litellm fallbacks","retry-after header","llm circuit breaker","multi provider llm failover","claude api rate limits",[459,462,465],{"name":460,"url":461},"Token bucket","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FToken_bucket",{"name":463,"url":464},"Exponential backoff","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FExponential_backoff",{"name":466,"url":467},"Circuit breaker design pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCircuit_breaker_design_pattern",[469,472,475,478,481,484,487,490,493,496],{"title":470,"url":471},"Claude Platform Docs: Rate limits","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fapi\u002Frate-limits",{"title":473,"url":474},"Claude Platform Docs: API errors","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fapi\u002Ferrors",{"title":476,"url":477},"OpenAI API Docs: Rate limits","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Frate-limits",{"title":479,"url":480},"AWS Builders Library: Timeouts, retries and backoff with jitter","https:\u002F\u002Fbuilder.aws.com\u002Fcontent\u002F3EumjoZascWd1oZiEgL8ORlv3qE\u002Ftimeouts-retries-and-backoff-with-jitter",{"title":482,"url":483},"MDN: Retry-After header","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FRetry-After",{"title":485,"url":486},"Martin Fowler: Circuit Breaker (2014)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FCircuitBreaker.html",{"title":488,"url":489},"LiteLLM Docs: Router, retries and cooldowns","https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Frouting",{"title":491,"url":492},"LiteLLM Docs: Proxy fallbacks and reliability","https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Fproxy\u002Freliability",{"title":494,"url":495},"OpenRouter Docs: Model fallbacks","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fmodel-fallbacks",{"title":497,"url":498},"AI SDK Docs: Settings (maxRetries, timeout)","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Fsettings","\u002Fimages\u002Fblog\u002Fllm-rate-limits-retries-provider-fallback\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-rate-limits-retries-provider-fallback\u002Fog.jpg",[47,48,49],"LLM rate limits in production: retries, backoff and provider fallback","How LLM rate limits work, which errors to retry, backoff with jitter, retrying in one layer only, and fallback chains that do not break your output.","Small squares climbing three steps up to a wide rectangle, two more rectangles behind it in a row.",{"slug":506,"published":383,"minutes":507,"category":7,"tags":508,"keywords":513,"about":524,"sources":534,"cover":559,"og":560,"expertise":45,"locales":561,"lang":47,"title":562,"description":563,"coverAlt":564},"prompt-versioning-management",8,[509,510,511,512,309],"Prompt management","Versioning","LLMOps","Evals",[514,515,516,517,518,519,520,521,522,523],"prompt versioning","prompt management","prompt registry","version control for prompts","langfuse prompt management","mlflow prompt registry","prompts in git","openai prompt object deprecation","prompt rollback production","prompt ci evaluation",[525,528,531],{"name":526,"url":527},"Prompt engineering","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_engineering",{"name":529,"url":530},"Version control","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVersion_control",{"name":532,"url":533},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[535,538,541,544,547,550,553,556],{"title":536,"url":537},"OpenAI API Docs: Migrate from prompt objects","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fprompting\u002Fmigrate-from-prompt-object",{"title":539,"url":540},"OpenAI API Docs: Prompt engineering (reusable prompts deprecation note)","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fprompt-engineering",{"title":542,"url":543},"Langfuse Docs: Prompt version control","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Fprompt-version-control",{"title":545,"url":546},"Langfuse Docs: Prompt caching in the SDKs","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Fcaching",{"title":548,"url":549},"Langfuse Docs: Link prompts to traces","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Flink-to-traces",{"title":551,"url":552},"MLflow Docs: Prompt Registry","https:\u002F\u002Fmlflow.org\u002Fdocs\u002Flatest\u002Fgenai\u002Fprompt-registry\u002F",{"title":554,"url":555},"Promptfoo Docs: GitHub Action","https:\u002F\u002Fwww.promptfoo.dev\u002Fdocs\u002Fintegrations\u002Fgithub-action\u002F",{"title":557,"url":558},"Claude Platform Docs: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching","\u002Fimages\u002Fblog\u002Fprompt-versioning-management\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fprompt-versioning-management\u002Fog.jpg",[47,48,49],"Prompt versioning in production: git, registries, labels and rollbacks","How to version prompts in production: what belongs in a version, git versus a prompt registry, labels and rollbacks, eval gates in CI and cache side effects.","Five upright cards in a row, the third turned back on a curved arrow.",{"slug":566,"published":383,"minutes":567,"category":7,"tags":568,"keywords":573,"about":584,"sources":594,"cover":615,"og":616,"expertise":45,"locales":617,"lang":47,"title":618,"description":619,"coverAlt":620},"llm-batch-api-offline-workloads",9,[569,570,511,571,572],"Batch API","Cost","Prompt caching","Data pipelines",[574,575,576,577,578,579,580,581,582,583],"llm batch api","anthropic message batches api","openai batch api","gemini batch mode","batch inference llm cost","batch api 50 percent discount","openai flex processing","bedrock batch inference","llm offline processing","batch api prompt caching",[585,588,591],{"name":586,"url":587},"Batch processing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBatch_processing",{"name":589,"url":590},"JSON Lines","https:\u002F\u002Fjsonlines.org\u002F",{"name":592,"url":593},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",[595,598,600,601,604,607,609,612],{"title":596,"url":597},"Claude Platform Docs: Batch processing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fbatch-processing",{"title":599,"url":471},"Claude Platform Docs: Rate limits (Message Batches API)",{"title":557,"url":558},{"title":602,"url":603},"OpenAI API Docs: Batch API","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fbatch",{"title":605,"url":606},"OpenAI API Docs: Flex processing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fflex-processing",{"title":608,"url":477},"OpenAI API Docs: Rate limits (batch queue limits)",{"title":610,"url":611},"Google AI for Developers: Gemini Batch API","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fbatch-api",{"title":613,"url":614},"Amazon Bedrock User Guide: Batch inference","https:\u002F\u002Fdocs.aws.amazon.com\u002Fbedrock\u002Flatest\u002Fuserguide\u002Fbatch-inference.html","\u002Fimages\u002Fblog\u002Fllm-batch-api-offline-workloads\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-batch-api-offline-workloads\u002Fog.jpg",[47,48,49],"LLM batch APIs: half-price inference for work that can wait","When to use the Anthropic, OpenAI and Gemini batch APIs, how limits, result matching and failures work, and how batch discounts stack with prompt caching.","A wide box holding eight small squares, tiny squares arriving from the left, one long arrow returning.",1792261156632]