拆解AI应用领域模型

拆解AI应用领域模型

作为软件的Owner和开发人员,为了项目的可控性,笔者建议读者还是需要自行拆解,尽管拆解的实际步骤可以让模型来完成,但是我们需要知道其中过程是怎么样的。

以下是笔者实际如何完成核验的全过程,希望能给您的开发和设计起到帮助和启发。

场景表格化

作为软件项目的整个起始,按照DDD的原则,实际是需要拉取到相关利益方,坐下来一起讨论,软件应该满足哪些基本的需求。但是本书面向的是面向个人使用者和独立开发人员,其中利益相关方就是我们自己,所以这里完全就从简,由开发人员直接列举可能的场景,并将其格式化,形成软件需求说明书。

此步骤可交由模型完成,prompt如下

请根据我之前给出的应用场景描述,整理成表格,按照[场景,角色,交互形式]来整理,有不足的地方请帮我补充

回答如下:

AI问答系统场景分析表

场景分类 参与角色 交互形式 补充说明
推理生成 用户、推理引擎、工具代理 1. 用户提问 → 2. 引擎补全问题 → 3. 调用工具 → 4. 整理输出 需增加「结果校验」环节,确保工具返回数据的有效性
代码自生成执行 用户、代码引擎、沙箱环境 1. 用户需求 → 2. 生成初始代码 → 3. 沙箱执行 → 4. 错误修复 → 5. 返回结果 建议增加「执行历史」记录,支持代码片段复用
工具使用 用户、工具路由、MCP服务 1. 用户指令 → 2. 工具匹配 → 3. 鉴权调用 → 4. 结果适配 → 5. 响应输出 需补充「降级策略」,当首选工具不可用时自动切换备用方案
多工作流编排 用户、流程引擎、验证模块 1. 触发流程 → 2. 节点跳转 → 3. 自动验证 → 4. 人工复核 → 5. 流程归档 建议增加「版本快照」功能,支持流程回滚
知识库(RAG) 用户、检索引擎、推理辅助 1. 提问向量化 → 2. 知识检索 → 3. 结果排序 → 4. 逻辑增强 → 5. 最终响应 需补充「反馈学习」机制,根据用户采纳率优化检索权重

补充场景(根据模型特性新增)

场景分类 参与角色 交互形式 补充说明
混合决策 用户、仲裁引擎、多机器人 1. 并行调用多个机器人 → 2. 结果对比 → 3. 置信度评估 → 4. 最优结果选择 适用于医疗/金融等高风险场景
持续学习 管理员、训练模块、日志系统 1. 收集交互日志 → 2. 标注典型case → 3. 增量训练 → 4. 模型热更新 需设置「灰度发布」机制,避免全量更新风险
跨场景路由 用户、分类器、各场景入口 1. 意图识别 → 2. 场景匹配 → 3. 上下文迁移 → 4. 无缝衔接目标场景流程 关键在「上下文保持」技术,避免重复询问

请注意,使用模型时候,一定要把干的事情描述清楚,不要意图让模型读空气。

表格整理

表格整理的目的在于,我们需要梳理场景,并且尝试将场景进行归类。初步形成核心领域,周围支撑领域,方便下一步工作。

领域模型的初步整理

此步骤依然可以交给语言模型整理,开发人员负责将内容进行收敛,给予以下prompt

根据场景和模型,按照DDD的方法,构建类,请按照类所处领域范围,生命周期,是否持久化,进行分类,形成表格。类内字段不需要展开。

以下是回复

DDD领域模型分类表

核心领域(Core Domain)

类名 生命周期 持久化 领域职责说明
UserContext 用户会话周期 维护当前用户状态和安全上下文
Conversation 交互会话周期 管理问答会话的生命周期
BotOrchestrator 请求处理周期 协调多个机器人的执行流程
ExecutionTracker 任务执行周期 部分 记录分布式执行的中间状态

支撑子领域(Supporting Subdomain)

类名 生命周期 持久化 领域职责说明
MessageBus 系统运行周期 处理跨领域事件通信
AuthGateway 请求处理周期 统一鉴权和访问控制
LogAggregator 系统运行周期 集中处理操作日志和审计跟踪

通用子领域(Generic Subdomain)

类名 生命周期 持久化 领域职责说明
FileStorage 资源访问周期 统一管理多媒体文件存储
Notification 事件触发周期 部分 处理系统通知和用户提醒
ConfigManager 系统运行周期 管理运行时配置和参数

