跳到主要内容

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。


扩展思考​

  • 规则再多也可以用「知识库 + 计算规则」两段式组织,先给事实再给流程。
  • 若协议会更新,可把知识库外置成变量,提示词只保留计算流程,便于维护。

相关题目​

加载评论中...