Skip to content

文档生成服务

文档生成服务分成两个主要步骤,首先将需要生成内容的标题设计好提示词, 将其入库.第二步根据用户请求进行数据查询和文档生成.

体系结构

system_structure

工作流程

Step1: 添加提示词

在生成文档之前,必须根据文档的title先添加好对应的提示词以及要执行的SQL语句和后期处理数据的函数,

在执行生成任务时会动态调用相应的SQL语句和数据处理函数将数据整理规范,再整合提示词提交给大模型总结,

添加内容举例如下:

{
    "document" : "交通拥堵情况报告(模版)V3.docx",
    "sequence" : 1,
    "sub_titles" : ["交通流量分析", "日内各小时平均交通流量趋势"],
    "prompt" :{
        "system" : "你是一个专业的交通行业数据分析专家,可以根据用户提供的数据进行总结归纳,洞察数据的趋势、规律、原因,给出有价值的数据分析结论",
        "template" : "以下是几天不相同小时段内车辆经过折多山路口的平均车量数:\n{data}\n",
        "questions": [
            "请分析不同时间段的车流情况、总结数据的分布、规律和趋势",
            "输出结果请控制在200字以内"
        ]
    },
    "generation" : {
        "sql":"SELECT DATE_FORMAT(event_time, '%Y-%m-%d %H:00:00') AS hour, MAX(obj_count) count FROM kl_lm_alarm WHERE event_time BETWEEN '{START}' AND '{END}' AND event_name='车辆数' AND device_name='{POSITION}' GROUP BY hour ORDER BY hour",
        "function" : "average_by_hour",
        "title" : "日内各小时平均交通流量趋势"
    }
}

Step2: 文档生成

  1. 当用户请求生成文档时DocxServer会先创建一个DocxGenerate对象,然后传递给DocxController进行调用. 这是为了不同用户同时请求时保持每一个生成流程的独立性。
  2. DocxGenerate会先创建一个DocxHandler对象对文档结构进行解析,将文档按多级title结构话方便后续操作。
  3. 然后DocxGenerate会从DocxPromptRepository中获取该文档所有title的提示词和SQL语句以及数据整理函数
  4. 接下来DocxGenerate当前title的SQL语句和数据整理函数提交给ParagraphGenerator进行执行
  5. 返回的结果结合提示词一起送进大模型进行总结
  6. 得到大模型的答复以后再将数据送到ParagraphGenerator中进行render生成表格
  7. 把生成的表格和大模型总结文字一起添加到对应的title下面
  8. 循环4-7步直到所有的内容生成完成。最后会把所有数据汇总,结合总结提示词让大模型进行最终总结。
  9. 文档生成好以后保存到文件存储系统FileStore中,将存储路径返回

组件

  • DocxServer: 对外暴露接口服务
  • DocxController: 流程统一入口,隔离内部流程与外部服务接口,可以由Http或Rpc服务同时调用
  • DocxGenerate: 文档生成的总体流程执行调度框架
  • DocxHandler: 文档结构化解析器,对文档按照标题进行结构化拆解
  • UranModelService: 大模型推理统一服务
  • DocxPromptRepository: 提示词和数据处理的CURD接口封装
  • DataBaseRepository: 数据库SQL语句执行接口封装
  • FileStore: 文件存储接口封装

下一步计划(文档改写,建议知识库改造完成后开始)

  • 当前大流程 输入:文档模板+(数据源)+查询sql+用户问题 (考虑意图正确情况)
  • 生成文档提取 提取目标文档格式
  • 数据查询/数据获取 从知识库中获取数据(包含数据库、原始文档)
  • 数据提取 提取知识库关键信息、包含文档、表格、图片等
  • 内容生成 按格式生成文字、图表、图片等信息。
  • 文档校验 结合全文进行内容或格式校验。

参考资料

文档提取 https://luxiangdong.com/2023/10/05/extract/#/%E5%AE%9A%E4%B9%89%E4%BB%8E%E8%A1%A8%E6%A0%BC%E4%B8%AD%E6%8F%90%E5%8F%96%E6%96%87%E6%9C%AC%E7%9A%84%E5%87%BD%E6%95%B0