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
) 持有各业务逻辑管理器的实例: