开源项目 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 ⭐ 支持!

相关推荐
CoderIsArt1 分钟前
深度学习编译器中的TVM 与MLR
人工智能·深度学习
wenzhangli72 分钟前
OoderAgent Apex:基于Skills化架构的热插拔启动机制
人工智能·架构
爱睡懒觉的焦糖玛奇朵6 分钟前
【工业级落地算法之人员摔倒检测算法详解】
人工智能·python·深度学习·神经网络·算法·yolo·目标检测
一水鉴天9 分钟前
从 整体设计的三个问题 到 中文能藏英文所限显 之1 20260303 codebuddy
人工智能
~央千澈~14 分钟前
《2026鸿蒙NEXT纯血开发与AI辅助》第三章:DevEco Studio 整体功能使用详解以及各个助手以及核心使用方法-卓伊凡
人工智能·鸿蒙开发·鸿蒙next
Learn Beyond Limits15 分钟前
长短期记忆网络|LSTM(Long Short-Term Memory)
人工智能·rnn·深度学习·神经网络·自然语言处理·nlp·lstm
昨夜见军贴061619 分钟前
AI报告文档审核助力本地化升级:IACheck如何支撑食品加工行业数据安全与质量协同发展
大数据·人工智能
大佐不会说日语~29 分钟前
Spring AI Alibaba 模块化重构:从单体到分层架构实践
人工智能·spring·重构
笨笨饿34 分钟前
26_为什么工程上必须使用拉普拉斯变换
c语言·开发语言·人工智能·嵌入式硬件·机器学习·编辑器·概率论
Rabbit_QL38 分钟前
sklearn Pipeline:特征工程和建模流水线
人工智能·python·sklearn