- 博客(223)
- 收藏
- 关注
原创 【Java手搓OpenManus】-1- 环境准备
本文介绍了使用Java复刻OpenManus AI Agent项目的环境准备过程。作者选择Java 21作为开发语言,利用其虚拟线程特性处理高并发任务,并对比了Java与Python生态的技术选型。文章详细说明了项目创建步骤,包括Spring Boot初始化、JDK版本选择,以及核心依赖的引入配置,如LangChain4j(0.29.1)用于LLM集成、Playwright(1.40.0)实现浏览器自动化等。该项目旨在构建Java生态下的通用AI Agent框架,为后续功能开发奠定基础。
2025-11-24 13:02:43
894
原创 【Java手搓RAGFlow】-1- 环境准备
本文介绍了一个基于Java和Spring Boot的手搓RAG系统——BaoRagFlow的开发准备。该项目旨在构建一个企业级AI知识库管理系统,包含文档上传、向量检索和AI回答生成等完整流程。文章详细列出了后端技术栈(MySQL、Redis、Elasticsearch、Kafka等),并提供了Docker环境的搭建指南,包括镜像拉取和容器配置。通过该项目,开发者可以深入了解RAG系统的实现细节和多租户等企业级功能的开发。
2025-11-16 13:32:40
1054
原创 从传统后端到AI智能驱动:Java + AI 生态深度实战技术总结
本文总结了2025年Java与AI技术融合的深度实践。作者从构建企业级RAG知识库入手,通过MinIO存储、Apache Tika解析和Kafka消息队列实现工程化数据处理,并创新采用语义分块策略提升检索质量。在AI Agent开发中,利用Java 21虚拟线程和ReAct范式构建高性能智能体,解决了"复读机"等关键问题。同时分享了AI辅助编程经验,包括Cursor工具的高效使用和MCP协议的实践应用。作者认为AI正在重塑开发范式,使开发者能更专注于架构设计而非代码细节。这些实践展现了J
2025-12-27 11:59:46
979
原创 【Java手搓OpenManus】-7- 综合实战ManusAgent
前几章我们基本完成了agent的大体架构,接下来就是要完成命令行交互界面以及对应的相关功能我们使用 Spring Boot 实现命令行应用。根据前面的章节,我们有两种 Agent 执行方案可以选择:方案一:递归方案方案二:虚拟线程方案3 核心代码实现这是基于递归方案的实现(继承自 → → )。如果需要虚拟线程方案,可以创建 继承对应的虚拟线程版本类。创建com.openmanus.domain.agent.ManusAgent3.2 虚拟线程版本的 ManusAgent3.3 OpenM
2025-11-30 12:40:33
1832
原创 【Java手搓OpenManus】-6- 工具调用 Agent
上一章我们完成了工具的具体实现,接下来就是要思考如何让agent去调用我们的工具?因为工具类的消息都属于助手消息,所以我们创建的消息也是助手消息,并且还要把工具响应的结果重新放入记忆中,在具体执行某个工具时,先解析其参数,再进行执行,如果有特殊工具则特殊处理,之后所有结果格式化,通过async/await实现异步执行,顺序遍历所有执行工具。我们之前已经实现过Agent了,根据【Java手搓OpenManus】-4- Agent核心循环(Think-Act-Observe) https://blog.csdn
2025-11-30 12:40:12
975
原创 【Java手搓OpenManus】-5- 工具系统设计
但在处理 askWithTools 时,我们通过手动构建巨大的 JSON Map 来定义工具,这种硬编码的方式不仅代码不够优雅,而且极难维护和扩展。这是所有工具必须实现的接口,特别注意 toFunctionCallFormat 方法,它负责将 Java 对象转换为 LLM (如 OpenAI) 能识别的 JSON Schema 格式。Agent 的核心能力在于使用工具。为了让 Agent 能够对接 MCP、网页浏览器、文件系统等多种复杂的工具,我们需要设计一个统一、规范且易于扩展的工具系统。
2025-11-27 11:20:46
635
原创 【Java手搓OpenManus】-4- Agent核心循环(Think-Act-Observe)
本文介绍了Java版OpenManus Agent核心循环的实现,采用Think-Act-Observe模式。主要内容包括:1. 设计BaseAgent基类,实现状态管理、记忆管理和运行循环;2. 使用递归+CompletableFuture实现异步执行,避免线程阻塞;3. 定义Agent接口和状态枚举,确保状态流转合法性;4. 实现卡住检测和错误处理机制。该设计参考Python原版架构,通过分层抽象实现ReAct模式,为后续ToolCallAgent等具体实现提供基础框架。
2025-11-27 11:20:07
1263
原创 【Java手搓OpenManus】-3- LLM 服务封装
本文介绍了Java实现OpenManus项目中LLM服务封装的设计方案。通过定义LLMService接口,统一了对话、工具调用等功能,并基于LangChain4j实现OpenAI协议兼容的模型接入。采用CompletableFuture实现异步调用,保留流式响应接口,支持工具调用和Token管理。核心类包括顶层LLMService接口和LangChain4jLLMService实现,通过配置参数适配不同厂商的模型服务,为上层Agent提供统一的LLM交互能力。
2025-11-26 10:44:34
978
原创 【Java手搓OpenManus】-2- 领域模型设计
本文介绍了OpenManus系统的核心领域模型设计,重点实现了Message(消息)和Memory(记忆)两个核心组件。Message模型采用Lombok的@Data和@Builder注解实现,支持多种消息角色(系统、用户、助手、工具)和内容类型,并提供了便捷的工厂方法。Memory接口定义了基本的CRUD操作,当前实现使用ArrayList存储消息,支持最大消息数限制。设计决策考虑了类型安全、性能优化和未来扩展性,为后续开发奠定了良好的基础。
2025-11-26 10:43:39
682
原创 【Java手搓RAGFlow】-12- BaoRAGFlow最终项目展示
本文展示了基于Java开发的RAGFlow项目最终成果。通过Cursor Agent生成现代化Vue前端界面,并与后端完成联调。后端针对跨域、WebSocket消息处理等进行了优化,增强系统健壮性。功能演示包括文件上传解析和RAG流式对话,系统能准确回答知识库问题并拒绝未知查询,避免AI幻觉。该项目完整实现了包含Spring Boot、Elasticsearch、Kafka等技术的RAG系统,解耦计算与IO任务,打通非结构化数据到向量数据库的ETL流程,为企业级知识库应用提供了可靠解决方案。
2025-11-24 13:00:57
855
原创 【Java手搓RAGFlow】-11- Kafka异步处理
本文介绍了如何通过Kafka实现RAGFlow文件上传的异步处理。针对同步处理导致的用户体验差、系统稳定性低等问题,采用Kafka构建异步处理流程:文件上传后立即返回响应,后台通过Kafka消息队列处理解析和向量化任务。详细配置了Kafka生产者和消费者,包括重试机制和死信队列,并实现了FileProcessingTask任务模型进行消息传递。改造后的系统显著提升了用户体验和资源利用率,使系统具备更好的扩展性和容错能力。
2025-11-21 10:44:20
536
原创 【Java手搓RAGFlow】-10- WebSocket实时通信
本文介绍了如何在Java RAGFlow系统中实现WebSocket实时通信功能,以改善用户体验。主要内容包括: 配置WebSocket服务端,创建WebSocketConfig配置类并更新安全策略 实现ChatWebSocketHandler处理器,负责建立连接、处理消息和关闭连接 改造ChatHandler支持流式响应,通过WebSocket实时推送LLM生成的文本片段 该系统改造后能够提供打字机式的流式对话体验,避免了传统HTTP请求的同步等待问题。关键实现包括会话管理、错误处理和消息分块传输机制。
2025-11-21 10:43:55
644
原创 【Java手搓RAGFlow】-9- RAG对话实现
摘要:本文介绍了如何使用Java实现RAG对话系统,重点整合阿里云通义千问(Qwen)大语言模型。通过配置Qwen API参数和构建QwenClient类,实现了用户提问的上下文检索、Prompt构建和大模型调用的完整流程。系统采用流式响应机制,并支持对话历史管理,确保基于知识库的智能对话功能高效稳定运行。关键步骤包括:配置参数、创建请求体、处理流式响应以及异常处理。该实现为知识问答系统提供了可靠的后端支持。
2025-11-20 12:03:11
1206
原创 【Java手搓RAGFlow】-8- Elasticsearch 集成
本文介绍了在Java项目中集成Elasticsearch作为向量数据库的实现过程。首先阐述了选择Elasticsearch的优势,包括原生向量支持、强大的全文搜索和混合搜索能力。接着详细展示了配置方法,包括application.yml设置和创建EsConfig类。文章重点讲解了索引映射设计,包括关键字段类型定义(如dense_vector、text等)和IK分词器配置,并提供了完整的JSON映射示例。还提到创建索引初始化器来确保应用启动时索引结构正确。通过该实现,项目获得了高效的向量检索和传统搜索能力,为
2025-11-20 12:02:38
684
原创 【Java手搓RAGFlow】-7- 向量化与Embedding
本文介绍了如何在Java中实现RAG流程的向量化与Embedding步骤。主要内容包括: 向量化的核心作用:将文本转换为高维向量使计算机能够理解语义相似度 选择通义千问text-embedding-v4作为向量模型的原因: 高性价比和学生友好 兼容OpenAI API 完善的文档支持 具体实现方案: 配置Embedding API参数 使用Spring WebClient构建非阻塞HTTP客户端 实现EmbeddingClient组件处理批量文本向量化 支持分批次处理和错误重试机制 关键技术点: 16MB缓
2025-11-19 08:46:45
1068
原创 【Java手搓RAGFlow】-6- 文本分块策略
本文介绍了Java实现RAG系统中的文本分块策略,从简单固定长度分块到更复杂的语义分块方案。固定分块虽简单但会破坏语义完整性,而语义分块通过段落、句子和词语的三级分割策略,在保持语义连贯性的同时控制块大小:先按段落分割,对长段落按句子拆分,超长句子再按词语划分。这种分层处理方式平衡了模型输入限制与语义保留的需求,为后续检索和生成质量奠定基础,是构建高效RAG系统的关键步骤。
2025-11-19 08:45:51
880
原创 【Java手搓RAGFlow】-5- 文档解析模块
本文介绍了Java RAGFlow系统中文档解析模块的实现。该模块通过Apache Tika工具处理多种格式文档(PDF/Word/Excel等),将其转换为统一文本格式。系统设计了DocumentVector实体存储文本块,包含文件MD5、块ID、内容等字段,并通过JPA持久化。ParseService负责核心解析逻辑,包括使用Tika提取文本、按预设大小分块、保存至数据库等功能。该模块实现了非结构化文档到标准化文本块的转换,为后续检索增强生成(RAG)流程提供了基础数据支持。
2025-11-18 09:18:40
1120
原创 【Java手搓RAGFlow】-4- 文件上传与存储
本文介绍了在Java项目中整合MinIO实现文件上传与存储的完整方案。主要内容包括: 采用开源免费的MinIO作为文件存储中心,通过Docker快速部署服务 配置MinIO客户端连接,定义FileUpload实体类存储文件元数据 实现业务层的UploadService,提供文件上传功能,主要包括: 计算文件MD5值进行唯一标识 检查重复文件实现秒传 构建存储路径并保存文件到MinIO 持久化文件元数据到数据库 该方案充分利用了Spring Boot和MinIO的优势,为项目提供了稳定可靠的文件存储能力。通过
2025-11-18 09:18:09
644
原创 【Java手搓RAGFlow】-3- 用户认证与权限管理
本文介绍了在Java项目中实现用户认证与权限管理的方案,重点讲解了JWT(JSON Web Token)认证机制。主要内容包括: 认证方案对比:分析了Session、JWT和OAuth2三种认证方式的优缺点,选择JWT作为本项目方案。 JWT工作原理:详细说明JWT由Header、Payload和Signature三部分组成,并介绍了其认证流程。 具体实现: 使用代码生成高强度随机密钥 创建JwtUtils工具类集中管理JWT操作 实现生成Token、验证Token和解析Token的核心功能 该方案采用无状
2025-11-17 09:17:29
1269
原创 【Java手搓RAGFlow】-2- 流程分析及架构设计
本文介绍了基于Java的RAGFlow系统架构设计与核心流程分析。系统主要包含文档上传处理和RAG对话两大核心流程:文档上传流程涉及用户身份认证、多租户隔离、文件分块处理及向量化存储;对话流程则通过向量检索和LLM生成实现智能问答。数据库设计包含5张核心表:用户表(users)实现身份管理,组织标签表(organization_tags)支持多租户隔离,文件上传表(file_upload)记录文档元数据,分块信息表(chunk_info)建立文档与分块映射关系,文档向量表(document_vectors)
2025-11-17 09:16:24
746
原创 【AI应用探索】-12- GraphRAG+MCP的智能体Agent开发
本文探讨了GraphRAG技术的应用与实现方法。GraphRAG是微软开发的开源项目,通过构建知识图谱增强大语言模型的问答能力,相比传统RAG能提供更深入的答案理解。文章详细介绍了GraphRAG的工作原理:解析问题→图谱检索→信息综合→生成答案。实践部分展示了环境配置方法,包括创建conda环境、安装依赖、准备数据集(以《红楼梦》为例),并详细说明了配置文件修改要点(如API密钥设置、模型参数调整)。该技术特别适合处理需要综合分析多个信息源的复杂问题,为智能体开发提供了新的解决方案。
2025-11-13 19:46:47
1811
原创 【AI应用探索】-11- MCP的Server端和Client开发
本文介绍了MCP(Model Context Protocol)的应用开发方法。MCP是一种允许AI工具与数据源安全连接的开放标准,包含协议规范、本地服务器支持和开源存储库三大组件。相比传统功能调用,MCP具有异步、标准化和灵活性优势。文章以天气查询功能为例,详细说明了如何开发MCP服务器端和客户端:通过WeatherAPI获取实时数据,使用FastMCP框架构建异步服务,并实现数据格式化输出。该示例为后续集成GraphRAG和智能体开发奠定了基础,展示了MCP在构建复杂AI工作流中的应用潜力。
2025-11-13 19:44:56
1009
原创 【AI应用探索】-10- Cursor实战:小程序&APP - 下
本文详细介绍了微信商城小程序的开发过程。首先完成了小程序发布前的准备工作,包括获取AppID和创建空白项目。然后使用Cursor工具设计了完整的商城功能需求,涵盖用户系统、商品展示、购物车、订单管理等模块。针对前后端分离架构,分别生成了前端页面结构设计、后端API接口文档(小程序API和管理后台API)以及系统架构设计文档共6份技术文档。最后,根据需求分析自动生成了完整的数据库建表SQL脚本,包括用户表、商品表、订单表等核心数据表结构,为后续开发奠定了坚实基础。
2025-11-10 09:21:18
898
原创 【AI应用探索】-9- Cursor实战:网页&插件 - 上
本文介绍了Cursor开发工具的多种模式(Ask、Plan、Agent、@和CodeBase模式)及其在前后端项目开发中的应用。通过实战演示了从生成网站设计图到构建完整功能的流程,包括文件转换、图片处理等模块的实现。同时详细讲解了Python和Java开发环境的配置方法,并展示了基于qwen API开发Chrome浏览器插件的过程,包含选词翻译和选段总结功能的实现与测试。文章提供了完整的开发流程指南,适合开发者快速上手使用Cursor进行项目开发。
2025-11-10 09:20:00
997
原创 【AI应用探索】-7- LLaMA-Factory微调模型
本文详细介绍了使用LLaMA-Factory微调大语言模型的环境配置和关键步骤。首先说明了必备的Python环境(3.10)、PyTorch(2.6.0)等基础软件依赖及推荐版本,并提供了CUDA、DeepSpeed等可选组件的安装指南。随后展示了如何搭建conda环境、验证CUDA可用性,以及安装LLaMA-Factory及其依赖项。文章还介绍了FlashAttention、Unsloth等加速技术的配置方法,并演示了1.5B小模型的下载和加载过程。最后重点解析了微调时LoRA(低秩适配)技术的核心参数,
2025-11-06 23:42:09
1235
3
原创 【AI应用探索】-8- OpenManus使用及源码解析
Manus是一款通用型AI助手能将想法转化为行动不止思考更注重成果Manus处理工作与生活中的各类任务在你安心休息的同时一切能够妥善完成因为Manus是闭源的,所以我们无法知道是怎么实现的,这里我们采用github上的OpenManus来了解下整个流程OpenManus地址:https://github.com/FoundationAgents/OpenManus/blob/main/README_zh.md。
2025-11-06 23:41:44
1177
原创 【AI应用探索】-6- MCP&Cursor
MCP(Model Context Protocol)是一种标准化协议,旨在解决AI模型与外部工具交互的"N×M"难题,类似于USB-C的统一接口。文章展示了三种MCP应用方式:1) 使用Cursor中的Cline工具进行文件管理;2) 在SpringAI中集成高德地图MCP服务;3) 直接在Cursor中配置MCP服务器实现地理查询。通过MCP协议,开发者无需编写定制化代码即可快速集成各类工具,显著提升AI应用的开发效率和扩展性。文中详细演示了文件系统操作和地图服务接入的具体实现步骤。
2025-10-30 09:28:47
1091
原创 【AI应用探索】-5- SpringAI实现的西北大学博物馆预约自动AI助手
本文介绍了基于SpringAI框架实现的西北大学博物馆预约AI助手系统。系统采用前后端分离架构,前端使用React框架,后端基于Java17和SpringAI 1.0.3版本构建,接入阿里百炼大模型API。文章详细讲解了环境配置、项目依赖管理和核心代码实现,重点介绍了流式对话接口设计和日志记录功能。通过LoggingAdvisor实现了完整的请求/响应日志记录,便于调试和监控AI交互过程。系统实现了博物馆预约的智能问答功能,并支持跨域访问。
2025-10-30 09:27:29
744
原创 【AI应用探索】-4- Ollama+Qwen本地部署
本文介绍了Ollama+Qwen本地部署的完整流程。首先下载Ollama并更改默认安装路径和模型存储位置,通过设置系统变量实现自定义配置。然后选择适合本地硬件的Qwen3:4b模型,运行ollama命令拉取模型。最后配置本地API服务端点,验证部署效果。文中特别指出1b参数约需1G显存,建议微调任务在服务器执行。整个过程包含详细的命令和截图指引,帮助用户完成本地AI模型的部署和交互。
2025-10-29 09:32:26
723
原创 【AI应用探索】-3- SpringAI
SpringAI作为专为Spring Boot打造的AI框架,相比LangChain4j更契合Spring生态,降低开发者门槛。本文介绍了SpringAI的配置与使用,包括环境搭建、API集成、流式响应及Function Calling功能。通过定义WeatherService工具类,演示了如何实现AI调用外部方法获取天气数据。实践表明,SpringAI简化了AI能力集成,为Spring开发者提供了便捷的原生体验。
2025-10-29 09:30:44
790
原创 【AI应用探索】-2- RAG初步实战
RAG(检索增强生成)是一种结合大语言模型与知识检索的技术,通过“开卷考试”的机制提升AI回答的准确性。其核心流程分为离线准备(知识库构建)和在线生成(检索与回答)两个阶段。离线阶段通过文本切分、向量化存储数据;在线阶段则检索相关文本片段,并融入提示词中供大模型生成答案。关键技术包括文本向量化(将语义转换为高维向量)和相似度计算(如余弦相似度)。RAG有效解决了大模型的幻觉问题,使其能基于最新、专业的知识生成可靠回答。
2025-10-23 18:10:16
910
原创 【AI应用探索】-1- LangChain4j&记忆对话
本文介绍了作者探索LangChain4j框架及AI应用开发的经历。作者基于手头的A10和A6000显卡资源,学习集成大语言模型到Java应用的方法。文章重点展示了LangChain4j作为统一接口的优势,支持包括通义千问、Gemini等主流基座模型。通过具体代码示例,演示了如何快速接入OpenAI和阿里百炼的API,实现了文本对话和文生图功能(如生成"芝士菠萝虾堡"图片)。文章还提到LangChain4j从v0.36.0开始需要JDK17+环境,并分享了阿里云提供的100万Token免费
2025-10-23 18:09:52
840
期末必备西北大学高级软件工程-酒店预订系统-后端开发框架Spring-第二次作业
2024-06-20
期末必备西北大学-高级软件工程
2024-06-20
期末必备西北大学数值分析PPT
2024-06-20
期末必备研究生课程-数值分析笔记
2024-06-20
C#中的指针和内存管理以及垃圾回收PPT
2024-03-28
DrugClip全文翻译
2024-03-26
电气设备数字化测试仪器数据与通信技术规范第1、4、5部分
2023-10-05
AlphaFold2论文及其补充文档
2023-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