开源项目 OpenSpec:如何用 RAG + Multi-Agent 生成企业级长文档

基于 RAGFlow + 多 Agent 工作流的专业文档生成平台实现

OpenSpec 是一个企业级专业长文档生成平台,基于 RAG(检索增强生成)+ Multi-Agent 工作流,解决建筑设计、医疗、招投标等领域的长文档自动生成问题。


技术架构

scss 复制代码
┌─────────────────────────────────────────────────────────────┐
│                        前端层 (React)                        │
│                  项目配置 / 章节编辑 / 导出预览                 │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│                      AI Agent 层 (Python)                    │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐       │
│  │  Researcher  │──│   Writer     │──│   Auditor    │       │
│  │   Agent      │  │   Agent      │  │   Agent      │       │
│  └──────────────┘  └──────────────┘  └──────────────┘       │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│                      RAG 知识库层                            │
│              RAGFlow + 向量数据库 (Infinity)                  │
│         国家规范 / 行业标准 / 历史案例 / 模板库               │
└─────────────────────────────────────────────────────────────┘

核心实现

1. RAG 检索流程

python 复制代码
# apps/agent/agents/researcher.py

async def retrieve_context(query: str, project_type: str) -> List[Document]:
    """
    基于项目类型检索相关知识
    """
    # 构建过滤条件
    filters = {
        "doc_type": ["standard", "template", "case"],
        "industry": project_type,
        "status": "active"
    }
    
    # 多路召回:关键词 + 向量 + 结构化查询
    results = await ragflow.search(
        query=query,
        filters=filters,
        top_k=10,
        rerank=True  # 使用重排序模型提升准确性
    )
    
    return results

2. Multi-Agent 工作流

python 复制代码
# apps/agent/workflow/document_generation.py

from langgraph import StateGraph, END

class DocumentState(TypedDict):
    project_info: dict
    outline: List[Chapter]
    current_chapter: int
    chapters_content: Dict[str, str]
    review_comments: List[Comment]

# 定义工作流
workflow = StateGraph(DocumentState)

# 添加节点
workflow.add_node("research", research_agent)      # 检索资料
workflow.add_node("write", writer_agent)           # 生成内容
workflow.add_node("audit", auditor_agent)          # 审核内容
workflow.add_node("revise", revise_agent)          # 修改完善

# 定义边
workflow.add_edge("research", "write")
workflow.add_edge("write", "audit")
workflow.add_conditional_edges(
    "audit",
    lambda state: "revise" if state["review_comments"] else END,
    {"revise": "revise", END: END}
)
workflow.add_edge("revise", "audit")

# 编译执行
app = workflow.compile()

3. 提示词工程

使用 Langfuse 进行提示词版本管理:

python 复制代码
# prompts/chapter_generation.yaml

system: |
  你是一位资深的{industry}领域技术文档撰写专家。
  你的任务是根据提供的参考资料,撰写符合行业规范的技术文档章节。
  
  要求:
  1. 严格基于参考资料,不得编造规范条文
  2. 使用专业术语,符合行业标准表达
  3. 结构清晰,层次分明
  4. 技术参数必须准确

user: |
  项目信息:{project_info}
  章节要求:{chapter_requirement}
  参考资料:
  {retrieved_context}
  
  请生成该章节内容:

4. 前端实时协作编辑

typescript 复制代码
// apps/web/components/ChapterEditor.tsx

import { useWebSocket } from '@/hooks/useWebSocket';
import { DiffEditor } from '@monaco-editor/react';

export function ChapterEditor({ chapterId }: { chapterId: string }) {
  const { content, updateContent, aiSuggestion } = useChapter(chapterId);
  const { isGenerating } = useGenerationStatus();
  
  return (
    <div className="chapter-editor">
      <DiffEditor
        original={content}
        modified={aiSuggestion}
        onAccept={updateContent}
        onReject={() => {}}
      />
      {isGenerating && <GenerationProgress />}
    </div>
  );
}

快速开始

环境要求

