LLM代理应用架构概览
本文档提供了LLM代理应用的整体架构设计和关键组件说明。
应用架构分层
该应用程序采用标准的三层架构设计,各层职责明确分离:
UI层 (UI 目录)
- 职责:提供用户界面和交互功能
- 主要组件:
Forms/- 包含应用程序窗体LlmAgentMainForm.cs- 主窗体LoginForm.cs- 登录窗体RegisterForm.cs- 注册窗体PasswordVerificationForm.cs- 密码验证窗体ModelManagementForm.cs- 模型管理窗体AddWebsiteForm.cs- 添加网站窗体Test/ModelTestForm.cs- 模型测试窗体Test/ChannelTestForm.cs- 渠道测试窗体
Controls/- 自定义控件ChatSessionItem.cs- 聊天会话项控件PromptCardItem.cs- 提示词卡片控件UserCardItem.cs- 用户卡片控件WebsiteCardItem.cs- 网站卡片控件WebsiteBrowser.cs- 网站浏览器控件CustomTitleBar.cs- 自定义标题栏控件HiddenScrollBarFlowLayoutPanel.cs- 隐藏滚动条的流布局面板ChatForm/- 聊天相关控件Chatbox.cs- 聊天框控件ChatItem.cs- 聊天项控件ChatModelAdapter.cs- 聊天模型适配器ChatModels.cs- 聊天模型定义ChatPanel.Functions.cs- 聊天面板功能扩展ChatboxInfo.cs- 聊天框信息类
SimpleMessageDisplay/- 简单消息显示控件SimpleMessageDisplay.cs- 简化版消息显示控件
业务逻辑层 (BLL 目录)
- 职责:实现业务规则和逻辑,连接UI和数据层
- 主要组件:
ChatHistoryManager.cs- 聊天历史管理ChannelManager.cs- 渠道管理ChannelService.cs- 渠道服务UserService.cs- 用户服务LoggedInUserService.cs- 登录用户服务PromptManager.cs- 提示词管理WebsiteManager.cs- 网站管理
数据访问层 (DAL 目录)
- 职责:处理数据持久化和检索
- 主要组件:
ChatRepository.cs- 聊天数据仓库DatabaseManager.cs- 数据库管理UserRepository.cs- 用户数据仓库LoggedInUserRepository.cs- 登录用户数据仓库PromptRepository.cs- 提示词数据仓库WebsiteRepository.cs- 网站数据仓库
API接口层 (API 目录)
- 职责:封装与外部LLM服务的交互
- 主要组件:
Provider/BaseLLMProvider.cs- 提供商基础抽象类Provider/LLMProvider.cs- LLM提供商接口定义Provider/ProviderFactory.cs- 提供商工厂Provider/OpenAIProvider.cs- OpenAI提供商实现Provider/AzureOpenAIProvider.cs- Azure OpenAI提供商实现Provider/AnthropicProvider.cs- Anthropic提供商实现Provider/GeminiProvider.cs- Google Gemini提供商实现Provider/SiliconFlowProvider.cs- SiliconFlow兼容服务实现
数据模型 (Model 目录)
- 职责:定义应用程序的数据结构
- 主要组件:
ChatSession.cs- 聊天会话模型ChatMessage.cs- 聊天消息模型ChatRole.cs- 聊天角色枚举Channel.cs- 渠道模型Models.cs- 模型信息定义User.cs- 用户模型Prompt.cs- 提示词模型AiWebsite.cs- AI网站模型WebsiteCredential.cs- 网站凭据模型ProviderType.cs- 提供商类型枚举
数据存储机制
应用程序使用多种存储机制来持久化不同类型的数据:
详细的数据存储架构、用户数据与应用数据分离方案、数据结构和技术栈,请参阅数据存储文档。
1. SQLite数据库存储
用于持久化聊天会话、消息、模型信息和渠道配置:
聊天数据:
ChatSessions表 - 存储会话基本信息ChatMessages表 - 存储聊天消息
模型数据:
Models表 - 存储各提供商支持的模型信息
渠道配置:
Channels表 - 存储渠道基本信息ChannelModels表 - 存储渠道支持的模型
2. 应用程序设置
用于存储用户首选项和应用配置:
- 机制:使用 .NET 的
Properties.Settings - 存储项:
- 上次选择的提供商
- 上次选择的模型
- 系统提示
- 流式响应设置
数据模型及关系
核心数据模型
聊天会话 (ChatSession)
聊天消息 (ChatMessage)
渠道 (Channel)
模型信息 (ModelInfo)
数据关系
- 一个聊天会话包含多条聊天消息
- 一个用户拥有多个聊天会话
- 一个用户可以创建多个提示词
- 一个用户可以有多个网站凭据
- 一个AI网站可以存储多个用户的凭据
控件间数据交流
主窗体与业务逻辑层交互
主窗体 (LlmAgentMainForm) 持有各业务逻辑管理器的实例:
