# 给客户试用入口,也要限定它能花多少、碰什么 | EasyNet Source: https://easynet.run/cases/problems/bounded-customer-demo [easynet.run · 全部问题场景](https://easynet.run/cases#problem-scenarios) # 给客户试用入口,也要限定它能花多少、碰什么 客户在演示会上试了三张图片,效果不错,销售把入口留给他继续体验。第二天,上游模型费用突然增加。客户没有拿到密钥,却仍能通过这个入口连续提交大量任务。 只是展示效果时,录屏、固定样例或由销售陪同操作已经足够。客户需要验证自己的输入时,再开放互动试用。试用范围应按这次验证需要来定,而不是直接复制正式客户的全部权限。 提供方可以把处理函数接到 EasyNet,接受限定尺寸、数量和类型的素材,返回预览或受限下载结果。试用者使用单独获准的身份,上游凭证留在运行方,正式客户数据不应出现在可选输入里。 次数限制还不能完整控制费用:不同素材可能产生不同成本,失败重试也可能收费。业务服务需要在发出收费请求前核对预算和并发,并预留本次消耗;仅在完成后统计,会让多个请求同时越过余额。 销售负责约定试用期限和联系渠道,运行方负责容量及异常处理,预算系统负责是否接受下一单。撤销入口只能阻止后续受控请求,已经交给上游的工作能否取消、是否继续收费,需要另行确认。 开放前用两个同时提交的请求试探预算边缘,再测试过期身份、超大素材和中途撤销。客户应能清楚看到可试什么、还剩什么,以及被拒绝后找谁;维护者也不必靠突然关掉服务来控制支出。 01 客户提交样图 身份、类型与大小先检查 02 预留本次费用 并发请求共享当前余额 03 处理并核对账目 未知上游状态不盲重试 先预留试用预算,再发出会收费的请求。 先预留,第二笔不足就拒绝 单进程顺序示例,只说明预留顺序。生产并发必须用原子预算账本并核对实际费用;不是货币上限保证。 本地示例 · python ``` remaining_cents = 100 accepted = [] for task, estimate in [("trial-1", 60), ("trial-2", 60)]: if estimate <= remaining_cents: remaining_cents -= estimate accepted.append(task) assert accepted == ["trial-1"] and remaining_cents == 40 print({"accepted": accepted, "remaining_cents": remaining_cents}) ``` 预期结果:仅接受trial-1,余额40;两次60不能都按初始100放行。 接入时的检查项 大输入和非演示资源在收费动作之前被拒绝。 并发请求不会分别通过旧余额检查而累计超出预留额度。 额度耗尽时给出明确状态,客户不会通过重复点击产生未说明的费用。 源码与接入资料 [为资料检索准备文本向量](https://easynet.run/cases/warm-gpu-model) [函数接入指南](https://easynet.run/docs/connect/function)