提示词架构设计:构建可靠、确定性的AI系统

本文探讨了将提示词视为具有架构的软件系统,而非简单的文本字符串。文章详细介绍了设计确定性、生产就绪AI系统的五层架构:意图层、上下文层、约束层、记忆层和验证循环。

提示词架构:设计可靠、确定性的AI系统

如果2025年是组织发现提示工程作为一门学科的年份,那么2026年将是我们将其确立为标准实践的时候。提示词不是聪明的文字技巧——它们是具有架构、故障模式和生命周期要求的软件组件。

随着生产环境LLM部署的增多,其后果从“奇怪的响应”升级到“合规违规”或“不正确的客户数据”。这需要一个根本性的转变:我们必须像思考API或微服务一样思考提示词。提示词不是一个句子——它是一个工程系统,旨在在不同条件下实现一致的输出。

提示词是系统,而非字符串

当开发者说提示词“昨天有效但今天不行了”时,他们发现提示词的行为更像机器学习模型,而非静态代码。它们编码了意图、上下文、约束和期望。当任何因素——模型版本、输入分布或示例顺序——发生变化时,输出就会漂移。

要使提示词具有确定性,需要具有五层结构的系统:

  • 意图层:任务是什么——以及不是什么
  • 上下文层:模型需要知道什么
  • 约束层:输出必须如何表现
  • 记忆层:先前的哪些交互是重要的
  • 验证循环:自检机制

这将提示工程从创造性写作转变为实际的工程。

第一层:意图层

生产环境的提示词需要极其清晰的目的。“创建摘要”这样的模糊目标适合探索,不适合生产。 确定性提示词需明确界定成功、失败和范围。

示例:银行账户卡片组件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Task: Generate a reusable Jetpack Compose card component for banking accounts.

Success Criteria:
- Adapts to account types (checking, savings, credit cards)
- Displays: account name, masked number, current balance
- Optional CTA button ("Get virtual card", "View debit card")
- Material Design 3 compliance, dark mode support

Failure Conditions:
- NO hardcoded account data
- NO balance calculations
- NO API calls or business logic
- NO sensitive data in component state

Out of Scope: Data fetching, transaction history, navigation

第二层:上下文层

上下文常被误解。开发者通常用大量段落填充提示词,期望某些内容能“奏效”。有效的上下文是最小化、相关且结构化的。

结构化上下文(有效):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Context:
- Platform: Android (Kotlin, Jetpack Compose)
- Architecture: MVVM + Clean Architecture
- UI Framework: Material Design 3
- Target API: Android 24+
- State Management: ViewModel with StateFlow

Account Types:
1. Credit cards - balance, "Get virtual card" CTA
2. Checking accounts - balance, "View debit card" CTA
3. Savings - balance, "View details" CTA

Design System:
- Card elevation: 4.dp, corner radius: 16.dp
- Typography: title (20sp), body (14sp)
- Colors: Blue gradient, white text

模型现在有了精确的框架,而不会信息过载。

第三层:约束层

这里是工程学科体现的地方。约束将模糊的推理转变为确定性的行为。

生产环境约束:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Architecture Requirements
// - Stateless Composable function
// - Accept AccountUiState data class parameter
// - Callbacks only: onCardClick, onCtaClick
// - NO remember { } blocks
// - NO LaunchedEffect or mutableStateOf

// Data Model
data class AccountUiState(
    val accountId: String,
    val accountName: String,      // "Quicksilver", "360 Checking"
    val accountType: AccountType,
    val maskedNumber: String,     // "...0501"
    val balance: String,          // "$524.63"
    val ctaText: String?          // "Get virtual card" or null
)

// Security Requirements
// - Pre-masked account numbers only
// - NO logging sensitive data
// - NO hardcoded test data
// - String resources for accessibility

