开源:基于 LangGraph + RAGFlow 的三智能体长文档生成平台 OpenSpec

开源:基于 LangGraph + RAGFlow 的三智能体长文档生成平台 OpenSpec

项目简介

OpenSpec 是一个企业级 AI 专业长文档生成平台,采用 RAG + 三智能体工作流架构,适用于建筑设计、招投标、汽车维修、医疗等需要生成结构化长文档的行业场景。

要解决的问题

在建筑设计、招投标等行业,从业者需要频繁产出几十页甚至上百页的专业文档。这些文档必须引用行业标准、前后数据一致、格式符合模板要求。

直接用 ChatGPT / 通义千问等通用大模型生成存在以下问题:

  1. 上下文丢失:写到第 30 页时前面的数据已经"忘了",前后矛盾
  2. 幻觉严重:编造不存在的国标编号,张冠李戴引用条文
  3. 无审核机制:单个 AI 自己写自己审,发现不了自身错误
  4. 无知识库:不知道企业用的哪版规范、哪些设计参数

系统架构

整体架构

 ┌─────────────────────────────┐ │ Knowledge Base (RAG) │ │ Standards / Cases / Docs │ └──┬────────────┬────────────┬─┘ │ │ │ query on query on query on demand demand demand │ │ │ ┌────────┐ ┌──────────▼─┐ ┌─────▼─────┐ ┌▼──────────┐ ┌────────┐ │ Input │──▶│ Researcher │──▶│ Generator │──▶│ Auditor │──▶│ Export │ │ │ │ │ │ │ │ │ │ │ └────────┘ └────────────┘ └─────▲─────┘ └─────┬─────┘ └────────┘ │ │ └── revise ──────┘ 

三智能体工作流

基于 LangGraph 构建有向图状态机,三个智能体各司其职,每个智能体在发现上下文不足时自主查询知识库:

1. Researcher(检索智能体)

从知识库检索规范条文、历史案例、参考资料。

researcher_tools =[retrieve_case, retrieve_standard] researcher_llm = llm.bind_tools(researcher_tools)

循环控制:

  • MAX_RESEARCH_LOOPS = 3(硬性上限)
  • MIN_CONTENT_THRESHOLD = 1000(字符最小阈值)
  • 支持提前退出:内容充足 / 连续空结果 / LLM 判断资料足够

执行策略为两步式:先流式输出推理链(思考阶段),再生成 Tool Calls 调用检索工具(行动阶段)。

2. Generator(生成智能体)

基于检索上下文逐章生成内容。

核心能力:

  • 跨章节关联:提取已生成章节 extract_previous_chapters(),做参数一致性检查
  • 关联章节分析:find_related_chapters() 确保引用关系正确
  • 智能 Token 计数:calculate_available_tokens() 精确控制篇幅
  • 后处理:检测 XX、___ 等占位符替换为 [待填写]

上下文来源:从 Researcher 产出的 ToolMessage 中提取检索结果(最多保留 30 条)。

3. Auditor(校验智能体)

审核生成内容的质量。

auditor_tools =[retrieve_standard, retrieve_case] auditor_llm = llm.bind_tools(auditor_tools)

五维度校验:

维度说明
逻辑一致性开头声明数量与表格数据是否匹配
参数合理性数值是否在规范允许范围内
规范符合性国标编号是否正确引用
内容完整性必要章节和数据是否完整
格式规范性符号、单位是否正确

校验结果:pass → 结束;revise → 带修改意见打回 Generator 重写。

控制参数:MAX_AUDIT_LOOPS = 1MAX_AUDITOR_TOOL_CALLS = 5

RAG 知识库

基于 RAGFlow 实现,提供两类检索工具:

@tooldefretrieve_case(query:str)->str:"""从知识库检索历史案例"""return _retrieve_from_kb(query, CASE_KB_IDS,"案例库")@tooldefretrieve_standard(query:str)->str:"""从知识库检索行业规范"""return _retrieve_from_kb(query, STAND_KB_IDS,"规范库")

通用检索函数:

def_retrieve_from_kb(query, kb_ids, kb_name): rag_object = RAGFlow(api_key=RAGFLOW_API_KEY, base_url=RAGFLOW_BASE_URL) chunks = rag_object.retrieve( question=query, dataset_ids=kb_ids, page=1, page_size=10, similarity_threshold=0.55)# 返回格式:【来源: XXX | 相关度: 0.95】内容...

支持动态知识库:set_kb_ids() 可在基础库上追加企业特定知识库,retrieve_from_project_kb() 支持按项目 ID 查询。

Prompt 管理

所有 Prompt 通过 Langfuse 统一管理:

prompt_manager = PromptManager() researcher_prompt = prompt_manager.get_prompt("langchain_researcher") generator_prompt = prompt_manager.get_prompt("construction_agent_system") auditor_prompt = prompt_manager.get_prompt("langchain_auditor")

支持在线调整 Prompt,无需改代码重新部署。

API 接口

# 流式生成(单章节,支持审核) POST /chat/stream # 参数:message, project_id, template, enable_audit, document_id, chapter_name...# 批量生成(多章节,非流式) POST /chat/batch # 简化流水线:Researcher → Generate,无 Auditor

技术栈

层级技术说明
前端Vue 3 + TypeScript + ViteSPA
后端Spring Boot 3 + Java 17RESTful API
AI 工作流Python + LangGraph + LangChain状态机式多智能体编排
知识检索RAGFlow向量检索,支持多知识库
Prompt & 可观测性LangfusePrompt 管理 + LLM 调用追踪 + 成本分析
数据库PostgreSQL项目和文档数据
部署Docker Compose一键部署全部服务

项目结构

