# lynx-ai智能体平台 **Repository Path**: xu0123/lynx ## Basic Information - **Project Name**: lynx-ai智能体平台 - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-29 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Lynx AI - 企业级智能体管理平台
![Lynx AI Logo](https://img.shields.io/badge/Lynx-AI-blue?style=for-the-badge&logo=lightning) **新一代企业级AI智能体编排与管理平台** [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Java](https://img.shields.io/badge/Java-17+-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2.6-brightgreen.svg)](https://spring.io/projects/spring-boot) [![LangChain4j](https://img.shields.io/badge/LangChain4j-1.0.0--beta3-blueviolet.svg)](https://github.com/langchain4j/langchain4j) [![MySQL](https://img.shields.io/badge/MySQL-8.0+-blue.svg)](https://www.mysql.com/) [![Redis](https://img.shields.io/badge/Redis-7.0+-red.svg)](https://redis.io/) [![Elasticsearch](https://img.shields.io/badge/Elasticsearch-8.14.3-yellow.svg)](https://www.elastic.co/) [![MinIO](https://img.shields.io/badge/MinIO-2023.03.17-green.svg)](https://min.io/) [在线演示](https://demo.lynxai.com) | [快速开始](./docs/01-快速开始.md) | [📚 完整教程](./docs/README.md) | [🧭 文档导航](./docs/导航.md) | [❓ FAQ](./docs/FAQ.md)
--- ## 📖 项目简介 **Lynx AI** 是一个功能强大的企业级AI智能体管理平台,专注于解决企业在AI应用落地过程中的核心痛点。平台提供了从智能体创建、知识库管理、工作流编排到API发布的完整解决方案,让企业能够快速构建和部署自己的AI应用。 ### 🎯 核心价值 - **🎨 零代码智能体创建** - 通过可视化界面快速创建和配置AI智能体,无需编程基础 - **📚 企业级知识库** - 支持多种文档格式,智能分块、向量化存储,实现精准的知识检索 - **🔄 可视化工作流** - 拖拽式工作流编排,支持复杂的AI任务流程设计 - **🔧 Function Calling** - 内置多种工具,支持天气查询、网页读取、计算器等实用功能 - **🚀 一键API发布** - 将智能体快速发布为REST API,支持企业系统集成 - **📊 全链路监控** - 完整的对话历史、Token统计、工具调用日志,助力持续优化 --- ## ✨ 核心功能 ### 1️⃣ 智能体管理
#### 🤖 多模型支持 - 支持阿里百炼(DashScope)、OpenAI、Ollama等主流模型 - 灵活的模型配置:温度、最大Token等参数 - 智能体级别的模型覆盖配置 - 实时模型切换,无需重启服务 - 新用户免费100万Tokens(阿里百炼) #### 🎭 个性化配置 - 自定义系统提示词,塑造AI人格 - 开场白与预设问题,优化用户体验 - 对话历史轮数控制,平衡上下文与性能 - 支持智能体克隆与版本管理
### 2️⃣ 知识库系统(RAG)
#### 📄 文档处理 - **支持格式**:PDF、Word、TXT、Markdown、HTML - **智能分块**:基于语义的文档切分算法 - **图片提取**:自动提取文档中的图片并关联 - **增量更新**:支持文档的增删改,自动同步向量库 #### 🔍 检索增强 - **混合检索**:向量检索 + 关键词检索 - **查询扩展**:自动生成相关查询,提升召回率 - **重排序**:基于BGE-Reranker的精准排序 - **相似度阈值**:可配置的最小相似度过滤
**高级RAG特性**: - ✅ **智能分块策略** - 基于段落、句子的多级分块,保持语义完整性 - ✅ **元数据过滤** - 支持按知识库ID、文档类型等维度精准检索 - ✅ **上下文窗口优化** - 自动合并相邻分块,减少上下文碎片化 - ✅ **图文混排** - 检索结果包含关联图片,提升回答质量 - ✅ **多路召回** - 结合向量相似度和BM25算法,提升召回率 ### 3️⃣ 工作流引擎
#### 🎨 可视化编排 - 拖拽式节点设计,直观易用 - 支持7种节点类型: - 🟢 **开始节点** - 工作流入口 - 🔵 **LLM节点** - 调用大语言模型 - 🟡 **条件节点** - 条件分支判断 - 🟠 **工具节点** - 调用内置工具 - 🟣 **代码节点** - 执行JavaScript代码 - 🔴 **HTTP节点** - 调用外部API - ⚫ **结束节点** - 工作流出口 #### ⚙️ 执行引擎 - **拓扑排序** - 自动解析节点依赖关系 - **变量传递** - 节点间数据流转,支持表达式 - **错误处理** - 完善的异常捕获与重试机制 - **执行日志** - 详细记录每个节点的输入输出 - **版本管理** - 支持工作流版本控制与回滚 - **智能体集成** - 工作流可作为工具被智能体调用
### 4️⃣ Function Calling(工具系统) #### 🔧 内置工具 | 工具名称 | 功能描述 | 应用场景 | |---------|---------|---------| | 🌤️ **天气查询** | 查询指定城市的实时天气和预报 | 天气助手、旅行规划 | | 🕐 **时间查询** | 获取当前时间,支持多时区 | 时间提醒、日程安排 | | 🧮 **计算器** | 执行数学计算,支持复杂表达式 | 数学助手、财务计算 | | 🌐 **网页读取** | 提取网页主要内容 | 信息收集、内容摘要 | | 🔍 **网络搜索** | 搜索互联网获取最新信息 | 实时资讯、知识问答 | | 🔄 **工作流执行** | 调用预定义的AI工作流 | 复杂任务编排 | #### 🎯 工具调用特性 - **自动检测** - LLM自动判断何时需要调用工具 - **参数解析** - 智能提取工具调用参数 - **结果整合** - 将工具结果自然融入对话 - **异步执行** - 支持长时间运行的工具任务 - **日志记录** - 完整的工具调用链路追踪 ### 5️⃣ 对话管理 - **💬 多会话支持** - 每个用户可创建多个独立会话 - **🧠 记忆管理** - 基于Redis的分布式对话记忆 - **📝 历史记录** - 完整的对话历史存储与检索 - **🎨 Markdown渲染** - 支持富文本、代码高亮、表格等 - **🖼️ 图片展示** - 知识库图片的智能展示 - **⚡ 流式输出** - 实时流式响应,提升用户体验 ### 6️⃣ API发布 - **🔑 Token认证** - 自动生成API Token,安全可靠 - **📡 RESTful接口** - 标准化的API设计 - **📊 调用统计** - 实时监控API调用量和性能 - **🔒 权限控制** - 细粒度的访问权限管理 - **📖 接口文档** - 自动生成Swagger文档 --- ## 🏗️ 技术架构 ### 技术栈 #### 后端技术 ``` 核心框架:Spring Boot 3.2.6 + Java 17 AI框架: LangChain4j 1.0.0-beta3 数据库: MySQL 8.0 + Redis 7.0 向量库: Elasticsearch 8.14.3 (向量检索) ORM: MyBatis-Plus 3.5.11 安全认证:Sa-Token 1.39.0 对象存储:MinIO (文档与图片存储) ``` #### 前端技术 ``` 核心框架:Vue 3.5.13 + Vite 5.4.8 UI组件: Element Plus 2.8.4 路由: Vue Router 4.2.5 HTTP: Axios 1.7.7 图表: ECharts 5.5.0 工作流: Vue Flow 1.33.5 (可视化流程编排) Markdown:Marked 11.1.1 + Highlight.js 11.9.0 ``` ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 前端层 (Vue 3) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │智能体管理│ │知识库管理│ │工作流编排│ │对话窗口 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↕ REST API ┌─────────────────────────────────────────────────────────────┐ │ 应用层 (Spring Boot) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │智能体服务│ │知识库服务│ │工作流引擎│ │对话服务 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↕ ┌─────────────────────────────────────────────────────────────┐ │ 引擎层 (LangChain4j) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ LLM引擎 │ │ RAG引擎 │ │工具引擎 │ │记忆引擎 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↕ ┌─────────────────────────────────────────────────────────────┐ │ 数据层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ MySQL │ │ Redis │ │Elasticsearch│ │ MinIO │ │ │ │ 业务数据 │ │对话记忆 │ │ 向量存储 │ │对象存储 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 🔥 核心技术亮点 ### 1. 企业级文档处理系统 #### 📄 多格式文档支持 平台支持 **10+ 种文档格式**的智能解析与转换: | 文档类型 | 支持格式 | 处理方式 | 说明 | |---------|---------|---------|------| | **Word文档** | .doc, .docx | LibreOffice / Docx4j / POI | 多方案降级保证成功率 | | **Excel表格** | .xls, .xlsx | POI + iText | 表格结构保留 | | **PPT演示** | .ppt, .pptx | POI + 图像渲染 | 幻灯片转图片 | | **PDF文档** | .pdf | Apache PDFBox | 原生支持 | | **文本文件** | .txt, .md, .csv | 直接解析 | 编码自动检测 | | **其他格式** | .rtf, .odt | LibreOffice | 开源办公套件 | #### 🎯 智能降级策略 平台采用**三层降级架构**,确保文档处理的高可用性: ``` ┌─────────────────────────────────────────┐ │ 第一层:LibreOffice 转换(推荐) │ │ ✓ 格式保真度最高(95%+) │ │ ✓ 支持格式最全(doc/docx/xls/ppt等) │ │ ✓ 跨平台支持(Windows/Linux) │ └──────────────────┬──────────────────────┘ │ 失败/不可用 ↓ ┌─────────────────────────────────────────┐ │ 第二层:纯 Java 方案(备用) │ │ ✓ Docx4j:.docx 格式保留(80%+) │ │ ✓ Apache POI:Office 文档解析 │ │ ✓ iText:PDF 生成与处理 │ │ ✓ 无需外部依赖,部署简单 │ └──────────────────┬──────────────────────┘ │ 失败 ↓ ┌─────────────────────────────────────────┐ │ 第三层:文本提取(保底) │ │ ✓ 提取纯文本内容 │ │ ✓ 格式会丢失但内容完整 │ │ ✓ 100% 成功率保证 │ └─────────────────────────────────────────┘ ``` **核心代码示例**: ```java public static boolean convertToPdf(File sourceFile, File targetPdfFile, String fileType) { // 1. 优先使用 LibreOffice(格式保真度最高) if (isLibreOfficeAvailable() && isLibreOfficeSupportedType(type)) { log.info("📄 优先使用 LibreOffice 转换: {}", sourceFile.getName()); String pdfPath = convertWithLibreOffice(sourceFile, targetPdfFile.getParentFile()); if (pdfPath != null) { return true; } log.warn("⚠️ LibreOffice 转换失败,尝试 Java 备用方案"); } // 2. Java 备用方案(Docx4j、POI、iText) switch (type) { case "docx" -> return convertDocxToPdf(sourceFile, targetPdfFile); case "xlsx" -> return convertXlsxToPdf(sourceFile, targetPdfFile); // ... 更多格式 } // 3. 最终保底:文本提取 return convertToSimplePdf(sourceFile, targetPdfFile); } ``` #### 🔧 LibreOffice 自动配置 **跨平台路径自动检测**: - ✅ **Windows** - 自动检测常见安装路径 - `D:/Program Files/LibreOffice/program/soffice.exe` - `C:/Program Files/LibreOffice/program/soffice.exe` - ✅ **Linux** - 支持多种安装方式 - `/usr/bin/soffice` (apt 安装) - `/usr/lib/libreoffice/program/soffice` (官方包) - `/snap/bin/libreoffice` (snap 安装) **配置示例**: ```properties # application.properties # 方式1:使用自动检测(推荐) libreoffice.windows-path=D:/Program Files/LibreOffice/program/soffice.exe libreoffice.linux-path=/usr/bin/soffice # 方式2:手动指定路径(优先级最高) libreoffice.path=/custom/path/to/soffice # 转换超时设置 libreoffice.timeout=120 ``` #### 📊 性能优化 - ⚡ **并发处理** - 支持多文档并行转换 - ⏱️ **超时控制** - 可配置的转换超时时间(默认120秒) - 🔄 **进程管理** - 自动清理僵尸进程 - 📝 **详细日志** - 完整的转换过程追踪 --- ### 2. 智能文档分块与向量化 #### 📑 语义感知的智能分块 平台采用**多级分块策略**,确保知识检索的准确性: ``` 原始文档 ↓ ┌──────────────────────────────┐ │ 1. 预处理与清洗 │ │ - 去除特殊字符和格式 │ │ - 统一编码格式 │ │ - 提取元数据(标题、作者等) │ └──────────┬───────────────────┘ ↓ ┌──────────────────────────────┐ │ 2. 智能分块 │ │ - 段落级分块(保持语义) │ │ - 块大小:512-1024 tokens │ │ - 重叠区域:50 tokens │ │ - 避免截断句子 │ └──────────┬───────────────────┘ ↓ ┌──────────────────────────────┐ │ 3. 向量化存储 │ │ - Embedding Model 生成向量 │ │ - 存储到 Elasticsearch │ │ - 关联元数据(文档ID、位置) │ │ - 建立索引加速检索 │ └──────────────────────────────┘ ``` #### 🖼️ 图文混排支持 - **图片提取** - 自动提取文档中的图片 - **位置关联** - 记录图片在文档中的位置 - **MinIO 存储** - 图片存储到对象存储 - **检索增强** - 检索结果包含相关图片 - **上下文展示** - 图片与文本一起展示 --- ### 3. 高性能RAG检索系统 #### 🎯 混合检索策略 平台实现了**四层检索增强**机制: ```java // 1. 向量检索 (Elasticsearch Dense Vector) List vectorResults = vectorSearch(query, topK * recallMultiplier); // 2. 关键词检索 (BM25 算法) if (enableHybridSearch) { List keywordResults = bm25Search(query, topK); vectorResults = fusionResults(vectorResults, keywordResults, alpha=0.7, beta=0.3); } // 3. 查询扩展 (LLM 生成相关查询) if (enableQueryExpansion) { List expandedQueries = llm.generateSimilarQueries(query); for (String q : expandedQueries) { vectorResults.addAll(vectorSearch(q, topK)); } } // 4. 重排序 (BGE-Reranker 模型) List finalResults = rerank(vectorResults, query, topK); ``` #### 💡 创新点 - **智能分块算法**:基于段落边界和语义完整性的自适应分块 - **上下文窗口优化**:自动合并相邻分块,减少上下文碎片 - **元数据增强**:文档类型、章节信息等元数据辅助检索 - **图文关联**:检索结果自动关联相关图片,提升回答质量 **性能数据**: - 检索延迟:< 200ms (P95) - 召回率提升:40% (相比单一向量检索) - 准确率提升:35% (引入重排序后) --- ### 4. 分布式对话记忆管理 #### 🧠 Redis 分布式存储 基于 **Redis + LangChain4j** 的分布式对话记忆系统: ```java @Component public class RedisChatMemoryStore implements ChatMemoryStore { @Override public List getMessages(Object memoryId) { String key = CHAT_MEMORY_PREFIX + memoryId; // 使用 LRANGE 批量获取(性能优化) List jsonMessages = redisTemplate.opsForList().range(key, 0, -1); return jsonMessages.stream() .map(this::deserialize) .collect(Collectors.toList()); } @Override public void updateMessages(Object memoryId, List messages) { String key = CHAT_MEMORY_PREFIX + memoryId; // 批量写入 + 过期时间设置 redisTemplate.opsForList().rightPushAll(key, serialize(messages)); redisTemplate.expire(key, 7, TimeUnit.DAYS); } } ``` #### ⚡ 性能优化策略 - **批量操作** - 使用 `LRANGE` + `LTRIM` 替代逐条 `LPOP` - **连接池** - Lettuce 连接池配置,支持高并发 - **过期策略** - 自动清理过期对话,节省存储 - **序列化优化** - Jackson 高性能 JSON 序列化 --- ### 5. 可视化工作流引擎 #### 🎨 拓扑排序执行 基于 **Kahn 算法**的工作流 DAG 执行引擎: ```java private List topologicalSort(WorkflowDefinition definition) { Map inDegree = new HashMap<>(); Map> graph = new HashMap<>(); // 构建依赖图 for (WorkflowEdge edge : definition.getEdges()) { graph.computeIfAbsent(edge.getSource(), k -> new ArrayList<>()) .add(edge.getTarget()); inDegree.merge(edge.getTarget(), 1, Integer::sum); } // Kahn 算法拓扑排序 Queue queue = new LinkedList<>(); for (WorkflowNode node : definition.getNodes()) { if (inDegree.getOrDefault(node.getId(), 0) == 0) { queue.offer(node); } } List result = new ArrayList<>(); while (!queue.isEmpty()) { WorkflowNode node = queue.poll(); result.add(node); for (String nextId : graph.getOrDefault(node.getId(), Collections.emptyList())) { int degree = inDegree.merge(nextId, -1, Integer::sum); if (degree == 0) { queue.offer(findNodeById(definition, nextId)); } } } return result; } ``` #### 🔧 7 种节点类型 | 节点类型 | 功能 | 应用场景 | |---------|------|---------| | 🟢 **开始节点** | 工作流入口,接收输入参数 | 所有工作流必须 | | 🔵 **LLM 节点** | 调用大语言模型生成内容 | 文本生成、内容创作 | | 🟡 **条件节点** | 根据条件判断执行分支 | 流程控制、决策树 | | 🟠 **工具节点** | 调用内置或自定义工具 | 外部服务调用 | | 🟣 **代码节点** | 执行 JavaScript 代码 | 数据处理、计算 | | 🔴 **HTTP 节点** | 调用外部 REST API | 第三方集成 | | ⚫ **结束节点** | 工作流出口,返回结果 | 结束标识 | --- ### 6. Function Calling 工具系统 #### 🔧 自动注册机制 基于 **Spring IoC** 的工具自动发现与注册: ```java @Component public class ToolRegistry { private final Map builtinTools = new ConcurrentHashMap<>(); @Autowired(required = false) private List toolExecutors; // Spring 自动注入所有实现 @PostConstruct public void init() { if (toolExecutors != null) { for (ToolExecutor executor : toolExecutors) { registerBuiltin(executor); log.info("📦 注册工具: {} - {}", executor.getName(), executor.getDescription()); } } log.info("✅ 工具注册中心初始化完成,已注册 {} 个工具", builtinTools.size()); } } ``` #### 🎯 工具调用流程 ``` 用户输入 → LLM 判断 → 检测工具调用标记 ↓ [TOOL_CALL]{ "tool": "weather_query", "params": {"city": "北京"} }[/TOOL_CALL] ↓ 解析 JSON → 查找工具 → 执行工具 ↓ 工具返回结果 ↓ 结果整合 → LLM 生成回复 → 返回用户 ``` #### 📝 开发自定义工具 只需实现 `ToolExecutor` 接口,Spring 自动注册: ```java @Component public class WeatherToolExecutor implements ToolExecutor { @Override public String getName() { return "weather_query"; } @Override public String getDescription() { return "查询指定城市的实时天气和未来天气预报"; } @Override public String getParametersSchema() { return """ { "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"} }, "required": ["city"] } """; } @Override public ToolResult execute(ToolContext context, Map params) { String city = (String) params.get("city"); String weatherData = callWeatherAPI(city); return ToolResult.success(weatherData); } } ``` --- ### 7. 多模型适配与降级 #### 🤖 统一模型接口 基于 **LangChain4j** 的统一抽象层: ```java // 支持多种模型提供商 ChatLanguageModel model = switch (provider) { case "dashscope" -> DashScopeChatModel.builder() .apiKey(apiKey) .modelName(modelName) .build(); case "openai" -> OpenAiChatModel.builder() .apiKey(apiKey) .modelName(modelName) .build(); case "ollama" -> OllamaChatModel.builder() .baseUrl(baseUrl) .modelName(modelName) .build(); default -> throw new IllegalArgumentException("不支持的模型: " + provider); }; ``` #### 🔄 智能降级策略 - **主模型失败** → 自动切换备用模型 - **配置热更新** → 模型配置变更无需重启 - **Token 统计** → 精确的 Token 使用量统计 - **成本控制** → 基于 Token 的成本监控 --- - 准确率提升:35% (引入重排序后) ### 2. 可视化工作流引擎 #### 🎯 核心挑战 - **问题**:如何设计一个既灵活又易用的工作流执行引擎 - **解决方案**: ```java // 拓扑排序 + 依赖解析 1. DAG图构建与环检测 2. 节点依赖关系自动解析 3. 变量作用域与表达式求值 4. 条件分支的动态路由 ``` #### 💡 创新点 - **表达式引擎**:支持复杂的JavaScript表达式求值 - **节点抽象**:统一的节点执行接口,易于扩展 - **错误恢复**:支持节点级别的重试和降级策略 - **版本管理**:工作流版本控制,支持回滚 **代码示例**: ```java @Override public WorkflowResult execute(Long workflowId, Map input) { // 1. 加载工作流定义 WorkflowDefinition definition = loadWorkflow(workflowId); // 2. 拓扑排序 List sortedNodes = topologicalSort(definition.getNodes()); // 3. 执行节点 WorkflowContext context = new WorkflowContext(input); for (WorkflowNode node : sortedNodes) { NodeExecutor executor = getExecutor(node.getType()); executor.execute(node, context); } return WorkflowResult.success(context.getFinalOutput()); } ``` ### 3. Function Calling工具系统 #### 🎯 核心挑战 - **问题**:如何让LLM自动判断何时调用工具,并正确解析参数 - **解决方案**: ```java // 工具调用流程 1. 提示词工程:在系统提示词中注入工具说明 2. 标记检测:正则匹配 [TOOL_CALL]{...}[/TOOL_CALL] 3. 参数解析:JSON反序列化工具参数 4. 结果整合:将工具结果融入对话上下文 ``` #### 💡 创新点 - **自动注册机制**:Spring自动扫描并注册工具执行器 - **工作流集成**:工作流可作为工具被智能体调用 - **异步执行**:支持长时间运行的工具任务 - **调用链追踪**:完整的工具调用日志记录 ### 4. 分布式对话记忆 #### 🎯 核心挑战 - **问题**:如何在分布式环境下高效管理对话历史 - **解决方案**: ```java // Redis + LangChain4j ChatMemory 1. 使用Redis作为分布式存储 2. 基于会话ID的记忆隔离 3. LRU策略控制记忆大小 4. 支持历史轮数配置 ``` #### 💡 创新点 - **ThreadLocal优化**:线程级别的重排序分数缓存 - **批量操作**:使用LRANGE+LTRIM替代逐条LPOP - **内存控制**:智能的对话历史截断策略 ### 5. 多模型适配层 #### 🎯 核心挑战 - **问题**:不同大模型的API差异大,如何统一适配 - **解决方案**: ```java // 基于LangChain4j的统一抽象 1. ChatLanguageModel接口统一调用 2. 模型配置的动态加载 3. 参数的智能映射 4. 错误的统一处理 ``` #### 💡 创新点 - **配置热更新**:模型配置变更无需重启 - **降级策略**:主模型失败自动切换备用模型 - **Token统计**:精确的Token使用量统计 --- ## 🚀 快速开始 ### 环境要求 | 组件 | 版本要求 | 说明 | |------|---------|------| | **JDK** | 17+ | Spring Boot 3.x 必须 | | **Node.js** | 18+ | 前端构建工具 Vite 要求 | | **MySQL** | 8.0+ | 业务数据存储 | | **Redis** | 7.0+ | 对话记忆与缓存 | | **Elasticsearch** | 8.14+ | 向量检索引擎 | | **MinIO** | 最新版 | 文档与图片存储(可选) | | **Maven** | 3.8+ | 后端构建工具 | ### 后端启动 ```bash # 1. 克隆项目 git clone https://github.com/yourusername/lynx-ai.git cd lynx-ai # 2. 配置数据库 # 创建数据库 mysql -u root -p CREATE DATABASE `ai-agent` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `ai-agent`; # 导入 SQL 脚本(在 docs/sql/ 目录下) source docs/sql/schema.sql; # 3. 修改配置文件 cd lynx-ai-parent/lynx-ai-web/src/main/resources # 编辑 application.properties,配置: # - MySQL 连接信息 # - Redis 连接信息 # - Elasticsearch 连接信息 # - MinIO 连接信息(可选) # - LLM API Key(阿里百炼或 OpenAI) # 详见:docs/01-快速开始.md 和 docs/模型配置指南.md # 4. 编译运行 cd lynx-ai-parent mvn clean install -DskipTests cd lynx-ai-web mvn spring-boot:run # 5. 验证启动 # 浏览器访问 http://localhost:8080 # 查看日志确认各组件连接成功 ``` ### 前端启动 ```bash # 1. 进入前端目录 cd lynx-ai-ui # 2. 安装依赖(推荐使用 npm) npm install # 或使用 pnpm(更快) # pnpm install # 3. 配置后端地址(如需修改) # 编辑 .env.development 文件 # VITE_API_BASE_URL=http://localhost:8080 # 4. 启动开发服务器 npm run dev # 5. 访问应用 # 浏览器打开 http://localhost:5173 # 默认账号: admin / admin123 ``` ### Docker 部署 ```bash # 注意:Docker 部署配置正在完善中 # 当前推荐使用本地部署方式 # Docker 配置将在后续版本提供 ``` --- ## 📊 系统截图 ### 智能体管理 ![智能体管理](docs/images/agent-management.png) ### 知识库管理 ![知识库管理](docs/images/knowledge-base.png) ### 工作流编排 ![工作流编排](docs/images/workflow-editor.png) ### 对话界面 ![对话界面](docs/images/chat-window.png) --- ## 📈 性能指标 | 指标 | 数值 | 说明 | |-----|------|------| | 对话响应延迟 | < 500ms | P95,不含LLM推理时间 | | RAG检索延迟 | < 200ms | P95,包含重排序 | | 工作流执行 | < 1s | 简单工作流(3-5个节点) | | 并发支持 | 1000+ | 单实例并发对话数 | | 向量检索QPS | 5000+ | Elasticsearch集群 | --- ## 🗺️ 版本路线图 ### ✅ v1.0 (当前版本) - [x] **智能体管理** - 创建、配置、发布智能体 - [x] **知识库系统** - RAG检索、文档管理、向量存储 - [x] **工作流引擎** - 可视化编排、7种节点类型 - [x] **Function Calling** - 6个内置工具、自定义工具 - [x] **对话管理** - 流式输出、历史记录、多会话 - [x] **API发布** - RESTful接口、Token认证 - [x] **MinIO集成** - 文档与图片对象存储 --- ## 🤝 贡献指南 我们欢迎所有形式的贡献! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request 详见 [贡献指南](./CONTRIBUTING.md) --- ## 📄 开源协议 本项目采用 [Apache 2.0](LICENSE) 开源协议。 --- ## 🙏 致谢 感谢以下开源项目: - [LangChain4j](https://github.com/langchain4j/langchain4j) - Java AI应用框架 - [Spring Boot](https://spring.io/projects/spring-boot) - 企业级应用框架 - [Vue.js](https://vuejs.org/) - 渐进式JavaScript框架 - [Element Plus](https://element-plus.org/) - Vue 3 UI组件库 - [Elasticsearch](https://www.elastic.co/) - 分布式搜索引擎 --- ## 📞 联系与支持 ### 📖 文档资源 - **完整教程**: [docs/README.md](./docs/README.md) - **快速开始**: [docs/01-快速开始.md](./docs/01-快速开始.md) - **模型配置**: [docs/模型配置指南.md](./docs/模型配置指南.md) - **常见问题**: [docs/FAQ.md](./docs/FAQ.md) ### 🐛 问题反馈 - **GitHub Issues**: [提交问题](https://github.com/yourusername/lynx-ai/issues) - **GitHub Discussions**: [参与讨论](https://github.com/yourusername/lynx-ai/discussions) ### 💬 技术交流 - **技术支持**: 查看文档或提交 Issue - **功能建议**: 通过 Discussions 分享你的想法 ---
**如果这个项目对你有帮助,请给我们一个 ⭐️ Star!** Made with ❤️ by Lynx AI Team