Skip to main content

系统概述

LangChat Pro 是一个基于 Spring Boot 3.5.6 和 LangChain4j 1.9.0 的企业级 AI 应用平台,支持多种大语言模型(LLM)、知识库检索、工作流编排和插件扩展等核心功能。

技术栈

核心框架

  • Spring Boot: 3.5.6
  • Java: 17
  • LangChain4j: 1.9.0
  • MyBatis Plus: 3.5.5

数据库

  • MySQL: 8.3.0 - 主数据库
  • Redis: 6.0+ - 缓存和ChatMemory存储

向量数据库

  • PGVector - PostgreSQL向量扩展
  • Milvus - 专业向量数据库
  • Elasticsearch - 全文搜索和向量存储
  • Redis Vector - 高速缓存
  • Neo4j - 图数据库

认证授权

  • Sa-Token: 1.44.0

异步响应式

  • Project Reactor (Flux, Mono)

模块层次结构

┌─────────────────────────────────────────────────────────┐
│                    langchat-bootstrap                   │
│               应用启动入口、统一配置管理                │
└─────────────────────────────────────────────────────────┘

        ┌───────────────────┼───────────────────┐
        │                   │                   │
┌───────▼────────┐  ┌──────▼───────┐  ┌──────▼──────────┐
│ langchat-aigc  │  │ langchat-core│  │ langchat-workflow│
│   AI生成内容   │  │  LLM核心服务  │  │    工作流引擎    │
└───────┬────────┘  └──────┬───────┘  └──────┬──────────┘
        │                   │                   │
        └───────────────────┼───────────────────┘

        ┌───────────────────┼───────────────────┐
        │                   │                   │
┌───────▼────────┐  ┌──────▼───────┐  ┌──────▼──────────┐
│ langchat-auth  │  │ langchat-integration│
│  认证授权模块  │  │    第三方集成     │
└───────┬────────┘  └──────┬───────┘  └─────────────────┘
        │                   │
        └───────────────────┼───────────────────┐
                            │                   │
        ┌───────────────────┼───────┐  ┌──────▼──────────┐
        │                   │       │  │  langchat-pusher │
┌───────▼────────┐  ┌──────▼───────┐  │   消息推送模块   │
│ langchat-plugin │  │ langchat-mcp│  └─────────────────┘
│    插件系统     │  │  MCP协议实现│
└─────────────────┘  └─────────────┘

        ┌───────────────────┼───────────────────┐
        │                   │                   │
┌───────▼───────────────────▼─────────────────▼─────┐
│           langchat-common                        │
│  公共基础组件(core, auth, oss, ai)             │
└──────────────────────────────────────────────────┘

核心模块职责

1. langchat-bootstrap

职责: 应用启动入口,整合所有业务模块 关键文件:
  • src/main/java/cn/langchat/LangChatApplication.java - Spring Boot启动类
  • src/main/resources/application.yml - 主配置文件
依赖: 所有业务模块

2. langchat-common(公共基础组件)

langchat-common-core

  • 通用工具类(StringUtil, DateUtil, JsonUtil等)
  • 统一响应对象(R, PageResult)
  • 全局异常处理
  • 自定义注解(@Log, @RateLimiter, @RequiresPermission)

langchat-common-auth

  • Sa-Token配置
  • Token工具类
  • 认证拦截器
  • 权限验证

langchat-common-oss

  • 对象存储服务接口
  • 支持阿里云OSS、腾讯云OSS、MinIO

langchat-common-ai

  • AI相关模型和枚举
  • 提示词工具
  • Token计算工具

3. langchat-aigc(AIGC功能模块)

langchat-aigc-api

职责: AIGC接口定义和数据模型 核心实体:
  • AigcApp - 应用配置
  • AigcConversation - 对话会话
  • AigcMessage - 消息记录
  • AigcModel - 模型配置
  • AigcKnowledge - 知识库
  • AigcDocs - 文档
  • AigcSegment - 文本分段
  • AigcVectorStore - 向量库配置
核心服务接口:
  • ChatService - 聊天服务接口

langchat-aigc-biz

职责: AIGC业务逻辑实现 核心实现:
  • ChatServiceImpl - 聊天服务实现
  • AigcModelServiceImpl - 模型管理服务
  • AigcKnowledgeServiceImpl - 知识库管理服务
  • AigcDocsServiceImpl - 文档管理服务
核心控制器:
  • ChatEndpoint - WebSocket聊天端点
  • AigcModelController - 模型管理接口
  • AigcKnowledgeController - 知识库接口

4. langchat-core(LLM核心服务)

职责: LLM模型调用、Embedding、向量检索、文档处理 核心服务:

LcChatService

路径: langchat-core/src/main/java/cn/langchat/core/service/LcChatService.java 核心方法:
  • streamingChat(LcChatReq req) - 流式聊天(支持知识库、RAG)
  • standaloneStreamingChat(LcChatReq req) - 独立流式聊天
  • simpleChatForText(SimpleChatContext context) - 简单文本对话
  • getChatModel(BaseChatContext context) - 获取ChatModel
  • getStreamingChatModel(BaseChatContext context) - 获取StreamingChatModel

LcEmbeddingService

职责: 文本向量化服务

文档解析服务

  • TikaParser - 通用文档解析
  • PoiParser - Office文档解析
  • MinerUParser - 高级文档解析(OCR)

5. langchat-workflow(工作流引擎)

