菜单

AI 架构与管理

相关源文件

本文档描述了 AppFlowy 中 AI 功能的核心架构和管理系统,重点关注 AIManagerLocalAIController、模型选择机制和 AI 服务编排。该系统提供了一个统一的接口,用于管理基于云和本地的 AI 服务,同时处理资源管理、模型切换和服务协调。

概述

AppFlowy 的 AI 架构以 AIManager 为核心编排器,协调包括云 AI、通过 Ollama 实现的本地 AI 以及各种外部服务在内的多个 AI 服务。LocalAIController 专门管理本地 AI 操作,而复杂的模型选择系统则允许根据上下文和用户偏好在不同 AI 提供商和模型之间动态切换。

AI 管理架构

来源

AIManager:中央编排

AIManager 是 AppFlowy 中所有 AI 操作的中央协调器。它管理多个 AI 服务,处理模型选择,并协调不同 AI 提供商之间的通信。

AIManager 架构

AIManager 使用定义其操作范围的几个关键依赖项进行初始化

  • ChatServiceMiddleware:提供对云和本地 AI 服务的抽象
  • LocalAIController:管理基于 Ollama 的本地 AI 操作
  • DashMap<Uuid, Arc<Chat>>:活动聊天会话的线程安全存储
  • ModelSelectionControl:处理 AI 模型选择和切换逻辑

来源

LocalAIController:本地 AI 管理

LocalAIController 通过集成 Ollama 管理本地 AI 处理的所有方面。它处理模型管理、资源验证,并协调本地 AI 操作,同时保持与云服务的隔离。

LocalAIController 组件

LocalAIController 使用了几个关键模式

  • 资源验证:持续监控 Ollama 服务器可用性和所需模型
  • 单聊策略:一次仅激活一个聊天会话以管理内存使用
  • 延迟初始化:Ollama 客户端仅在需要时创建并验证

来源

本地 AI 设置管理

LocalAISetting 结构定义了本地 AI 操作的配置

设置通过 LLMResourceService 特性进行管理,该特性提供本地 AI 配置的持久化操作。

来源

模型选择架构

AppFlowy 实现了一个复杂的模型选择系统,支持全局默认设置和上下文相关的模型选择。ModelSelectionControl 管理模型的可用性、偏好和切换逻辑。

模型选择流程

模型选择系统使用 SourceKey 对象来标识模型使用的不同上下文。全局活动模型键存储为 GLOBAL_ACTIVE_MODEL_KEY,而上下文特定键则使用聊天 ID 或文档 ID 等标识符。

来源

模型存储与持久化

来源

资源管理与验证

LocalAIResourceController 处理本地 AI 资源的验证,确保在启用本地 AI 功能之前所有必要组件都可用。

资源验证流程

资源验证系统检查三种类型的资源

  1. Ollama 服务器可用性:验证服务器是否响应 HTTP 请求
  2. 所需模型:确保聊天和嵌入模型已下载
  3. 模型类型检测:确定模型是用于聊天还是嵌入

来源

服务编排

ChatServiceMiddleware 提供了一个统一的接口,抽象了云和本地 AI 服务,根据模型类型和可用性实现智能路由。

服务路由逻辑

该中间件实现了 ChatCloudService 特性,同时根据 AI 模型类型和本地 AI 可用性状态在内部路由请求。

来源

UI 实现和设置流程

设置 UI 结构

AI 设置在 UI 中组织成一个分层结构

来源

AI 设置状态管理

AI 设置状态在前端使用多个 Bloc 类进行管理

  1. SettingsAIBloc:管理全局 AI 设置和模型选择
  2. LocalAiPluginBloc:管理本地 AI 插件状态(启用/禁用,运行状态)
  3. OllamaSettingBloc:管理 Ollama 特定设置

来源

事件处理器和 API 接口

AI 设置系统暴露了多个事件处理器,允许前端与后端交互

关键事件处理器

来源

设置持久化

AI 设置持久化存储在以下几个位置

  1. LocalAISetting:以键 LOCAL_AI_SETTING_KEY 存储
  2. 本地 AI 启用状态:以键 appflowy_local_ai_enabled:{workspace_id} 存储
  3. 模型选择:以从 ai_available_models_key 派生的键存储

来源

移动支持

AI 设置在移动界面中也可用,尽管布局简化了

来源

与功能标志集成

AI 功能可以通过应用程序中的功能标志进行控制。目前,AI 功能没有特定的功能标志,但该系统旨在未来兼容它们。

来源

结论

AppFlowy 中的 AI 设置和配置系统为用户提供了灵活的方式来定制其 AI 体验。它支持基于云和本地的 AI 处理,并提供配置模型选择、服务器设置和特定功能选项的功能。该系统旨在可扩展,以便未来可以轻松集成和配置 AI 功能。