// UI Requirements
// - Material 3 Card (androidx.compose.material3)
// - 4.dp elevation, 16.dp corner radius
// - Gradient background
// - CTA button only if ctaText != null
// - Minimum 48.dp touch targets

第四层:记忆层

记忆管理AI交互过程中的状态。上下文定义了模型现在知道什么;记忆定义了它随着时间的推移保留什么。

记忆结构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
Session Memory:
  component: AccountCard.kt
  iteration: 3

  established_decisions:
    data_model: AccountUiState
    callbacks: [onCardClick, onCtaClick]
    design: Material 3, 4.dp elevation, stateless

  evolution:
    - v1: Basic card with text (completed)
    - v2: Added CTA button (completed)
    - v3: Adding gradient (in progress)

  constraints:
    - NO remember blocks
    - Maximum 100 lines
    - Callbacks only

这确保迭代建立在先前工作的基础上,而不会出现倒退。

第五层:验证循环

LLM受益于自检——第二次评估指令遵循情况的步骤。

验证清单:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
## Security Review
- [ ] Account numbers pre-masked only?
- [ ] NO logging sensitive data?
- [ ] NO remember { } or mutableStateOf?
- [ ] NO hardcoded test data?

## Architecture Review
- [ ] Completely stateless?
- [ ] Accepts AccountUiState parameter?
- [ ] Callbacks: onCardClick, onCtaClick?
- [ ] NO LaunchedEffect?

## UI/UX Review
- [ ] Material 3 Card?
- [ ] 4.dp elevation, 16.dp corners?
- [ ] CTA only when ctaText != null?
- [ ] 48.dp minimum touch targets?
- [ ] Preview functions included?

三阶段验证模式

  • 生成器 —— 创建初始代码
  • 安全评估器 —— 检查PCI DSS合规性、掩码和日志记录
  • 架构评估器 —— 验证MVVM、状态提升、关注点分离

这从概率性转变为可控、可验证的代码。

为什么确定性很重要

在金融应用中,确定性的提示词系统提供了:

  • 可靠的自动化:生成20多种账户变体,架构保持一致
  • 稳定的质量:每个组件遵循相同的模式
  • 减少的漏洞:约束防止数据暴露
  • 更快的审查:审查者期望一致的结构
  • 更容易的维护:统一的组件设计
  • 合规信心:安全检查内置于生成过程中

提示词即代码

前瞻性的团队将提示词视为一等构件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# prompts/android-card-component.yml
# Version: 2.3.0

metadata:
  name: "Card Component Generator"
  platform: "Android"
  framework: "Jetpack Compose"

template:
  intent:
    task: "Generate {{COMPONENT_TYPE}} card"
    success: ["Stateless", "Material 3", "Callbacks"]

  constraints:
    architecture: ["NO remember", "State hoisting"]
    security: ["Pre-masked data", "NO logging"]
    ui: ["4.dp elevation", "48.dp touch targets"]

  verification:
    security_items: 7
    architecture_items: 6
    pass_rate_required: 100%

采用这种思维方式的组织构建了可预测的AI系统,而竞争对手则在混乱中挣扎。

结语

提示词是结合了意图、上下文、约束、记忆和验证的结构化系统。经过适当的工程设计,它们会变得确定且可用于生产。

在金融应用开发中,架构化的提示意味着代码是需要大量重构,还是在首次提交时就能通过审查的区别。没有适当的约束,你会得到使用 remember { } 存储状态、硬编码测试数据或未能满足无障碍访问要求的组件。有了分层架构,你会得到无状态、安全、可重用的组件,能够无缝集成。

随着AI成为基础架构,提示架构将像API设计或数据库模式一样至关重要。早期把握这一转变的工程师将定义下一代开发实践。

问题不在于你的组织是否采用提示架构原则——而在于你是主动采取行动,还是在发现AI生成的代码违反合规性或在生产环境中崩溃后才采取行动。

开始像对待真正的软件组件一样对待提示词吧。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计