职责: 工作流执行、节点处理、状态管理 核心组件:
  • WorkflowExecutor - 工作流执行器
  • WorkflowBuilder - 工作流构建器
  • Flow - 工作流定义
  • FlowNode - 流程节点
  • WorkflowState - 工作流状态
节点类型:
  • StartNode/EndNode - 开始/结束节点
  • LLMNode - LLM调用节点
  • IfNode - 条件判断节点
  • HttpNode - HTTP请求节点
  • CodeNode - 代码执行节点
  • 共40+种节点类型

6. langchat-integration(第三方集成)

职责: 集成第三方AI平台 集成服务:
  • Coze - 字节跳动Coze平台集成
  • Dify - Dify AI平台集成

7. langchat-plugin(插件系统)

职责: 插件管理和动态工具调用 核心组件:
  • DynamicToolFactory - 动态工具工厂接口
内置插件:
  • 时间工具插件(获取当前时间、日期计算)
  • 百度搜索插件
  • 头条新闻插件

8. langchat-mcp(MCP协议实现)

职责: Model Context Protocol客户端和服务端 核心组件:
  • McpClientManager - MCP客户端管理器
  • MCP服务端 - 文件系统MCP服务

9. langchat-pusher(消息推送)

职责: 多渠道消息推送服务 核心功能:
  • 钉钉机器人推送
  • 企业微信应用推送
  • 邮件推送
  • 工作流节点消息通知

10. langchat-auth(认证授权)

职责: 用户认证、授权、权限管理 核心功能:
  • 用户登录、登出
  • JWT Token生成和验证
  • RBAC权限模型
  • 用户管理、角色管理、权限管理

核心设计模式

1. 工厂模式(Factory Pattern)

ChatModelFactory
  • 动态创建不同供应商的ChatModel实例
  • 支持OpenAI、Ollama、Qwen、Qianfan、Zhipu等
  • 实现模型实例缓存
RerankModelFactory
  • 创建Rerank模型实例
  • 用于RAG重排序

2. 建造者模式(Builder Pattern)

AiServiceBuilder
  • 构建完整的AI Service
  • 组装ChatMemory、SystemMessage、Tools、RAG等组件
ChatContextBuilder
  • 从请求构建ChatContext

3. 策略模式(Strategy Pattern)

DynamicToolFactory
  • 动态工具工厂接口
  • 不同类型工具(Plugin、MCP等)实现不同的策略

4. 观察者模式(Observer Pattern)

ChatListener
  • 监听模型调用事件
  • 支持流式响应回调

关键调用链路

聊天流程

Client

LcChatController (REST API)

ChatService

LcChatService
  ├─→ ChatContextBuilder (构建上下文)
  ├─→ ChatModelFactory (获取模型)
  ├─→ AiServiceBuilder (构建AI Service)
  │    ├─→ ChatMemory (历史消息)
  │    ├─→ SystemMessage (系统提示)
  │    ├─→ DynamicToolFactory (插件工具)
  │    └─→ RagRetrieverBuilder (RAG检索)
  │         ├─→ KnowledgeRetriever
  │         └─→ SqlRetriever
  └─→ LangChain4j Agent (执行AI推理)

   响应消息

RAG流程

用户查询

RagRetrieverBuilder.build()
  ├─→ KnowledgeRetriever (知识库检索)
  │    ├─→ 向量化查询
  │    ├─→ 向量检索
  │    └─→ 返回相关文档
  ├─→ SqlRetriever (SQL检索)
  └─→ ContentAggregator (内容聚合)
       ├─→ ReRankingContentAggregator (重排序)
       └─→ 最终检索结果

注入到Prompt

LLM生成响应

数据流图

聊天数据流

┌─────────────┐
│   Client    │
└──────┬──────┘
       │ HTTP / REST API

┌─────────────────────┐
│ LcChatController   │
└──────┬──────────────┘


┌─────────────────────┐
│   ChatService      │
└──────┬──────────────┘


┌─────────────────────┐
│  LcChatService     │
└──────┬──────────────┘

       ├──────────────┬──────────────┐
       ▼              ▼              ▼
┌──────────────┐ ┌──────────┐ ┌───────────┐
│ ChatModel    │ │   RAG    │ │  Tools    │
│ Factory      │ │  Builder │ │ Factory   │
└──────┬───────┘ └────┬─────┘ └─────┬─────┘
       │              │             │
       └──────────────┼─────────────┘

              ┌───────────────┐
              │ AiService     │
              └──────┬────────┘


              ┌───────────────┐
              │ LangChain4j   │
              └──────┬────────┘


              ┌───────────────┐
              │   Client      │
              └───────────────┘

配置说明

application.yml 主配置

spring:
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://localhost:3306/langchat
    username: root
    password: password
  redis:
    host: localhost
    port: 6379

langchain4j:
  # LangChain4j配置

langchat:
  # LangChat自定义配置
  memory:
    max-message: 20  # 默认历史消息数量

扩展指南

添加新的LLM供应商

  1. ChatModelFactory 中添加对应的创建方法
  2. 实现模型配置验证逻辑
  3. 更新缓存键生成策略

添加新的插件

  1. 实现 DynamicToolFactory 接口
  2. 使用 @Service 注解注册为Spring Bean
  3. dynamicTools 方法中添加工具到 AiServices Builder

添加新的向量数据库

  1. 实现对应的 VectorStore 配置
  2. VectorStoreFactory 中添加创建逻辑
  3. 更新知识库检索器以支持新向量库

参考文档