apps/ ├── web/ # Vue 3 前端 ├── backend/ # Spring Boot 后端 └── agent/ # AI Agent(核心) ├── service/workflow/ │ ├── construction_agent.py # 完整流程(Router + 三智能体) │ ├── batch_construction_agent.py # 批量生成(无 Auditor) │ └── rag_graph.py # RAG 简化流程 ├── service/tools/ │ └── construction_tools.py # RAG 检索工具 └── api/ └── workflow_api.py # API 端点 

应用场景

领域知识库内容生成文档
建筑设计国标/地方标准、历史设计说明施工图设计说明、可研报告
招投标历史方案、施工规范、企业资质投标技术方案
汽车维修维修手册、故障案例、配件标准维修技术手册
医疗健康临床指南、诊疗规范临床试验报告

快速部署

git clone https://github.com/zhuzhaoyun/OpenSpec.git cd OpenSpec cp deploy/docker/.env.example deploy/docker/.env # 编辑 .env,填入以下必要配置:# RAGFLOW_API_KEY, RAGFLOW_BASE_URL, DASHSCOPE_API_KEYcd deploy/docker docker compose up -d

关键环境变量:

变量说明必填
RAGFLOW_API_KEYRAGFlow API 密钥
RAGFLOW_BASE_URLRAGFlow 服务地址
DASHSCOPE_API_KEYLLM API 密钥(默认通义千问)
LANGFUSE_SECRET_KEYLangfuse 私钥
LANGFUSE_PUBLIC_KEYLangfuse 公钥

启动后访问 http://localhost 即可使用。


GitHub:github.com/zhuzhaoyun/OpenSpec

欢迎 Star / Fork / PR / Issue,有问题评论区交流。

Read more

Git三剑客:程序员必备的“利器”

Git三剑客:程序员必备的“利器”

作为程序员,我们的编程能力就像内功,而工具就像手中的武器。熟练使用 Git,就好比掌握了一把锋利的剑。在团队协作开发或开源社区参与中,Git 都是不可或缺的技能。只有熟练掌握 Git 及其相关工具,才能更好地彰显我们的内功,也就是编程能力。 今天,我们就来全面解析“Git三剑客”,并结合实践分享一些实用经验,让你从入门到精通都有所收获。 一、Git三剑客概述 “Git三剑客”通常指三种在软件开发和版本控制领域紧密相关、广泛使用的工具或平台: 1. Git 2. GitHub GitLab 它们各自功能独特,但共同为开发者提供强大的版本控制、代码管理和协作支持。 可以把 Git 看作是剑的刃,GitHub 是剑的外鞘,而 GitLab 则是剑与盾的结合,为企业提供完整的开发防护。 二、Git Git 是一个开源的分布式版本控制系统,由 Linux 创始人 Linus Torvalds

By Ne0inhk
remote: Invalid username or token. Password authentication is not supported for Git operations

remote: Invalid username or token. Password authentication is not supported for Git operations

remote: Invalid username or token. Password authentication is not supported for Git operations. fatal: Authentication failed for… 该文章解决在新系统中进行 git 操作时,第一次的登陆问题,由于Github不再支持使用账号密码进行 Git https 推送,可以采用 ssh 密钥的方式进行长期的推送 1.生成SSH key ssh-keygen -t ed25519 -C "[email protected]" 这里的-t 表示要生成的密钥类型,这里生成的类型为ed25519,是一种椭圆曲线算法,比传统的RSA更加安全、密钥更短,并且速度更快 2.将

By Ne0inhk
qData 数据中台开源版 1.1.2 版本更新公告:新增 Apache Doris 数据源全面支持,稽查规则与转换组件持续完善

qData 数据中台开源版 1.1.2 版本更新公告:新增 Apache Doris 数据源全面支持,稽查规则与转换组件持续完善

在数据中台的实际使用过程中,我们持续关注社区用户的真实反馈与使用场景。 本次 qData 数据中台开源版 1.1.2 更新,围绕 数据源扩展、数据质量能力增强、数据集成易用性提升 三个方向进行了集中优化,并修复了社区中反馈的若干问题。 下面为大家带来本次版本的详细更新说明 👇 一、更新背景 1️⃣ Apache Doris 使用频率持续上升 在社区和用户实践中,我们发现 Apache Doris 作为高性能分析型数据库,被广泛应用于实时数仓与分析场景。 因此,qData 开源版在本次版本中正式将 Apache Doris 纳入核心数据源体系,并实现多模块全面支持。 2️⃣ 数据稽查规则持续扩展 随着数据质量治理场景的不断丰富,原有稽查规则已无法覆盖全部业务需求。 本次更新对稽查规则进行了扩展,增强了对时间逻辑、字段完整性等典型场景的支持。 3️⃣ 数据集成转换能力进一步增强 在数据集成任务中,用户对“灵活处理数据”的需求越来越高。 因此,1.

By Ne0inhk

VR视频转换神器:解锁360度全景视频的无限可能

还在为传统视频的固定视角感到束缚吗?想要像导演一样自由掌控每一个观看角度?这款VR视频转换工具将彻底颠覆你的观影体验,让你从被动观看者变成主动探索者,真正实现"我的视角我做主"! 【免费下载链接】VR-reversalVR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirrors/vr/VR-reversal 痛点解析:为什么你需要VR视频转换工具? 传统视频就像透过一扇固定的窗户看世界,你只能看到创作者想让你看到的内容。而VR视频则像站在房间中央,可以360度环顾四周,但设备限制让你无法自由分享这种沉浸式体验。 这就是VR视频转换工具的价值所在——它打破了设备壁垒,让你能够在普通屏幕上体验自由视角的乐趣,

By Ne0inhk