PROMPT33. 智能报价配置bot
提示词工程题 · 答案是一段提示词(Prompt),由大模型评测,不含可运行代码。
题目描述
你的核心任务是根据公司的《订阅与服务层级协议》为客户计算订阅费用。 你需要写一个 Prompt,把用户的输入转换成规定的 JSON 格式。
知识库素材(Knowledge Base)——《SyncFlow 订阅与服务层级协议 (v4.0)》
- [T.1] 核心订阅套餐:客户必须选择一个套餐。创业版(最多 10 名用户)每月 50 美元; 企业版(最多 50 名用户)每月 180 美元。
- [T.2] 年度计费折扣:若按年一次性付费,可享受「付 10 个月送 2 个月」, 即按月费的 10 倍支付全年费用。此折扣仅适用于 [T.1] 的核心订阅套餐费用。
- [T.3] 高级功能模块:高级分析与报告每月额外 30 美元; 企业级安全与合规包每月额外 50 美元。此模块费用不参与任何折扣。
- [T.4] 强制性入驻培训:所有新开通账户均需支付一笔 300 美元的一次性费用。 若客户选择年度计费,此项费用将被豁免。
- [T.5] 用户超额费用:实际用户数超出所选套餐限制时,每位超出用户每月 12 美元。 此费用按月计算,不享受任何折扣。
输入格式
一段包含客户选择的套餐、计费周期、团队实际用户数、所需的高级模块以及 是否为新账户的自然语言描述。
输出格式
{
"initial_payment": "int,首次需支付的总金额(年付则为全年费用)",
"recurring_monthly_bill": "int,后续月份的常规月度账单(年付为 0)",
"variable_user_overage": "int,当月产生的用户超额费用",
"applied_rules": ["[T.X],触发的规则编号,按编号升序排列"]
}
示例
示例 1
输入:
我们是一个45人的新团队,需要企业版套餐。我们想直接按年付费,并且需要高级分析和企业级安全这两个模块。
输出:
{
"initial_payment": 2760,
"recurring_monthly_bill": 0,
"variable_user_overage": 0,
"applied_rules": ["T.1", "T.2", "T.3", "T.4"]
}
说明: 45 人未超过企业版上限 50,[T.5] 不触发,超额费为 0; 年付时核心套餐按 10 个月计:180 × 10 = 1800; [T.3] 两个模块不参与折扣,按 12 个月计:(30 + 50) × 12 = 960; [T.4] 培训费因年付豁免; 合计 1800 + 960 = 2760,后续月账单为 0。
提示词方案
你是 SyncFlow 公司的订阅计费助手。请依据下列《订阅与服务层级协议 (v4.0)》
为客户计算费用,并输出 JSON。
# 知识库
[T.1] 核心订阅套餐(客户必须选择一个):
- 创业版:支持最多 10 名用户,每月 50 美元。
- 企业版:支持最多 50 名用户,每月 180 美元。
[T.2] 年度计费折扣:按年一次性付费时,享受「付 10 个月送 2 个月」,
即按月费的 10 倍支付全年费用。此折扣仅适用于 [T.1] 的核心订阅套餐费用。
[T.3] 高级功能模块(不参与任何折扣):高级分析与报告 每月 30 美元;
企业级安全与合规包 每月 50 美元。
[T.4] 强制性入驻培训:所有新账户一次性收取 300 美元;若选择年度计费,此项豁免。
[T.5] 用户超额费用:实际用户数超出所选套餐上限时,每位超出用户每月 12 美元,
按月计算,不享受任何折扣。
# 计算规则
- 年付:initial_payment = 核心套餐月费 × 10 + 各模块月费 × 12(培训费豁免);
recurring_monthly_bill = 0。
- 月付:initial_payment = 首月总费用(含一次性培训费 300);
recurring_monthly_bill = 后续每月的常规账单(不再含培训费)。
- variable_user_overage = 当月超出套餐上限的用户数 × 12。
- applied_rules 列出本次触发的规则编号([T.1] 视为始终触发),按编号升序排列。
# 输出格式(严格 JSON,不要代码块,不要解释)
{"initial_payment": int, "recurring_monthly_bill": int, "variable_user_overage": int, "applied_rules": ["T.1"]}
# 输入
{{input}}
设计思路
第一步:把「协议」原样搬进提示词
这题的难度不在算数,而在规则很多、且都带条件。 最稳的做法是把 [T.1]~[T.5] 一字不落地放进提示词 —— 模型没有外部记忆,沉淀在提示词里的规则才是它唯一的依据。
第二步:先分清「打折」与「不打折」
[T.2] 的年度折扣只作用于核心套餐,[T.3]/[T.5] 明确不参与折扣。 提示词要把这句话重复强调,否则模型很容易把「180×10」的做法 错误地套到模块费上(应为 12 个月全额)。
第三步:给出各周期下的计算顺序
把「年付怎么算」「月付怎么算」分别写成明确公式:
- 年付:
核心 × 10 + 模块 × 12,培训费豁免; - 月付:首月含一次性培训费,之后每月只是常规账单。
第四步:超额费用单独成项
[T.5] 是按月产生的可变费用,单独用 variable_user_overage 承接,
不要混进 initial_payment,否则示例里 0 的语义就没了。
第五步:让规则编号可核对
applied_rules 要求按编号升序、并明确 [T.1] 始终触发,
这样评测能直接比对模型「有没有想到该触发的规则」,
而不仅是看最终金额。
易错点总结
1. 折扣范围搞错
把年度折扣套到 [T.3] 的模块费上,会得到 (30+50)×10,
比正确答案少 120。折扣只作用于核心套餐。
2. 培训费漏判
年付才豁免 300 美元;月付时必须计入首月。 不看计费周期直接加或直接免都会错。
3. 超额费算错
45 人未超 50 人上限 → 0。要按「超出部分」× 12 计算, 不是按总人数乘。
4. applied_rules 漏项或乱序
要列出所有被触发的规则并升序排列。示例里 [T.4] 虽被豁免, 但规则确实被讨论并触发了(培训义务存在、随后被豁免),仍要列出。
5. 金额用了小数
所有金额都是整数(美元),输出 2760 而不是 2760.0。
扩展思考
- 规则再多也可以用「知识库 + 计算规则」两段式组织,先给事实再给流程。
- 若协议会更新,可把知识库外置成变量,提示词只保留计算流程,便于维护。