5.1 KiB
5.1 KiB
SmartHandleServiceV2 & Agent Framework 架构文档
1. 概述
SmartHandleServiceV2 是本项目中负责智能处理的核心服务,它基于 Agent Framework 重构,旨在通过 AI 代理(Agents)实现复杂的业务逻辑自动化。目前主要包含以下功能:
- 智能分类:自动识别交易记录并归类。
- 单行账单解析:从非结构化文本中提取账单信息。
2. 架构设计
本项目采用 Agent 模式,将复杂的业务流程封装为独立的 Agent,每个 Agent 继承自基类 BaseAgent,具备统一的执行流、日志记录、步骤追踪和错误处理能力。
2.1 核心组件
ISmartHandleServiceV2/SmartHandleServiceV2: 服务入口,负责协调各个 Agent 的执行。它不包含具体的业务逻辑,而是作为 Facade 层调用具体的 Agent。BaseAgent(Service.AgentFramework): Agent 的基类,提供了以下核心能力:- 步骤记录 (
RecordStep): 记录执行过程中的关键步骤,用于调试和可视化。 - 工具调用 (
CallToolAsync): 统一封装工具调用,包含性能监控和异常处理。 - 结果封装 (
CreateResult): 返回标准化的AgentResult<T>。 - 可观测性: 集成了
ActivitySource("Microsoft.Agents.Workflows"),支持分布式追踪。
- 步骤记录 (
AgentResult<T>: 标准化的返回结果,包含数据 (Data)、摘要 (Summary)、执行步骤 (Steps)、元数据 (Metadata) 和 错误信息 (Error)。
3. 详细工作流
3.1 智能分类 Agent (ClassificationAgent)
该 Agent 负责对未分类的交易记录进行批量智能分类。其执行流程 (ExecuteAsync) 分为四个阶段:
-
数据采集 (Data Collection)
- 调用
QueryUnclassifiedRecordsAsync获取待分类的交易记录。 - 如果没有待分类记录,直接返回。
- 调用
-
分析阶段 (Analysis)
- 分组: 将交易记录按摘要 (
Reason) 分组,计算每个组的总金额和样本类型。 - 关键词提取: 对每个分组的摘要提取关键词。
- 相似度匹配: 根据关键词查询历史已分类的相似记录,作为 AI 的参考依据。
- 分组: 将交易记录按摘要 (
-
决策阶段 (Decision)
- 构建 Prompt:包含分类列表 (
categoryInfo) 和待分类的分组信息 (billsInfo)。 - 调用 AI (
_aiTools.ClassifyTransactionsAsync) 进行批量分类决策。 - AI 返回 NDJSON 格式的分类结果。
- 构建 Prompt:包含分类列表 (
-
结果保存 (Result Saving)
- 遍历 AI 的分类结果,更新数据库中的交易记录 (
UpdateTransactionClassifyAsync)。 - 生成多轮执行总结。
- 遍历 AI 的分类结果,更新数据库中的交易记录 (
3.2 单行账单解析 Agent (ParsingAgent)
该 Agent 负责将一段文本解析为结构化的交易记录。其执行流程 (ExecuteAsync) 如下:
- 文本分析: 分析文本结构(如分隔符、行数等)。
- 关键词提取: 提取文本中的关键信息(如金额、商家、日期)。
- AI 解析: 调用 AI 模型将非结构化文本转换为结构化数据。
- 结果封装: 返回解析后的
TransactionParseResult对象。
4. 关键类与模型
4.1 数据模型
ClassificationResult: 分类结果,包含摘要、分类名称、交易类型、置信度和参考记录。TransactionParseResult: 解析结果,包含金额、摘要、日期、类型和分类。ExecutionStep: 执行步骤记录,包含步骤名、描述、状态、耗时和输出。
4.2 依赖服务
IToolRegistry: 工具注册表,用于管理和调用各种工具。ITransactionQueryTools: 交易查询工具,用于数据库交互。ITextProcessingTools: 文本处理工具,用于关键词提取和结构分析。IAITools: AI 工具,用于与 LLM 交互。
5. 维护与扩展指南
5.1 添加新的 Agent
- 在
Service.AgentFramework目录下创建新的 Agent 类,继承自BaseAgent。 - 在构造函数中注入所需的工具和服务。
- 实现
ExecuteAsync方法,定义 Agent 的工作流。 - 使用
RecordStep记录关键步骤。 - 在
SmartHandleServiceV2中注入并调用新的 Agent。
5.2 调试与排错
- 查看日志: Agent 会记录详细的执行日志,包括每个步骤的输入输出。
- 检查
AgentResult.Steps: 返回结果中包含了完整的执行步骤链,可以查看每一步的状态和耗时。 - Activity 追踪: 利用
ActivitySource可以结合 APM 工具(如 OpenTelemetry)进行链路追踪。
5.3 修改 AI 逻辑
- Prompt 调整:
ClassificationAgent中的BuildSystemPromptandBuildUserPrompt方法定义了与 AI 的交互逻辑。修改这些 Prompt 可以调整 AI 的行为。 - 模型参数: AI 调用的具体参数(如温度、模型版本)通常在
IAITools的实现中配置。