关注点分离(Separation of Concerns)示例(AI Agent 架构、流程编排、数据契约、提示词工程)
Agent 功能的架构约定图放 services/agent/graphs/必须定义显式 TypedDict 输入/输出 state schemaprompt 一律放 services/agent/prompts/不许内联在图代码里。为什么要这么设计文章目录这套 Agent 架构约定的设计意图1. Graph 放 services/agent/graphs/ 显式 TypedDict State Schema为什么不直接用 dict 或 TypedDict 内联在函数签名里2. Prompt 放 services/agent/prompts/禁止内联① 角色分离写 Prompt 的 ≠ 写 Graph 的② 版本管理 A/B 实验③ 可观测性 成本追踪④ 防止 Prompt 与逻辑耦合3. 整体目录结构的意图一句话总结这套 Agent 架构约定的设计意图你描述的这条规范本质上是在做关注点分离Separation of Concerns把 Agent 系统拆成了三个正交的维度流程编排、数据契约、提示词工程。下面逐条拆解为什么要这么做。1. Graph 放services/agent/graphs/ 显式 TypedDict State Schema为什么不直接用dict或TypedDict内联在函数签名里# ❌ 松散做法 — 上下游节点靠默契传字段defnode_a(state:dict)-dict:state[foo]barreturnstate# ✅ 规范做法 — 显式契约classAgentState(TypedDict):messages:list[BaseMessage]plan:strtool_results:list[dict]is_complete:bool好处说明编译期可检查Mypy / Pyright 能在 CI 里直接报出字段拼写错误、类型不匹配而不是等到运行时KeyError节点间契约清晰每个 node 的input → output一目了然新人不用顺着整个 graph 追数据流Graph 可视化/序列化LangGraph 等框架依赖显式 state 做 checkpoint、time-travel、状态恢复隐式 dict 做不到可测试性单测一个节点时TypedDict 就是 mock 数据的 schema不用猜该传什么2. Prompt 放services/agent/prompts/禁止内联这是整条规范里最实用的一条原因至少有四层① 角色分离写 Prompt 的 ≠ 写 Graph 的Prompt 工程师 / 产品人员 → 改 prompts/xxx.txt 后端工程师 → 改 graphs/xxx.pyPrompt 调优是高频迭代如果 prompt 写在 Python 代码里每次改个措辞都要触碰业务代码、跑完整 CI、有合并冲突风险。② 版本管理 A/B 实验prompts/ planner_v1.txt planner_v2.txt ← 灰度实验直接切文件 tool_router.txt summarizer.txt放在独立文件里可以用 Git 对 prompt 单独做 diff / blame / 回滚按版本命名做 A/B test未来迁移到 Prompt 管理平台LangSmith、Helicone 等零成本③ 可观测性 成本追踪集中管理后很容易加一层统一的 loader顺带做Token 计数 / 成本预估Prompt 注入检测变量注入审计哪些{variable}被填充了什么值如果 prompt 散落在各个.py文件里这些横切逻辑就没地方挂。④ 防止 Prompt 与逻辑耦合# ❌ 内联 — prompt 和流程控制混在一起改 prompt 可能误改逻辑defplanner_node(state):responsellm.invoke(f你是一个规划助手。 用户的请求是:{state[input]}如果涉及代码请调用 code_tool... # ← 这是 prompt 还是业务规则 )...# ✅ 分离 — 各管各的# prompts/planner.txt# graphs/planner.pydefplanner_node(state:PlannerInput)-PlannerOutput:promptload_prompt(planner,inputstate[input])responsellm.invoke(prompt)...3. 整体目录结构的意图services/agent/ ├── graphs/ ← 流程编排怎么走 │ ├── main_agent.py │ └── sub_graphs/ ├── prompts/ ← 提示词怎么说 │ ├── planner.txt │ └── tool_router.txt ├── tools/ ← 工具实现用什么做 └── schemas.py ← TypedDict 定义数据长什么样这四个目录对应了 Agent 系统的四个独立变化频率目录变化频率改动人graphs/低频架构定下来很少改后端schemas.py中频新增字段时改后端prompts/高频持续调优Prompt 工程师 / 产品tools/中频新增能力时改后端变化频率不同的东西不应该放在同一个文件里——这是软件设计里最朴素也最重要的原则之一。一句话总结这套约定的核心目的是让 prompt 调优、图编排、数据契约三件事可以独立演进、独立测试、独立 review互不拖累。在 Agent 系统这种 prompt 改动频率远高于代码的系统里这种分离不是洁癖而是生存需要。

