[{"data":1,"prerenderedAt":222},["ShallowReactive",2],{"site-settings":3,"$fIMCePvCBZnoFYyP2TZ1n3PEn9lOK27SdYdtZWePmyW4":26,"related-posts":49,"$fwgo8CMq7_z7UvOK72lsAuPs_YrlHUxktSn4JAkLiJfk":221},{"id":4,"site_name":5,"site_subtitle":6,"site_description":7,"author":8,"email":9,"github":10,"icp":10,"page_size":11,"enable_comment":12,"enable_rss":12,"updated_at":13,"site_icon":14,"site_og_image":15,"site_keywords":16,"site_og_image_width":24,"site_og_image_height":25},1,"LiteSite（轻站）","把你想做的网站说出来","LiteSite（轻站）探索自然语言驱动的零代码建站体验，展示响应式网站与前端原型的设计方向。","Admin","support@litesite.com",null,10,true,"2026-10-05T03:56:44.502+00:00","https:\u002F\u002Fnklbhnvyoggxghtaoizu.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-images\u002F2026-10-05-1765bce7-01f1-4206-8d5d-6a717d17f206.png","https:\u002F\u002Fnklbhnvyoggxghtaoizu.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-images\u002F2026-10-05-157c3c1d-2722-474c-860b-d3f38d6a674d.png",[17,18,19,20,21,22,23],"LiteSite","轻站","零代码建站","AI建站","响应式网站","前端原型","网站设计",1200,630,{"id":27,"slug":28,"title":29,"summary":30,"content":31,"status":32,"tags":33,"seo_keywords":38,"published_at":44,"updated_at":45,"category":46},21,"llm-cost-budget-guardrails","大模型调用怎么控制成本？把预算控制放进请求链路","从请求准入、原子预留、真实用量结算到超支降级，设计一套能在并发与重试下运行的大模型调用预算控制链路。","大模型调用怎么控制成本？当请求量上来，问题不只是怎样少用 token，而是怎样让系统在调用前知道“这次能不能花”，调用后知道“实际花了多少”，预算不足时还能有可预期的行为。此前的[成本拆解文章](\u002Fblog\u002Fllm-api-cost-control)已经讨论计费、缓存、输出与模型路由；这篇聚焦线上请求链路中的预算控制。\n\n## 先明确预算管什么\n\n只设一个“每月总额”太粗。至少按业务场景、租户或项目区分预算，再给单次请求设置上限。例如客服检索问答和内部离线摘要可以共享总账，但各自有不同的单请求上限与优先级。预算用最小货币单位保存，并固定币种、价格版本和统计周期；跨币种换算与税费要单独记账，不能把模型报价直接当成最终财务账单。\n\n| 边界 | 解决的问题 | 超过时的动作 |\n| --- | --- | --- |\n| 单次请求上限 | 防止异常长上下文或失控输出 | 限制输出、缩短输入或拒绝 |\n| 场景 \u002F 租户日额度 | 防止某条业务线挤占全部资源 | 限流、排队或暂停低优先级任务 |\n| 项目月额度 | 控制整体支出 | 告警、降级并阻止新的非关键调用 |\n| 并发与重试上限 | 防止故障时费用和流量一起放大 | 退避、熔断或转人工 |\n\n这些阈值需要业务负责人确认。关键在线请求和可延迟的批处理，不应被同一条简单的“余额不足即失败”规则处理。\n\n## 请求发出前：估算并预留\n\n一个业务请求可能先检索、再调用模型、最后做格式修复。准入时要估算整个工作流的最大可接受花费，或在每个付费步骤前分别预留并共享同一工作流上限。估算通常包含预计输入 token、设置的最大输出 token、预期工具费用与允许的重试次数。输入 token 最好用与模型相符的计数方法；字符数只能做粗略保护。对于无法确定的计费项，留出缓冲并设置独立上限。\n\n关键是**原子预留**。假设某租户只剩 10 元，两个并发请求都先读到“余额 10 元”，各自花 8 元，就会超支。预算检查与预留必须在同一数据库事务或具备原子操作的存储中完成。可用余额按“额度－已结算费用－在途预留”计算；预留记录绑定请求 ID，同一请求重试时只创建一次。数据库只是示意，实际还要处理锁竞争、过期预留和跨区域一致性。\n\n一个简化的流程如下：\n\n```text\n接收请求 → 验证身份与场景 → 估算最大费用\n       → 原子检查额度并预留 → 执行模型调用\n       → 获取用量并按价格版本结算 → 释放剩余预留\n       → 返回结果与内部成本记录\n```\n\n预留并不等于实际扣费。若模型最终只用了预留的一半，就结算真实用量并释放差额；若供应商还有异步费用或账单延迟，则要保留待核对状态，不要过早宣称金额准确。\n\n## 调用结束后：按真实用量结算\n\n能拿到供应商 usage 明细时，按模型、价格版本、普通输入、缓存输入、输出及其他计费项逐项计算，并把账本记录关联到业务请求 ID。不同供应商对缓存、工具、推理 token 和失败请求的计费规则不同，最终仍要与账单对账。记录金额的同时保留原始用量字段，方便价格变动后追查差异。\n\n超时和客户端取消最容易产生错账：客户端没收到完整响应，不代表供应商没有处理或计费。确认没有产生用量后才能释放全部预留；状态不明时标记为“待结算”，通过供应商请求 ID、后续账单或人工核对处理。若实际费用超过预留，差额仍应入账并触发告警，随后收紧估算或暂停新的调用，不能把超出部分丢掉。\n\n重试也是新成本。对限流和暂时性服务错误可以有限重试并退避；格式错误是否值得重试，要看任务价值。重试共享业务请求的总预算，且写操作使用幂等键，避免同一任务重复触发外部动作。模型调用本身的幂等支持依供应商而异，不能假定“网络超时后重试”一定不会产生两笔费用。\n\n## 预算不够时，系统应该怎么做？\n\n预算控制不是一句“返回 429”就结束。根据场景预设降级顺序：先复用经过权限与时效检查的缓存，再考虑经过质量测试的低成本模型、减少非必要步骤、把离线任务排队，最后才拒绝并给出可理解的状态。价格、库存、个人数据这类内容不能为了省钱错误地复用缓存；高风险决策也不能悄悄换到未经验证的模型。\n\n把硬限制和软提醒分开。达到 70% 和 90% 可通知负责人检查增长来源；达到硬额度后阻止新调用。预留给关键业务的额度应独立配置，避免一批低优先级任务先把月预算花完。配置变更要留审计记录，预算或权限不能由模型输出自行修改。\n\n## 用什么指标判断控制是否有效？\n\n看板至少展示按场景、租户、模型和日期拆分的已结算费用、在途预留、请求数、平均与 P95 单请求成本、重试率、失败率、缓存命中率和降级次数。另看“每个合格结果的成本”：便宜模型如果需要大量返工，账面单价下降未必是业务成本下降。\n\n上线前用真实请求样本回放估算器，检查预留是否覆盖高分位费用；压测并发预留，验证不会因竞态透支；模拟超时、重复请求、迟到的 usage 和月度周期切换。上线后每天对账，发现差异就标记并追查，而不是靠月底才发现费用异常。\n\n大模型成本控制可以概括成四步：**先估算、原子预留、按实结算、明确降级**。缓存与模型选择帮助降低平均成本，预算账本和异常处理则负责在高并发及故障时守住边界。两者配合，才能既控制支出，也保住可用答案的质量。","published",[34,36],{"name":35,"slug":35},"工程",{"name":37,"slug":37},"大模型",[39,40,41,42,43],"大模型调用成本控制","LLM预算管理","Token费用","模型调用限额","API成本监控","2026-10-05T04:14:07.621+00:00","2026-10-05T04:14:07.225+00:00",{"id":47,"name":48,"slug":48},3,"技术笔记",{"items":50,"total":219,"page":4,"pageSize":220},[51,67,73,89,109,127,143,159,174,187,202],{"id":52,"slug":53,"title":54,"summary":55,"status":32,"tags":56,"seo_keywords":59,"published_at":65,"category":66},22,"llm-output-instability-hallucination","模型返回不稳定 \u002F 幻觉怎么办？","区分随机波动与事实幻觉，沿着样本评测、证据检索、结构校验、业务规则和人工回退建立可验证的大模型输出链路。",[57,58],{"name":35,"slug":35},{"name":37,"slug":37},[60,61,62,63,64],"模型幻觉怎么办","大模型输出不稳定","LLM幻觉","RAG事实校验","模型评测","2026-10-05T04:17:13.315+00:00",{"id":47,"name":48,"slug":48},{"id":27,"slug":28,"title":29,"summary":30,"status":32,"tags":68,"seo_keywords":71,"published_at":44,"category":72},[69,70],{"name":35,"slug":35},{"name":37,"slug":37},[39,40,41,42,43],{"id":47,"name":48,"slug":48},{"id":74,"slug":75,"title":76,"summary":77,"status":32,"tags":78,"seo_keywords":81,"published_at":87,"category":88},20,"llm-structured-output-reliability","结构化输出怎么保证模型按格式返回？","模型返回 JSON 不等于系统拿到可用数据。本文区分提示词、JSON 模式与 Schema 约束，说明如何用服务端校验、有限重试和业务规则构建可靠的结构化输出链路。",[79,80],{"name":35,"slug":35},{"name":37,"slug":37},[82,83,84,85,86],"大模型结构化输出","JSON Schema","模型按格式返回","LLM输出校验","约束解码","2026-10-05T04:10:02.025+00:00",{"id":47,"name":48,"slug":48},{"id":90,"slug":91,"title":92,"summary":93,"status":32,"tags":94,"seo_keywords":101,"published_at":107,"category":108},19,"geo-vs-seo-explained","理解 GEO 是什么？和 SEO 有什么区别？","GEO 是什么，和 SEO 有什么区别？从用户提问、内容呈现、优化动作与衡量指标四个角度讲清两者的关系，并给出一套适合建站团队的入门做法。",[95,98],{"name":96,"slug":97},"建站","jianzhan",{"name":99,"slug":100},"GEO","geo",[102,103,104,105,106],"GEO是什么","GEO和SEO的区别","生成式引擎优化","SEO","AI搜索优化","2026-10-05T04:07:05.673+00:00",{"id":47,"name":48,"slug":48},{"id":110,"slug":111,"title":112,"summary":113,"status":32,"tags":114,"seo_keywords":119,"published_at":125,"category":126},18,"how-nuxt-ssr-works","Nuxt 的 SSR 是怎么做的？从请求、数据获取到 Hydration","沿着一次文章页请求，看 Nuxt 如何用 Nitro 接收请求、在服务端执行 useFetch 并生成 HTML，再由浏览器复用 payload 完成 Hydration。",[115,116],{"name":35,"slug":35},{"name":117,"slug":118},"Nuxt","nuxt",[120,121,122,123,124],"Nuxt SSR","Nuxt服务端渲染","Nuxt useFetch","Hydration","Nitro渲染流程","2026-10-05T03:55:36.035+00:00",{"id":47,"name":48,"slug":48},{"id":128,"slug":129,"title":130,"summary":131,"status":32,"tags":132,"seo_keywords":135,"published_at":141,"category":142},17,"llm-api-cost-control","大模型调用怎么控制成本？一笔账算清缓存、输出与重试","先按输入、输出和额外调用算清单次成本，再用缓存、模型路由、上下文裁剪和预算限额降本，并用可用答案质量守住效果。",[133,134],{"name":35,"slug":35},{"name":37,"slug":37},[136,137,138,139,140],"大模型调用成本","LLM API成本控制","Token费用计算","提示词缓存","模型路由","2026-10-05T03:49:26.666+00:00",{"id":47,"name":48,"slug":48},{"id":144,"slug":145,"title":146,"summary":147,"status":32,"tags":148,"seo_keywords":151,"published_at":157,"category":158},16,"geo-technical-pipeline-design","GEO 的技术链路你会怎么设计？","从问题池、证据库、可读页面到答案采样与质量回写，设计一条可维护的 GEO 技术链路，并明确外部 AI 系统的边界。",[149,150],{"name":35,"slug":35},{"name":99,"slug":100},[152,153,154,155,156],"GEO技术链路","GEO技术方案","生成式引擎优化架构","AI搜索内容工程","GEO监测","2026-10-05T03:44:34.947+00:00",{"id":47,"name":48,"slug":48},{"id":160,"slug":161,"title":162,"summary":163,"status":32,"tags":164,"seo_keywords":166,"published_at":172,"category":173},15,"geo-core-metrics-calculation","GEO 的核心指标你怎么理解？怎么算？","用同一组问题和明确的分母，算清 GEO 的品牌提及率、引用率、有效引用率、竞争提及份额与有效线索率。",[165],{"name":99,"slug":100},[167,168,169,170,171],"GEO核心指标","GEO指标怎么算","品牌提及率","AI引用率","生成式引擎优化效果","2026-10-05T03:40:09.175+00:00",{"id":47,"name":48,"slug":48},{"id":175,"slug":176,"title":177,"summary":178,"status":32,"tags":179,"seo_keywords":182,"published_at":185,"category":186},14,"geo-business-understanding","GEO 从业务理解开始：把真实问题写成可引用的内容","做 GEO 之前，先弄清业务服务谁、用户在什么场景下提问、哪些证据能支持回答，再用真实问题和业务结果验证内容。",[180,181],{"name":96,"slug":97},{"name":99,"slug":100},[99,104,183,184,106],"业务理解","GEO内容策略","2026-10-05T03:33:52.358+00:00",{"id":47,"name":48,"slug":48},{"id":188,"slug":189,"title":190,"summary":191,"status":32,"tags":192,"seo_keywords":194,"published_at":200,"category":201},13,"website-launch-checklist","网站上线前后检查清单：从可访问到可维护","一份实用的网站上线清单，逐项检查域名、HTTPS、手机体验、页面速度、SEO、表单、备份与上线后的监测。",[193],{"name":35,"slug":35},[195,196,197,198,199],"网站上线检查清单","网站上线","网站性能优化","网站SEO","网站维护","2026-10-05T03:24:44.969+00:00",{"id":47,"name":48,"slug":48},{"id":203,"slug":204,"title":205,"summary":206,"status":32,"tags":207,"seo_keywords":209,"published_at":215,"category":216},12,"website-planning-checklist","建站之前：用一张页面清单理清目标、结构与内容","从网站目标、访问者任务到页面清单和内容准备，用一套可执行的方法完成建站规划，避免边做边改。",[208],{"name":35,"slug":35},[210,211,212,213,214],"建站规划","网站信息架构","网站内容规划","页面清单","个人网站建设","2026-10-05T03:23:27.683+00:00",{"id":217,"name":218,"slug":218},7,"项目实践",11,100,[],1791174017058]