推理生成场景(Reasoning Context)

类名 生命周期 持久化 领域职责说明
PromptEngine 请求处理周期 问题补全和提示词优化
ToolBroker 工具调用周期 外部工具的发现和适配
EvidenceValidator 结果处理周期 部分 验证工具返回结果的合理性

代码执行场景(Coding Context)

类名 生命周期 持久化 领域职责说明
CodeGenerator 任务执行周期 根据需求生成可执行代码
SandboxRuntime 代码执行周期 隔离环境下的代码执行管理
DebugAssistant 错误处理周期 部分 分析执行错误并提供修复建议

工作流场景(Workflow Context)

类名 生命周期 持久化 领域职责说明
FlowDesigner 流程编辑周期 可视化流程编排和版本管理
NodeExecutor 节点执行周期 负责单个工作流节点的执行
Compensation 异常处理周期 实现分布式事务的补偿机制

知识库场景(Knowledge Context)

类名 生命周期 持久化 领域职责说明
VectorEngine 检索处理周期 实现向量相似度计算
ChunkManager 知识处理周期 管理知识分块和索引
FeedbackLearner 训练周期 根据用户反馈优化检索模型

生命周期类型说明

  1. 用户会话周期:随用户登录到注销
  2. 交互会话周期:单个问答会话的存活期
  3. 请求处理周期:单个API调用过程
  4. 任务执行周期:跨服务的长时间运行任务
  5. 系统运行周期:与应用程序同生命周期

持久化策略

  • :需要持久化到数据库
  • :仅内存中存在
  • 部分:部分数据需要持久化
  • 部分:部分数据需要持久化

模型返回内容审查

此时我们必须要进行检查,经过瞪眼法检查,其内容缺失了关键部分,我们前序整理模型到当前模型的映射关系 ,所以我们应该prompt如下:

检查发现没有融合前面所生成的领域模型,现请格式不变,并请将前文所述的《增强版本地问答交互模型(领域分层设计)》融合进去。

此时可以得到真实的模型如下:

DDD领域模型分类表(融合增强版)

核心领域(Core Domain)

类名 生命周期 持久化 领域职责说明 对应前文模型
UserContext 用户会话周期 维护当前用户状态和安全上下文 核心用户
Conversation 交互会话周期 管理问答会话的生命周期 交互会话
BotOrchestrator 请求处理周期 协调多个机器人的执行流程 机器人代理+执行编排
MessageRouter 消息处理周期 路由不同类型消息到对应处理器 交互消息