相关新闻

GitHub界面汉化插件:3分钟告别英文困扰,让编程更丝滑

GitHub界面汉化插件:3分钟告别英文困扰,让编程更丝滑

GitHub界面汉化插件:3分钟告别英文困扰,让编程更丝滑 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为Gi…

2026/7/26 9:16:31 阅读更多 →
视觉语言模型在实体导航中的应用与优化

视觉语言模型在实体导航中的应用与优化

1. 项目概述:当视觉语言模型遇上实体导航 VLingNav这个项目名称拆解开来,实际上揭示了三个关键技术要素:"V"代表视觉(Visual),"Ling"代表语言(Linguistic)&…

2026/7/26 9:16:31 阅读更多 →
神经网络与模型预测控制在无人机控制中的应用

神经网络与模型预测控制在无人机控制中的应用

1. 项目背景与核心价值去年在实验室调试四旋翼无人机时,我们遇到了一个经典难题:传统PID控制在复杂气流扰动下表现不稳定,而基于模型的控制方法又难以应对系统非线性特性。当时尝试将神经网络与模型预测控制结合,实测效果提升了约…

2026/7/26 9:16:31 阅读更多 →

最新新闻

本可避免的P1事故:Nginx变更导致网关请求均响应400

本可避免的P1事故:Nginx变更导致网关请求均响应400

本可避免的P1事故:Nginx变更导致网关请求均响应400 事故回顾:一次常规变更引发的连锁故障在微服务架构中,Nginx常作为网关层承担流量入口、负载均衡、SSL终止等关键职责。某次常规的Nginx配置变更后,所有经过网关的请求突然全部返…

2026/7/26 9:24:41 阅读更多 →
金融领域RAG系统实战:大模型与检索增强生成技术解析

金融领域RAG系统实战:大模型与检索增强生成技术解析

1. 项目背景与核心价值 最近在技术社区看到不少同行在讨论RAG(Retrieval-Augmented Generation)技术在实际业务中的应用,正好手头有个金融知识问答系统的升级需求,决定采用大模型RAG的方案来做个实战演练。这个项目最吸引我的地方…

2026/7/26 9:24:41 阅读更多 →
MFC List Control动态数据管理:从增删改查到虚拟列表与性能优化

MFC List Control动态数据管理:从增删改查到虚拟列表与性能优化

1. 项目概述与核心价值 最近在整理一些老项目的代码,发现很多基于MFC的桌面应用里,List Control控件用得特别频繁,但用法却千差万别。尤其是需要动态增删改查数据的场景,不少实现要么逻辑混乱,要么性能堪忧&#xff0c…

2026/7/26 9:24:41 阅读更多 →
5分钟解放视频硬字幕:这个开源神器让你告别手动转录的烦恼

5分钟解放视频硬字幕:这个开源神器让你告别手动转录的烦恼

5分钟解放视频硬字幕:这个开源神器让你告别手动转录的烦恼 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕…

2026/7/26 9:24:41 阅读更多 →
从移动优先到桌面大表,sap.m 与 sap.ui.table 的浏览器支持和选型逻辑

从移动优先到桌面大表,sap.m 与 sap.ui.table 的浏览器支持和选型逻辑

最近做 SAP Fiori 页面时,表格控件很容易变成一个看似简单、实际很容易踩坑的点。一个销售订单列表,在桌面端看起来规规矩矩,到了 iPad 上列宽开始拥挤,到了手机上横向滚动让业务人员皱眉,再换到旧版 Android WebView,又可能出现弹窗、输入框、文本截断这些细节问题。很多…

2026/7/26 9:24:41 阅读更多 →
TI HWA FFT引擎配置详解:勘误规避与寄存器实战指南

TI HWA FFT引擎配置详解:勘误规避与寄存器实战指南

1. 硬件加速器(HWA)在信号处理中的核心价值与挑战在嵌入式信号处理领域,尤其是雷达、通信和高端音频应用中,实时性往往是系统设计的生命线。当你的主处理器(比如ARM Cortex-R系列)还在为复杂的快速傅里叶变…

2026/7/26 9:23:40 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