Skip to content

系统架构

整体设计

本项目采用 FastAPI 构建后端 API,前端 WPS/Word 加载项与后端利用流式 SSE 接口通信,使前端流式显示 LLM 输出的内容,实现无缝的写作辅助体验。

  • 前端:Vue3 + JavaScript 开发,包含 DocxJson 双向转化器模块,能够将带格式的 Word 文档内容与 JSON 格式进行相互转换
  • 后端:Python 语言,利用 LangChain 和 LangGraph 框架实现智能体的设计和协作,用 ChatOpenAI 接口实现 SSE 流式输出和工具调用,利用 PySide6 设计了一个简单的后端服务界面,方便安装加载项和查看终端日志

文档数据结构

生成结构化 Word 文档是本项目的核心。项目中定义的 JSON Schema 格式类似于 Web 开发中的 HTML 和 CSS,将 Word 文章的段落和文本块的样式属性都进行了抽象和结构化,方便智能体理解和生成。

  • paragraphs: word文档段落数组,包含多个run文本块,paragraphs是agent主要修改的对象
    • pStyle: 段落样式ID(如标题1、标题2、正文等)
    • runs: 文本块数组,本项目中定义的文档的最小单位
      • text: 文本内容
      • rStyle: 字符样式ID(如加粗、红色等)
    • paraIndex: 段落索引,智能体可以根据这个索引定位到文档中的具体段落进行读取
    • paraID: 段落唯一标识,智能体可以根据这个标识定位到文档中的具体段落进行修改
  • styles: 样式定义字典,包含所有段落样式和字符样式的定义,智能体生成文档时需要引用这些样式ID来保证文档格式正确

Single Agent Loop 架构

标准的 ReAct 智能体循环架构,智能体在每个循环中根据用户输入和当前文档状态进行思考,选择调用工具或结束任务。

单智能体架构

工具列表:

  • read_document:读取 (startPosition, endPosition) 范围内的文章内容并转化成 JSON 格式回传给智能体
  • generate_document:生成 JSON 格式的文章内容传给前端加载项
  • search_document:查询某种格式或文字信息的段落位置并返回给智能体
  • web_fetch:根据用户输入的网站链接进行抓取获取信息

Multi Agent 架构

多智能体协作框架中设计了一个 Planner Agent 负责编排和调度其他专家智能体的工作流。

多智能体架构

智能体职责
Planner Agent编排和调度其他智能体的工作流
Research Agent联网搜集资料信息
Outline Agent根据资料信息和用户需求生成文章大纲
Writer Agent根据资料信息和用户需求生成文章内容
Reviewer Agent根据资料信息和用户需求对生成的文章进行审阅和修改建议

多智能体模式工作流程

以 WPS 的 多智能体(Multi Agent)模式 为例,当用户请求写一篇长篇小说并绘制插图时,各专家智能体会依次工作:

  1. Planner Agent:编排智能体流程
  2. Research Agent:搜索网文小说,调用文生图
  3. Outline Agent:描述小说大纲
  4. Writer Agent:输出文章内容
  5. Reviewer Agent:回顾文章段落,提出修改意见

多智能体模式特点

  • 优势:更容易生成长文,能够不跑题以及首尾呼应
  • 局限:工具调用能力略差于单智能体

典型工作流模式

模式适用场景流程
纯创作写一篇新文章research → outline → writer → reviewer(可选)
文档修改润色、翻译、扩写writer:直接修改文档
深度调研需要联网搜索research → outline → writer → reviewer(可选)
定向写作基于现有文档写特定章节outline:读取文档,定位章节 → writer:写目标内容

Langsmith 集成

本项目支持使用 Langsmith 进行智能体行为跟踪和分析,方便调试和优化智能体性能。

Langsmith

MCP 服务器支持

本项目支持用户自定义工具的接入,通过配置 MCP 服务器的方式让智能体调用第三方 API 来增强智能体的能力。

支持的 MCP 服务器类型:

  • 远程 MCP 服务器:如高德地图等在线服务
  • 本地 MCP 服务器:本地部署的工具服务
  • Skill 工具:自定义技能工具

示例:以高德地图可视化图表-MCP-Server为例,用户输入"查询长沙未来五天的天气,绘制一个气温折线统计图,写一份天气预报文章"。智能体会调用高德地图 MCP 服务器进行查询长沙最近几天的气温数据,然后智能体会调用可视化图表-MCP-Server 生成一个折线统计图的图片 URL,把这张图片渲染在前端加载项界面中。

基于 Apache License 2.0 开源协议