推理子领域(Reasoning Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
ReasoningEngine 任务执行周期 部分 实现多步推理和工具调用 推理引擎
ToolAdapter 工具调用周期 标准化外部工具接口 工具网关
EvidenceCache 系统运行周期 存储中间推理结果 媒体处理(分析结果)

代码子领域(Coding Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
CodeGenerator 任务执行周期 生成可执行代码 代码环境
SandboxController 代码执行周期 管理隔离执行环境 代码环境(沙箱配置)
DebugAnalyzer 错误处理周期 部分 提供代码修复建议 代码环境(修复策略)

工作流子领域(Workflow Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
FlowEngine 流程执行周期 驱动工作流节点执行 工作流引擎
NodeRepository 系统运行周期 存储可复用流程节点 工作流引擎(节点类型)
VersionSnapshot 流程变更周期 管理流程版本历史 工作流引擎(版本控制)

知识子领域(Knowledge Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
VectorSearcher 检索处理周期 执行向量相似度计算 知识融合
ChunkIndexer 知识处理周期 管理知识分块和索引 知识融合(嵌入模型)
HybridReasoner 结果处理周期 结合检索结果与逻辑推理 知识融合(增强模式)

支撑子领域(Supporting Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
MediaProcessor 资源处理周期 部分 统一处理多媒体内容 媒体处理
PriorityScheduler 系统运行周期 管理机器人执行优先级 机器人代理(执行优先级)
DataBridge 请求处理周期 处理跨领域数据转换 执行编排(数据传递规则)

通用子领域(Generic Subdomain)

类名 生命周期 持久化 领域职责说明 对应前文模型
ConfigRegistry 系统运行周期 管理系统配置参数 执行编排(超时设置)
MetricCollector 系统运行周期 收集运行时性能指标 工具网关(熔断机制)
EventPublisher 事件触发周期 处理领域事件分发 交互消息(时序标记)

关键映射说明

  1. 领域整合
  • 前文”机器人代理”拆分为BotOrchestrator(核心) + ToolAdapter(推理) + PriorityScheduler(支撑)
  • “执行编排”转化为DataBridge(支撑) + FlowEngine(工作流)
    1. 生命周期优化
  • 原”媒体处理”的瞬时分析状态归入EvidenceCache

  • 持久化部分升级为MediaProcessor

    1. 能力下沉
  • 原”增强模式”逻辑上移至HybridReasoner

  • 核心的”交互会话”保持最简状态,复杂逻辑外移到子领域

    1. 新增能力

持久化策略增强

存储类型 对应类 存储内容示例
关系型数据库 Conversation,VersionSnapshot 会话元数据、流程版本
文档数据库 ChunkIndexer,EvidenceCache 知识块、推理中间结果
键值存储 ConfigRegistry,MetricCollector 运行时配置、性能指标
对象存储 MediaProcessor 多媒体文件和分析结果

经过以上整理,我们基本可以得到一个可用的顶层模型,一般而言,作为架构师的工作就接近结束了 ,但是作为独立软件的开发人员,目前仅仅是迈出了最重要的一步,得到一个可用的模型。

接下来我们需要验证模型,此时我们要为领域内模型定义出具体的行为,并按照场景逐个事例验证。

领域内模型行为整理

同样的,我们可以利用语言模型协助我们完成行为的初步整理。prompt如下:

至此,请为领域内的模型设计其行为,请在各子领域内的列表扩展三列,1. 模型的行为中文名,2. 模型行为英文命名,3. 模型行为说明。

返回如下:

DDD领域模型行为设计(完整版)

核心领域(Core Domain)

类名 行为中文名 行为英文命名 行为说明 对应模型
UserContext 身份验证 authenticate 验证用户token并加载权限上下文 核心用户
会话绑定 bindSession 将用户与当前会话建立关联
权限检查 checkPermission 验证用户对指定资源的操作权限
Conversation 会话初始化 initialize 创建新会话并设置默认参数 交互会话
状态转换 transitionState 管理会话生命周期状态(进行中/挂起/结束)
超时处理 handleTimeout 检测并处理空闲会话
BotOrchestrator 机器人调度 scheduleBots 根据优先级和依赖关系调度机器人执行 机器人代理+执行编排
结果聚合 aggregateResults 合并多个机器人的输出结果
异常熔断 circuitBreak 当连续失败时自动隔离故障机器人

推理子领域(Reasoning Subdomain)

类名 行为中文名 行为英文命名 行为说明 对应模型
ReasoningEngine 问题重构 reformulateQuestion 使用思维链技术优化原始问题 推理引擎
工具选择 selectTools 根据问题类型匹配最佳工具集
结果验证 validateOutput 检查工具返回值的逻辑合理性
ToolAdapter 协议转换 convertProtocol 将内部请求转换为目标工具API格式 工具网关
负载均衡 balanceLoad 在多个工具实例间分配请求
结果标准化 normalizeResult 将异构工具输出转为统一格式
EvidenceCache 证据存储 storeEvidence 缓存推理过程的中间结果 媒体处理
相关性过滤 filterRelevance 根据当前会话筛选相关历史证据
版本快照 takeSnapshot 保存特定时间点的完整推理上下文

代码子领域(Coding Subdomain)

类名 行为中文名 行为英文命名 行为说明 对应模型
CodeGenerator 代码生成 generate 根据自然语言描述生成可执行代码 代码环境
注释补充 addComments 自动生成代码解释文档
代码优化 optimize 应用性能优化模式重构代码
SandboxController 环境隔离 isolateEnvironment 创建安全的执行沙箱 代码环境(沙箱配置)
资源限制 enforceLimits 监控和控制CPU/内存使用量
环境回收 cleanup 终止运行并释放所有资源
DebugAnalyzer 错误分类 classifyError 识别语法/逻辑/运行时异常 代码环境(修复策略)
修复建议 suggestFix 提供可执行的修复方案
模式学习 learnPattern 从历史错误中归纳常见问题模式

工作流子领域(Workflow Subdomain)

类名 行为中文名 行为英文命名 行为说明 对应模型
FlowEngine 流程驱动 driveFlow 按节点顺序执行工作流 工作流引擎
条件评估 evaluateCondition 计算节点转移条件的布尔值
自动回滚 autoRollback 失败时执行预定的补偿操
NodeRepository 节点注册 registerNode 添加新的可复用流程节点 工作流引擎(节点类型)
依赖解析 resolveDependencies 检查节点间的输入输出匹配
性能分析 analyzePerformance 统计节点执行耗时和资源占用
VersionSnapshot 版本创建 createVersion 保存当前流程的完整快照 工作流引擎(版本控制)
差异比较 diffVersions 显示两个版本间的变更点
版本回退 revertToVersion 将流程恢复到指定历史版本

知识子领域(Knowledge Subdomain)

类名 行为中文名 行为英文命名 行为说明 对应模型
VectorSearcher 向量检索 semanticSearch 执行基于embedding的相似度搜索 知识融合
混合排序 hybridRanking 结合关键词匹配和语义相似度综合排序
结果解释 explainScore 生成检索结果的置信度说明
ChunkIndexer 分块处理 chunkDocument 将文档分割为带语义的段落 知识融合(嵌入模型)
增量索引 incrementalIndex 只更新变更部分的向量索引
质量评估 assessQuality 检查知识块的信息完整性和准确性
HybridReasoner 逻辑验证 logicalVerify 对检索结果进行因果推理验证 知识融合(增强模式)
矛盾检测 detectConflict 识别结果中的逻辑矛盾点
证据加权 weightEvidence 根据可信度调整不同来源的权重

行为设计原则

  • 单一职责:每个行为对应一个明确的业务目标,三者形成递进关系但职责分离
  • 分层调用
   # 典型调用链示例
   class BotOrchestrator:
       def execute(self):
           self.scheduleBots()  # 核心领域
           ToolAdapter.convertProtocol()  # 推理子领域
           FlowEngine.driveFlow()  # 工作流子领域
  • 异常处理
行为类型 重试策略 降级方案
工具调用 指数退避重试(3次) 返回缓存结果+标记”可能过时”
代码执行 立即重试(仅语法错误) 提供等效API调用方案
知识检索 扩展查询条件重试 返回部分匹配结果+建议修正查询
  • 性能关键行为
    • 向量检索:支持近似最近邻(ANN)算法
    • 代码生成:使用预编译模板加速
    • 流程驱动:异步执行独立节点
  • 可观测性

内容核验

我们可以要求模型将行为和场景联系在一起,此时我们检查的工作量会减少很多。
prompt如下:

回复如下:

AI问答系统场景行为映射表

场景分类 参与角色 交互形式 模型行为组合 补充说明
推理生成 用户、推理引擎、工具代理 1. 用户提问 → 2. 引擎补全问题 → 3. 调用工具 → 4. 整理输出 ReasoningEngine.reformulateQuestion + ToolAdapter.convertProtocol + EvidenceCache.storeEvidence 需增加「结果校验」环节,确保工具返回数据的有效性
代码自生成执行 用户、代码引擎、沙箱环境 1. 用户需求 → 2. 生成初始代码 → 3. 沙箱执行 → 4. 错误修复 → 5. 返回结果 CodeGenerator.generate + SandboxController.isolateEnvironment + DebugAnalyzer.suggestFix 建议增加「执行历史」记录,支持代码片段复用
工具使用 用户、工具路由、MCP服务 1. 用户指令 → 2. 工具匹配 → 3. 鉴权调用 → 4. 结果适配 → 5. 响应输出 ToolAdapter.balanceLoad + UserContext.checkPermission + ToolAdapter.normalizeResult 需补充「降级策略」,当首选工具不可用时自动切换备用方案
多工作流编排 用户、流程引擎、验证模块 1. 触发流程 → 2. 节点跳转 → 3. 自动验证 → 4. 人工复核 → 5. 流程归档 FlowEngine.driveFlow + NodeRepository.resolveDependencies + VersionSnapshot.createVersion 建议增加「版本快照」功能,支持流程回滚
知识库(RAG) 用户、检索引擎、推理辅助 1. 提问向量化 → 2. 知识检索 → 3. 结果排序 → 4. 逻辑增强 → 5. 最终响应 VectorSearcher.semanticSearch + ChunkIndexer.incrementalIndex + HybridReasoner.logicalVerify 需补充「反馈学习」机制,根据用户采纳率优化检索权重
混合决策 用户、仲裁引擎、多机器人 1. 并行调用多个机器人 → 2. 结果对比 → 3. 置信度评估 → 4. 最优结果选择 BotOrchestrator.scheduleBots + BotOrchestrator.aggregateResults + ReasoningEngine.validateOutput 适用于医疗/金融等高风险场景
持续学习 管理员、训练模块、日志系统 1. 收集交互日志 → 2. 标注典型case → 3. 增量训练 → 4. 模型热更新 DebugAnalyzer.learnPattern + EvidenceCache.filterRelevance + VectorSearcher.hybridRanking 需设置「灰度发布」机制,避免全量更新风险
跨场景路由 用户、分类器、各场景入口 1. 意图识别 → 2. 场景匹配 → 3. 上下文迁移 → 4. 无缝衔接目标场景流程 Conversation.transitionState + UserContext.bindSession + FlowEngine.evaluateCondition 关键在「上下文保持」技术,避免重复询问

行为组合说明

推理生成场景

代码自修复场景

工具路由场景

典型行为参数映射

场景 关键行为参数
知识检索 semanticSearch(query: string, filters: {minScore: 0.7, maxResults: 5})
工作流编排 driveFlow(flowId: string, context: {timeout: 5000, retryPolicy: 3})
混合决策 aggregateResults(strategy: "weightedVote", weights: {botA: 0.6})

异常处理行为映射

异常类型 应对行为
工具调用超时 ToolAdapter.circuitBreak + EvidenceCache.filterRelevance
代码安全违规 SandboxController.enforceLimits + DebugAnalyzer.classifyError
流程节点卡死 FlowEngine.autoRollback + VersionSnapshot.revertToVersion
知识检索空结果 HybridReasoner.weightEvidence + ReasoningEngine.reformulateQuestion

性能关键行为组合

感兴趣的读者可以自行核验一下。
至此,整个建模工作就可以结束了,接下来就是比较无聊的开发时间。后文不再赘述。

总结

纵观以上内容,我们可以总结出人与模型应该如何进行交互。

  1. 我们总是要将问题尽可能的收敛,此时模型的回复才可以尽可能的精确
  2. 我们要自行掌握校验模型内容的方法,可以将繁琐的表格工作交由模型,但是最后的核验如果不亲自上手,后续步骤会导致开发中问题发散
  3. 使用模型时候需要渐进式的提问,预期中一句话生成一个应用的想法既不现实,也不会可行。

我们也可以看看模型是怎么帮我们总结的:

总结:架构师如何与大模型互动及渐进式提问指南

1. 明确目标,分阶段拆解

架构师在利用大模型辅助设计时,需将复杂问题拆解为多个阶段,逐步细化。例如:

  • 场景分析:先整理核心场景(如“推理生成”“代码执行”),再补充细节(如异常处理、性能优化)。
  • 模型设计:从领域分类(核心/支撑子领域)到类定义,最后填充行为逻辑,避免一次性生成完整模型导致偏差。

2. 渐进式提问,逐步收敛

  • 初始阶段:用宽泛问题获取框架(如“按DDD方法整理领域模型”)。
  • 细化阶段:通过追加条件修正结果(如“检查并融合前文模型”)。
  • 验证阶段:要求模型关联场景与行为(如“将行为映射到具体交互流程”)。

3. 模型为助手,人为决策者

  • 生成内容:将重复性工作(表格整理、类定义)交给模型,提升效率。
  • 核验关键:人工审查模型输出的逻辑一致性(如生命周期、持久化策略是否合理)。
  • 补充上下文:通过迭代提问(如“增加异常处理行为”)完善细节,而非依赖单次生成。

4. 工具化协作模式

  • 输入清晰:避免模糊描述,明确约束(如“按[场景,角色,交互形式]列表”)。
  • 输出结构化:要求模型以表格、流程图(如Mermaid)或分层列表呈现,便于后续开发直接复用。
  • 异常处理:针对高风险场景(如工具调用超时),单独提问设计降级策略。

5. 持续反馈与优化

  • 动态调整:根据模型反馈修正问题描述(如发现缺失“版本快照”功能后补充提问)。
  • 知识沉淀:将验证过的模型输出转化为文档,作为团队共识的领域语言(Ubiquitous Language)。

最终原则:大模型是架构设计的“加速器”,但核心决策(领域边界、关键行为)必须由架构师掌控。通过渐进式交互,既能发挥模型的高效性,又能确保系统的可控性与一致性。