组件 版本
Docker >= 20.10
Docker Compose >= 2.0
Node.js >= 18 (开发前端)
Python >= 3.10 (开发 Agent)
Java >= 17 (开发后端)

本地开发

bash 复制代码
# 1. 克隆仓库
git clone https://github.com/zhuzhaoyun/OpenSpec.git
cd OpenSpec

# 2. 配置环境
cp deploy/docker/.env.example deploy/docker/.env
# 编辑 .env,配置以下必填项:
# - RAGFLOW_API_KEY
# - RAGFLOW_BASE_URL  
# - DASHSCOPE_API_KEY (或其他 LLM API Key)

# 3. 启动服务
cd deploy/docker
docker compose up -d

# 4. 访问
open http://localhost

单独开发某个模块

前端开发:

bash 复制代码
cd apps/web
npm install
npm run dev
# http://localhost:5173

Agent 开发:

bash 复制代码
cd apps/agent
pip install -r requirements.txt
uvicorn app:app --reload --port 5000

后端开发:

bash 复制代码
cd apps/backend
mvn spring-boot:run

项目结构

bash 复制代码
OpenSpec/
├── apps/
│   ├── web/              # React + TypeScript 前端
│   ├── agent/            # Python AI Agent 服务
│   └── backend/          # Java Spring Boot 后端
├── deploy/
│   └── docker/           # Docker Compose 部署配置
├── docs/                 # 文档
├── prompts/              # Langfuse 管理的提示词
└── README.md

适用场景

行业 典型文档 核心痛点
建筑设计 施工图设计说明、可研报告 规范引用多、格式严格
汽车维修 维修手册、故障诊断报告 知识分散、更新频繁
医疗 临床试验报告、诊疗指南 合规性强、逻辑严谨
招投标 技术标书、招标文件 模板化高、重复劳动

Roadmap

  • 基础 RAG 检索
  • Multi-Agent 工作流
  • 人机协作编辑
  • PDF/Markdown 导出
  • AutoCAD 插件(企业版)
  • 更多行业模板
  • 团队协作功能
  • 多语言支持

参与贡献

我们欢迎各种形式的贡献:

  • 🐛 提交 Bug 或功能建议
  • 💻 提交 PR 改进代码
  • 📖 完善文档和教程
  • 🌐 翻译多语言版本
  • 💡 分享使用场景和反馈

GitHubgithub.com/zhuzhaoyun/...

有问题欢迎提 Issue 或联系:dlutyaol@qq.com


OpenSpec 是我的第一个开源项目,欢迎 Star ⭐ 支持!

相关推荐
思绪无限23 分钟前
YOLOv5至YOLOv12升级:木材表面缺陷检测系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·目标检测·计算机视觉·木材表面缺陷检测
kishu_iOS&AI23 分钟前
深度学习 —— 损失函数
人工智能·pytorch·python·深度学习·线性回归
好运的阿财26 分钟前
OpenClaw工具拆解之canvas+message
人工智能·python·ai编程·openclaw·openclaw工具
TechubNews31 分钟前
新火集团首席经济学家付鹏演讲——2026 年是 Crypto 加入到 FICC 资产配置框架元年
大数据·人工智能
蒸汽求职1 小时前
跨越 CRUD 内卷:半导体产业链与算力基建下的软件工程新生态
人工智能·科技·面试·职场和发展·软件工程·制造
DeepModel1 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
聊点儿技术1 小时前
LLM数据采集如何突破AI反爬?——用IP数据接口实现进阶
人工智能·数据分析·产品运营·ip·电商·ip地址查询·ip数据接口
小兵张健1 小时前
一场大概率没拿到 offer 的面试,让我更坚定去做喜欢的事
人工智能·面试·程序员
Agent手记1 小时前
制造业数字化升级:生产全流程企业级智能体落地解决方案 —— 基于LLM+超自动化全栈架构的智改数转深度实战
运维·ai·架构·自动化
2501_940041741 小时前
AI创建小游戏指令词
人工智能·游戏·prompt