.Net C# AI智能体开发-AI智能体
·
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)目录
简介
本文件面向 NetCoreKevin AI智能体系统,聚焦基于 AgentFramework 的智能代理能力:多步推理、任务自动化、技能与工具管理;知识库系统(Qdrant向量数据库、RAG检索增强、文档处理与索引构建);AI模型配置与管理(支持多种提供商与本地模型);从用户输入到AI响应的完整工作流;以及自定义工具开发、技能管理与性能优化建议,并给出实际应用场景与最佳实践。
项目结构
系统采用分层模块化组织:
- 应用服务层:AI相关服务(Agent、RAG、知识库、模型、技能工具等)
- 领域实体:AI模型、知识库、技能工具等数据模型
- RAG模块:存储抽象、重排序、Ollama嵌入、Qdrant客户端设置
- Agent框架:代理创建、流式输出、工具调用、重试与日志
- Web接口:控制器暴露AI能力(不在本次重点展开)
图表来源
- [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执行、工具调用与流式输出。
图表来源
- [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请求拦截日志。
图表来源
- [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与相似度阈值过滤。
- 重排序:可选接入外部重排序服务,对候选文档进行相关性打分与排序,再组装上下文提示词。
- 输出:返回布尔标志、拼接后的系统提示词与文档块列表。
图表来源
- [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)。
- 并发控制:分布式锁避免重复处理同一知识库。
图表来源
- [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维度。
- 权限:支持租户隔离与数据权限控制。
图表来源
- [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、命令、参数与环境变量配置。
图表来源
- [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)与文件服务。
- 领域实体作为数据契约被服务层引用,保证一致性。
图表来源
- [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,生成洞察报告,必要时调用计算工具进行指标聚合。
[本节为概念性内容,不直接分析具体文件]
更多推荐


所有评论(0)