乐于分享
好东西不私藏

Skill 实战指南八:Word生成 Skill

Skill 实战指南八:Word生成 Skill

一、背景

在灰灰君过往的技术工作中,技术建议书 需求文档结算材料 等 Word 文档的撰写占据了大量时间。这类文档通常具备两个显著特征:格式高度固定内容来源多样化(源自 Excel 清单、历史文档或大模型生成)。

虽然直接使用 Python docx 库可以将数据写入文档,但在构建高可用的 AI Skill 时,我们面临着一个核心架构挑战:如何确保数据源与文档模板的解耦?

  • 传统直连模式的痛点:如果让 Skill 直接从 Excel 读取数据并写入 Word,一旦数据结构变动或源文件格式微调,整个生成逻辑就会崩溃,且难以调试。

  • “中间态”架构的优势:本章节采用的是一种更稳健的工程化思路——“两阶段生成法”

    1. 第一阶段(数据标准化):无论数据来自 Excel 解析还是大模型生成,首先统一输出为一个固定结构的标准 JSON 对象。在这个阶段,完成数据的清洗、层级映射和完整性校验。

    2. 第二阶段(文档渲染):Word 生成 Skill 不再关心数据来源,它只专注于“消费”这个标准 JSON,将其精准地渲染为带有特定样式、页眉页脚和多级标题的 Word 文档。

这种设计不仅实现了数据与表现的彻底分离,还支持“追加模式”:每次新的功能模块生成时,只需产出对应的 JSON 片段,Skill 即可将其无缝拼接到现有文档结构中。这正是实现从“杂乱数据”到“专业文档”自动化闭环的关键所在。

二、Skill封装

整个封装过程依然很简单,让大模型基于已有的两个py脚本,将其中的word处理部分提取出共通功能,封装为一个word生成skill

主要文件说明:

基于上述场景,封装后的skill目录结构如下:

1. main.py

核心实现文件,包含了Word文档生成技能的所有功能实现。

  • 主要功能:

    • 初始化Word文档(支持模板和现有文档)

    • 支持追加模式,向现有文档添加内容

    • 处理多种内容类型(标题、段落、列表、表格、图片)

    • 智能标题去重,避免重复生成相同标题

    • 自动解析标题级别,支持简化格式

    • 保存生成的文档

  • 关键方法:

    • generate_document() : 主入口方法,处理文档生成流程

    • _initialize_document() : 初始化文档对象

    • _add_title() : 添加标题,支持自动级别提取

    • _add_paragraph() : 添加段落内容

    • _add_list() : 添加列表内容

    • _add_table() : 添加表格内容

    • _add_image() : 添加图片内容

    • _add_section() : 添加章节内容

    • _title_exists() : 检查标题是否存在

    • _extract_title_level_and_content() : 从标题文本中提取级别和内容

  • 使用方式:

    • 命令行调用: python main.py(执行测试代码)

    • 代码调用:通过导入WordGenerator类使用

    • 技能调用:通过manifest.yaml定义的输入参数调用

2. manifest.yaml

技能配置文件,定义了技能的基本信息、依赖项、输入和输出参数。

  • 基本信息:

    • 技能名称:word_generator

    • 版本:1.0.0

    • 描述:纯Word文档生成技能,支持模板使用、内容管理、表格生成和图片插入等功能

  • 依赖项:

    • python-docx

  • 输入参数:

    • template_path : 模板文件路径(可选)

    • output_path : 输出文件路径(必填)

    • data : 文档数据,包含标题、段落、表格、图片等(必填)

    • config : 配置选项,如字体、样式等(可选)

    • append : 是否追加到现有文档,默认为false(可选)

  • 输出结果:

    • success : 操作是否成功

    • output_file : 生成的文档文件路径

    • error : 错误信息(如果有)

3. skill.md

技能文档,提供了技能的详细说明、使用方法和注意事项。

  • 功能介绍:

    • 模板使用:可以基于现有Word模板创建文档

    • 内容管理:支持添加标题、段落、列表等内容

    • 表格生成:可以创建和填充表格数据

    • 图片插入:支持插入图片并添加说明

    • 章节管理:可以组织文档结构,添加多级章节

    • 追加模式:支持向现有文档追加内容

    • 标题去重:自动检查并避免重复生成相同的标题

    • 自动级别提取:根据标题编号自动设置正确的标题级别

  • 适用场景:

    • 技术文档生成

    • 需求文档生成

    • 业务报告生成

    • 自动化文档生成

    • 从Excel数据生成Word文档

  • 使用方法:

    • 详细的输入参数说明

    • 输出结果格式说明

    • 代码示例(创建简单文档、包含表格和图片的文档、追加内容、标题去重等)

  • 技术实现:

    • 文档引擎:python-docx

    • 内容处理:支持多种内容类型

    • 标题处理:自动级别提取和去重

    • 追加模式:支持逐步构建文档

    • 异常处理:完善的错误捕获和提示

  • 安装说明:

    • 依赖安装命令:pip install python-docx

  • 故障排除:

    • 依赖错误:确保已安装所有必要的依赖包

    • 文件路径错误:检查文件路径是否正确,确保目录存在

    • 数据格式错误:确保输入数据格式符合要求

    • 权限错误:确保有写入输出目录的权限

三、效果验证

  • 输入如下提示词:

结合word生成skill的实现,输出对应的word文档内容。1、Excel中的一级、二级、三级、四级分别对应word中的二级,三级,四级,五级标题2、二级概述对应标题名称为:概述。三级描述对应标题名称为需求概述。四级信息对应标题名称为功能描述3、使用mermaid生成skill在四级信息下生成子章节时序图并输出对应图片
  • 输入Excel内容如下:

  • 输出

    用户生命周期管理功能为例,输出的目录结构如下:

  • 用户注册与激活章节的输出内容如下:

从截图上看,输出内容已经符合要求。

四、总结

通过上述示例,可以看到已经按照要求输出了对应文档,基本满足要求。后续会根据几个真实的场景,将之前生成的一系列的skill串联起来,真正展示skill的威力。