AI智能体

**本文引用的文件** - [AIAgentService.cs](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs) - [AISetting.cs](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AISetting.cs) - [ServiceCollectionExtensions.cs](file://Kevin/kevin.Module/kevin.AI.AgentFramework/ServiceCollectionExtensions.cs) - [RAGService.cs](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs) - [IRAGStorageService.cs](file://Kevin/kevin.Module/kevin.RAG/Interfaces/IRAGStorageService.cs) - [AliRerankService.cs](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs) - [AIModelsService.cs](file://Kevin/Application/Services/AI/AIModelsService.cs) - [TAIModels.cs](file://Kevin/Domain/Entities/AI/TAIModels.cs) - [AISkillToolManagementService.cs](file://Kevin/Application/Services/AI/AISkillToolManagementService.cs) - [TAISkillToolManagement.cs](file://Kevin/Domain/Entities/AI/TAISkillToolManagement.cs) - [AIKmssService.cs](file://Kevin/Application/Services/AI/AIKmssService.cs) - [TAIKmss.cs](file://Kevin/Domain/Entities/AI/TAIKmss.cs)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向 NetCoreKevin AI智能体系统,聚焦基于 AgentFramework 的智能代理能力:多步推理、任务自动化、技能与工具管理;知识库系统(Qdrant向量数据库、RAG检索增强、文档处理与索引构建);AI模型配置与管理(支持多种提供商与本地模型);从用户输入到AI响应的完整工作流;以及自定义工具开发、技能管理与性能优化建议,并给出实际应用场景与最佳实践。

项目结构

系统采用分层模块化组织:

  • 应用服务层:AI相关服务(Agent、RAG、知识库、模型、技能工具等)
  • 领域实体:AI模型、知识库、技能工具等数据模型
  • RAG模块:存储抽象、重排序、Ollama嵌入、Qdrant客户端设置
  • Agent框架:代理创建、流式输出、工具调用、重试与日志
  • Web接口:控制器暴露AI能力(不在本次重点展开)

领域实体

RAG模块

应用服务

Agent框架

AI代理服务
AIAgentService

AI设置
AISetting

服务注册扩展
ServiceCollectionExtensions

AI模型服务
AIModelsService

知识库服务
AIKmssService

技能工具管理
AISkillToolManagementService

RAG服务
RAGService

存储接口
IRAGStorageService

重排序服务
AliRerankService

AI模型实体
TAIModels

知识库配置
TAIKmss

技能工具配置
TAISkillToolManagement

图表来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)
  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [IRAGStorageService.cs:1-30](file://Kevin/kevin.Module/kevin.RAG/Interfaces/IRAGStorageService.cs#L1-L30)
  • [AliRerankService.cs:1-99](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs#L1-L99)
  • [AIModelsService.cs:1-160](file://Kevin/Application/Services/AI/AIModelsService.cs#L1-L160)
  • [TAIModels.cs:1-55](file://Kevin/Domain/Entities/AI/TAIModels.cs#L1-L55)
  • [AISkillToolManagementService.cs:1-254](file://Kevin/Application/Services/AI/AISkillToolManagementService.cs#L1-L254)
  • [TAISkillToolManagement.cs:1-93](file://Kevin/Domain/Entities/AI/TAISkillToolManagement.cs#L1-L93)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)
  • [TAIKmss.cs:1-47](file://Kevin/Domain/Entities/AI/TAIKmss.cs#L1-L47)

章节来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)
  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AIModelsService.cs:1-160](file://Kevin/Application/Services/AI/AIModelsService.cs#L1-L160)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)

核心组件

  • AI代理与流式推理:通过AIAgentService创建OpenAI兼容的ChatClient并装配为AIAgent,支持流式文本、工具调用回调、思考过程提取与Token用量统计,具备重试与HTTP请求拦截日志能力。
  • RAG检索增强:RAGService根据集合名与问题向量检索文档块,可选接入重排序服务提升相关性,最终组装上下文提示词供LLM使用。
  • 知识库索引与入库:AIKmssService负责文档解析、分块、向量化(Ollama Embedding)、写入Qdrant(通过IRAGStorageService),并维护导入状态。
  • 模型配置与管理:AIModelsService提供模型的增删改查,持久化至TAIModels,包含端点、名称、密钥、Embedding维度等。
  • 技能与工具管理:AISkillToolManagementService管理内置/自定义技能与工具,支持MCP协议参数、附件包解压与启用控制。

章节来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)
  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)
  • [AIModelsService.cs:1-160](file://Kevin/Application/Services/AI/AIModelsService.cs#L1-L160)
  • [AISkillToolManagementService.cs:1-254](file://Kevin/Application/Services/AI/AISkillToolManagementService.cs#L1-L254)

架构总览

下图展示从用户输入到AI响应的主流程,包括RAG检索、重排序、Agent执行、工具调用与流式输出。

"AI模型(OpenAI兼容)" "AIAgentService" "重排序(AliRerankService)" "IRAGStorageService(Qdrant)" "RAGService" "业务服务" "用户" "AI模型(OpenAI兼容)" "AIAgentService" "重排序(AliRerankService)" "IRAGStorageService(Qdrant)" "RAGService" "业务服务" "用户" alt ["启用重排序"] "发送问题" "GetRAGSystemPrompt(集合, 问题向量, topK, 阈值)" "Search(集合, 向量, limit)" "候选文档块列表" "RerankAsync(查询, 文档, topK)" "相关性分数" "过滤与排序" "上下文提示词 + 文档摘要" "CreateOpenAIAgentAndSendMSG(消息, 选项)" "RunStreamingAsync / RunAsync" "流式片段/结果" "文本 + Token用量" "返回答案"

图表来源

  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [IRAGStorageService.cs:1-30](file://Kevin/kevin.Module/kevin.RAG/Interfaces/IRAGStorageService.cs#L1-L30)
  • [AliRerankService.cs:1-99](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs#L1-L99)
  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)

详细组件分析

AI代理与服务编排(AIAgentService)

  • 代理创建:基于OpenAI兼容客户端构造ChatClient并转换为AIAgent,装配工具自动审批规则,支持禁用工具/技能开关。
  • 流式处理:支持流式文本输出、工具调用事件回调、思考过程提取(reasoning字段),并在更新中抽取Token用量。
  • 容错与重试:异常时回退为非流式调用,支持最大重试次数与网络超时配置。
  • 可观测性:可选HTTP请求拦截日志。

开始

构建OpenAI客户端与AIAgent

是否流式?

RunStreamingAsync 循环处理

RunAsync 获取结果

出现工具调用?

触发工具回调/执行

继续流式接收

提取思考过程?

解析raw patch中的reasoning字段

尝试抽取usage信息

结束

图表来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)

章节来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)
  • [AISetting.cs:1-64](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AISetting.cs#L1-L64)
  • [ServiceCollectionExtensions.cs:1-22](file://Kevin/kevin.Module/kevin.AI.AgentFramework/ServiceCollectionExtensions.cs#L1-L22)

RAG检索与重排序(RAGService + AliRerankService)

  • 检索流程:按集合名与问题向量搜索文档块,支持topK与相似度阈值过滤。
  • 重排序:可选接入外部重排序服务,对候选文档进行相关性打分与排序,再组装上下文提示词。
  • 输出:返回布尔标志、拼接后的系统提示词与文档块列表。

输入: 集合名, 问题向量, 问题文本, topK, 阈值

是否启用重排序?

搜索 topK*10 候选

搜索 topK 候选

调用重排序服务

按阈值过滤并取topK

拼接上下文提示词

返回 (成功/失败, 提示词, 文档列表)

图表来源

  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AliRerankService.cs:1-99](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs#L1-L99)
  • [IRAGStorageService.cs:1-30](file://Kevin/kevin.Module/kevin.RAG/Interfaces/IRAGStorageService.cs#L1-L30)

章节来源

  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AliRerankService.cs:1-99](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs#L1-L99)
  • [IRAGStorageService.cs:1-30](file://Kevin/kevin.Module/kevin.RAG/Interfaces/IRAGStorageService.cs#L1-L30)

知识库索引与入库(AIKmssService)

  • 文档读取:支持本地文件与远程URL,按类型解析(文本、Markdown、PDF、Word、HTML、图片、Excel)。
  • 分块与清洗:DocumentProcessor清理并分段,生成带元数据的文档块。
  • 向量化:通过Ollama嵌入模型生成向量,记录维度大小。
  • 入库:调用IRAGStorageService将文档块写入Qdrant集合(命名空间含知识库ID)。
  • 并发控制:分布式锁避免重复处理同一知识库。

开始入库

读取文件/内容

按类型解析

清洗文档

段落分块

生成向量(Embedding)

写入Qdrant(集合: AIKmss-{id})

更新导入状态

完成

图表来源

  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)
  • [TAIKmss.cs:1-47](file://Kevin/Domain/Entities/AI/TAIKmss.cs#L1-L47)

章节来源

  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)
  • [TAIKmss.cs:1-47](file://Kevin/Domain/Entities/AI/TAIKmss.cs#L1-L47)

模型配置与管理(AIModelsService + TAIModels)

  • 功能:分页查询、详情获取、新增/编辑、删除;支持按类型筛选。
  • 字段:AI类型、模型类型(聊天/嵌入等)、端点、模型名、密钥、部署名、Embedding维度。
  • 权限:支持租户隔离与数据权限控制。

"CRUD"

TAIModels

+AIType AIType

+AIModelType AIModelType

+string EndPoint

+string ModelName

+string ModelKey

+string? ModelDescription

+int EmbeddingValueSize

AIModelsService

+GetPageData(dtoPage) : dtoPageData

+GetDetails(id) : AIModelsDto

+AddEdit(dto) : bool

+Delete(id) : bool

图表来源

  • [TAIModels.cs:1-55](file://Kevin/Domain/Entities/AI/TAIModels.cs#L1-L55)
  • [AIModelsService.cs:1-160](file://Kevin/Application/Services/AI/AIModelsService.cs#L1-L160)

章节来源

  • [AIModelsService.cs:1-160](file://Kevin/Application/Services/AI/AIModelsService.cs#L1-L160)
  • [TAIModels.cs:1-55](file://Kevin/Domain/Entities/AI/TAIModels.cs#L1-L55)

技能与工具管理(AISkillToolManagementService + TAISkillToolManagement)

  • 能力:分页查询、按类型筛选(Skill/Tool/MCP)、唯一性校验、启用/停用、系统内置保护。
  • 技能包:上传Zip后解压至磁盘目录,便于运行时加载。
  • MCP集成:支持MCP地址、类型、Headers、命令、参数与环境变量配置。

"CRUD"

TAISkillToolManagement

+string Name

+string? ClassMethod

+string? Description

+bool IsSystem

+InActiveStatusEnums ActiveStatus

+AISkillToolTypeEnums SkillToolType

+string? McpUrl

+string? McpType

+string? McpHeaders

+string? McpCommand

+string? McpArguments

+string? McpEnvironment

AISkillToolManagementService

+GetPageData(dto) : dtoPageData

+AddEdit(dto) : bool

+Delete(id) : bool

+GetAllSkills() : List

+GetAllTools() : List

+GetAllMcps() : List

图表来源

  • [TAISkillToolManagement.cs:1-93](file://Kevin/Domain/Entities/AI/TAISkillToolManagement.cs#L1-L93)
  • [AISkillToolManagementService.cs:1-254](file://Kevin/Application/Services/AI/AISkillToolManagementService.cs#L1-L254)

章节来源

  • [AISkillToolManagementService.cs:1-254](file://Kevin/Application/Services/AI/AISkillToolManagementService.cs#L1-L254)
  • [TAISkillToolManagement.cs:1-93](file://Kevin/Domain/Entities/AI/TAISkillToolManagement.cs#L1-L93)

依赖关系分析

  • AIAgentService依赖AISetting进行连接与行为配置,并通过服务注册扩展注入工具服务。
  • RAGService依赖IRAGStorageService与可选的重排序服务,解耦存储实现。
  • AIKmssService依赖AIModelsService(选择嵌入模型)、OllamaApiService(嵌入)、IRAGStorageService(Qdrant)与文件服务。
  • 领域实体作为数据契约被服务层引用,保证一致性。

AIAgentService

AISetting

工具服务(注册扩展)

RAGService

IRAGStorageService

AliRerankService

AIKmssService

AIModelsService

OllamaApiService

图表来源

  • [ServiceCollectionExtensions.cs:1-22](file://Kevin/kevin.Module/kevin.AI.AgentFramework/ServiceCollectionExtensions.cs#L1-L22)
  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)

章节来源

  • [ServiceCollectionExtensions.cs:1-22](file://Kevin/kevin.Module/kevin.AI.AgentFramework/ServiceCollectionExtensions.cs#L1-L22)
  • [RAGService.cs:1-81](file://Kevin/kevin.Module/kevin.RAG/RAGService.cs#L1-L81)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)

性能考量

  • 流式输出与增量渲染:优先使用流式模式降低首字延迟,结合工具调用回调与思考过程提取提升交互体验。
  • 重试与超时:合理设置最大重试次数与网络超时,避免瞬时抖动导致失败。
  • 检索规模控制:RAG检索先扩大候选集(如topK*10)再重排序,减少漏检;同时设置相似度阈值过滤低质片段。
  • 分块策略:依据文档类型与语义调整段落长度与重叠标记数,平衡召回与上下文窗口限制。
  • 并发入库:使用分布式锁避免重复处理,批量写入向量库减少往返开销。
  • 资源隔离:不同知识库使用独立集合命名空间,避免冲突与热点。

[本节为通用指导,不直接分析具体文件]

故障排查指南

  • 流式异常回退:当流式调用抛出异常时,服务会回退为非流式调用并重试,检查日志定位网络或模型端问题。
  • 思考过程为空:若未提取到reasoning字段,检查原始响应结构与字段名兼容性。
  • 重排序失败:确认重排序服务URL、模型与鉴权头配置正确,捕获错误信息并提示。
  • 知识库入库失败:查看导入状态与错误信息,核对文件类型、解析器与嵌入模型配置;必要时重新触发处理。
  • 技能工具不可用:检查启用状态、系统内置保护与MCP参数完整性。

章节来源

  • [AIAgentService.cs:1-491](file://Kevin/kevin.Module/kevin.AI.AgentFramework/AIAgentService.cs#L1-L491)
  • [AliRerankService.cs:1-99](file://Kevin/kevin.Module/kevin.RAG/Rerank/AliRerankService.cs#L1-L99)
  • [AIKmssService.cs:1-449](file://Kevin/Application/Services/AI/AIKmssService.cs#L1-L449)

结论

NetCoreKevin AI智能体系统以AgentFramework为核心,结合RAG检索增强与知识库索引,形成从“问题→检索→重排→推理→工具”的闭环链路。通过灵活的模型配置、完善的技能工具管理与稳健的流式处理能力,满足企业级AI应用的多场景需求。建议在生产环境结合重试、超时、阈值与分块策略调优,以获得稳定高效的AI服务能力。

[本节为总结,不直接分析具体文件]

附录

  • 自定义工具开发指南
    • 在工具服务注册扩展中声明工具服务类型,确保依赖注入可用。
    • 遵循统一接口约定,实现工具方法签名与参数校验。
    • 通过AIAgent的工具自动审批规则控制执行策略,注意安全风险。
  • 技能管理配置
    • 上传技能Zip包并解压至指定目录,确保运行时可加载。
    • 配置MCP参数(地址、类型、Headers、命令、参数、环境变量)以对接外部能力。
  • 实际应用场景与最佳实践
    • 客服问答:RAG检索企业内部文档,重排序提升准确性,Agent调用查询工具补充实时数据。
    • 代码助手:结合代码仓库与文档,利用工具执行编译/测试,流式反馈逐步生成代码。
    • 数据分析:读取Excel/CSV,生成洞察报告,必要时调用计算工具进行指标聚合。

[本节为概念性内容,不直接分析具体文件]

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